Skip to contentSkip to conversation

runqueue: Fix sstate task dependency problems

PATCH In review Richard Purdie 2 participants 2 messages Mar 31, 2014 – Apr 1, 2014

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 runqueue: Fix sstate task dependency problems

If a setscene task has [depends], its possible they may still get executed out of order. The issue is that the dependencies are set to set() for all tasks involved. This patch adds back in explict dependencies within these chains to avoid the setscene task failures.

[YOCTO #6069]

---

bitbake/lib/bb/runqueue.py +4 -0
index 42b6c48..1a19677 100644
@@ -1757,6 +1757,10 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
                     # Have to zero this to avoid circular dependencies
                     sq_revdeps_squash[self.rqdata.runq_setscene.index(taskid)] = set()
 
+        for task in self.sq_harddeps:
+             for dep in self.sq_harddeps[task]:
+                 sq_revdeps_squash[dep].add(task)
+
         #for task in xrange(len(sq_revdeps_squash)):
         #    realtask = self.rqdata.runq_setscene[task]
         #    bb.warn("Task %s: %s_setscene is %s " % (task, self.rqdata.get_user_idstring(realtask) , sq_revdeps_squash[task]))
Tested-by on v1 1/1
#1 lore raw

Cool, it works well now.

// Robert

Quoted 26 lines · Richard Purdie

If a setscene task has [depends], its possible they may still get executed out of order. The issue is that the dependencies are set to set() for all tasks involved. This patch adds back in explict dependencies within these chains to avoid the setscene task failures.

[YOCTO #6069]

---

bitbake/lib/bb/runqueue.py +4 -0
index 42b6c48..1a19677 100644
@@ -1757,6 +1757,10 @@ class RunQueueExecuteScenequeue(RunQueueExecute):
                      # Have to zero this to avoid circular dependencies
                      sq_revdeps_squash[self.rqdata.runq_setscene.index(taskid)] = set()
 
+        for task in self.sq_harddeps:
+             for dep in self.sq_harddeps[task]:
+                 sq_revdeps_squash[dep].add(task)
+
          #for task in xrange(len(sq_revdeps_squash)):
          #    realtask = self.rqdata.runq_setscene[task]
          #    bb.warn("Task %s: %s_setscene is %s " % (task, self.rqdata.get_user_idstring(realtask) , sq_revdeps_squash[task]))