bitbake: runqueue: Fix race against tasks sharing stamp files
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 31 Jan 2014 11:17:34 +0000 (11:17 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Fri, 31 Jan 2014 15:52:17 +0000 (15:52 +0000)
Shared work directories work by assuming bitbake will not run
more than one task with a specific stamp name. Recent runqueue optimisations
accidentally broke this meaning there could be races. This fixes the code.

(Bitbake rev: b1628b1a260ddf43fc9985535b1ddcfcebbb1e5b)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
bitbake/lib/bb/runqueue.py

index 0475ee2..91b1f07 100644 (file)
@@ -125,7 +125,10 @@ class RunQueueScheduler(object):
         if not self.buildable:
             return None
         if len(self.buildable) == 1:
-            return self.buildable[0]
+            taskid = self.buildable[0]
+            stamp = self.stamps[taskid]
+            if stamp not in self.rq.build_stamps.itervalues():
+                return taskid
 
         if not self.rev_prio_map:
             self.rev_prio_map = range(self.numTasks)