summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb')
-rw-r--r--bitbake/lib/bb/build.py1
-rw-r--r--bitbake/lib/bb/runqueue.py11
2 files changed, 12 insertions, 0 deletions
diff --git a/bitbake/lib/bb/build.py b/bitbake/lib/bb/build.py
index bfc176d4bb..70d7165fcf 100644
--- a/bitbake/lib/bb/build.py
+++ b/bitbake/lib/bb/build.py
@@ -602,6 +602,7 @@ def add_tasks(tasklist, d):
602 getTask('deptask') 602 getTask('deptask')
603 getTask('rdeptask') 603 getTask('rdeptask')
604 getTask('recrdeptask') 604 getTask('recrdeptask')
605 getTask('recideptask')
605 getTask('nostamp') 606 getTask('nostamp')
606 getTask('fakeroot') 607 getTask('fakeroot')
607 getTask('noexec') 608 getTask('noexec')
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index dcf90044a2..fce08eefa6 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -382,6 +382,7 @@ class RunQueueData:
382 382
383 runq_build = [] 383 runq_build = []
384 recursivetasks = {} 384 recursivetasks = {}
385 recursiveitasks = {}
385 recursivetasksselfref = set() 386 recursivetasksselfref = set()
386 387
387 taskData = self.taskData 388 taskData = self.taskData
@@ -504,6 +505,12 @@ class RunQueueData:
504 if taskData.tasks_name[task] in tasknames: 505 if taskData.tasks_name[task] in tasknames:
505 recursivetasksselfref.add(task) 506 recursivetasksselfref.add(task)
506 507
508 if 'recideptask' in task_deps and taskData.tasks_name[task] in task_deps['recideptask']:
509 recursiveitasks[task] = []
510 for t in task_deps['recideptask'][taskData.tasks_name[task]].split():
511 newdep = taskData.gettask_id_fromfnid(fnid, t)
512 recursiveitasks[task].append(newdep)
513
507 self.runq_fnid.append(taskData.tasks_fnid[task]) 514 self.runq_fnid.append(taskData.tasks_fnid[task])
508 self.runq_task.append(taskData.tasks_name[task]) 515 self.runq_task.append(taskData.tasks_name[task])
509 self.runq_depends.append(depends) 516 self.runq_depends.append(depends)
@@ -536,6 +543,10 @@ class RunQueueData:
536 generate_recdeps(n) 543 generate_recdeps(n)
537 generate_recdeps(task) 544 generate_recdeps(task)
538 545
546 if task in recursiveitasks:
547 for dep in recursiveitasks[task]:
548 generate_recdeps(dep)
549
539 # Remove circular references so that do_a[recrdeptask] = "do_a do_b" can work 550 # Remove circular references so that do_a[recrdeptask] = "do_a do_b" can work
540 for task in recursivetasks: 551 for task in recursivetasks:
541 extradeps[task].difference_update(recursivetasksselfref) 552 extradeps[task].difference_update(recursivetasksselfref)