diff options
-rw-r--r-- | lib/bb/runqueue.py | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py index f457ec21e..212d297af 100644 --- a/lib/bb/runqueue.py +++ b/lib/bb/runqueue.py @@ -510,7 +510,7 @@ class RunQueueData: # We need to do this separately since we need all of self.runq_depends to be complete before this is processed extradeps = {} for task in recursivetasks: - extradeps[task] = set() + extradeps[task] = set(self.runq_depends[task]) tasknames = recursivetasks[task] seendeps = set() seenfnid = [] @@ -527,10 +527,15 @@ class RunQueueData: generate_recdeps(n) generate_recdeps(task) + # Remove circular references so that do_a[recrdeptask] = "do_a do_b" can work + recursivetaskset = set(recursivetasks.keys()) + for task in recursivetasks: + extradeps[task].difference_update(recursivetaskset) + for task in xrange(len(taskData.tasks_name)): # Add in extra dependencies if task in extradeps: - self.runq_depends[task].update(extradeps[task]) + self.runq_depends[task] = extradeps[task] # Remove all self references if task in self.runq_depends[task]: logger.debug(2, "Task %s (%s %s) contains self reference! %s", task, taskData.fn_index[taskData.tasks_fnid[task]], taskData.tasks_name[task], self.runq_depends[task]) |