summaryrefslogtreecommitdiffstats
path: root/lib/bb/runqueue.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/bb/runqueue.py')
-rw-r--r--lib/bb/runqueue.py11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/bb/runqueue.py b/lib/bb/runqueue.py
index dcf90044a..fce08eefa 100644
--- a/lib/bb/runqueue.py
+++ b/lib/bb/runqueue.py
@@ -382,6 +382,7 @@ class RunQueueData:
runq_build = []
recursivetasks = {}
+ recursiveitasks = {}
recursivetasksselfref = set()
taskData = self.taskData
@@ -504,6 +505,12 @@ class RunQueueData:
if taskData.tasks_name[task] in tasknames:
recursivetasksselfref.add(task)
+ if 'recideptask' in task_deps and taskData.tasks_name[task] in task_deps['recideptask']:
+ recursiveitasks[task] = []
+ for t in task_deps['recideptask'][taskData.tasks_name[task]].split():
+ newdep = taskData.gettask_id_fromfnid(fnid, t)
+ recursiveitasks[task].append(newdep)
+
self.runq_fnid.append(taskData.tasks_fnid[task])
self.runq_task.append(taskData.tasks_name[task])
self.runq_depends.append(depends)
@@ -536,6 +543,10 @@ class RunQueueData:
generate_recdeps(n)
generate_recdeps(task)
+ if task in recursiveitasks:
+ for dep in recursiveitasks[task]:
+ generate_recdeps(dep)
+
# Remove circular references so that do_a[recrdeptask] = "do_a do_b" can work
for task in recursivetasks:
extradeps[task].difference_update(recursivetasksselfref)