summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/runqueue.py
diff options
context:
space:
mode:
authorAlejandro Enedino Hernandez Samaniego <alejandro.enedino.hernandez-samaniego@xilinx.com>2018-07-25 09:01:01 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2018-08-01 10:07:22 +0100
commitb8730f68d22b9c1ebd012ffd7aedccd22cceb0da (patch)
tree18dcab42041ff11a5c554e1bc798f9df0fc158fc /bitbake/lib/bb/runqueue.py
parent7df8a4f834e059e5beddc9f7bedec4f4a5a668d3 (diff)
downloadpoky-b8730f68d22b9c1ebd012ffd7aedccd22cceb0da.tar.gz
bitbake: bitbake: Add support for multiconfig dependencies
This patch adds the capability for tasks from different multiconfigs to depend on one another. These dependencies can be enabled using the following format: task[mcdepends] = "multiconfig:FROM-MC:TO-MC:PN:task-to-depend-on" For the sake of simplicity consider the following example: Assuming we have set up multiconfig builds, one for qemux86 and one for qemuarm, named x86 and arm respectively. Adding the following line to an image recipe (core-image-sato): do_image[mcdepends] = "multiconfig:x86:arm:core-image-minimal:do_rootfs" Would state that core-image-sato:do_image from x86 will depend on core-image-minimal:do_rootfs from arm so it can be executed. This patch makes modifications to: - cooker: To glue both multiconfigs in one place and make sure the dependencies can be provided. - taskdata: To parse and add a new kind of dependency (mcdepends) to the taskdata object. - runqueue: To differentiate tasks from different multiconfigs, add the specified dependencies to the corresponding tasks, and create a working runqueue that contains tasks from both multiconfigs. - siggen: To avoid looking for tasks from different multiconfigs on objects where they dont belong. The taskdata objects are still not aware of the concept of multiconfig, so each object doesnt know which multiconfig its building, hence why the mcdepends are added to all taskdata objects equally (we really dont expect many of these), but the actual dependencies are added only to the required tasks by the runqueue. (Bitbake rev: da8cb8633504bdc815bdcefc538340b9bce5065d) Signed-off-by: Alejandro Enedino Hernandez Samaniego <alejandr@xilinx.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/runqueue.py')
-rw-r--r--bitbake/lib/bb/runqueue.py21
1 files changed, 19 insertions, 2 deletions
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index ba9bebebcf..a43c9983a1 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -602,6 +602,19 @@ class RunQueueData:
602 if t in taskData[mc].taskentries: 602 if t in taskData[mc].taskentries:
603 depends.add(t) 603 depends.add(t)
604 604
605 def add_mc_dependencies(mc, tid):
606 mcdeps = taskData[mc].get_mcdepends()
607 for dep in mcdeps:
608 mcdependency = dep.split(':')
609 pn = mcdependency[3]
610 frommc = mcdependency[1]
611 mcdep = mcdependency[2]
612 deptask = mcdependency[4]
613 if mc == frommc:
614 fn = taskData[mcdep].build_targets[pn][0]
615 newdep = '%s:%s' % (fn,deptask)
616 taskData[mc].taskentries[tid].tdepends.append(newdep)
617
605 for mc in taskData: 618 for mc in taskData:
606 for tid in taskData[mc].taskentries: 619 for tid in taskData[mc].taskentries:
607 620
@@ -618,12 +631,16 @@ class RunQueueData:
618 if fn in taskData[mc].failed_fns: 631 if fn in taskData[mc].failed_fns:
619 continue 632 continue
620 633
634 # We add multiconfig dependencies before processing internal task deps (tdepends)
635 if 'mcdepends' in task_deps and taskname in task_deps['mcdepends']:
636 add_mc_dependencies(mc, tid)
637
621 # Resolve task internal dependencies 638 # Resolve task internal dependencies
622 # 639 #
623 # e.g. addtask before X after Y 640 # e.g. addtask before X after Y
624 for t in taskData[mc].taskentries[tid].tdepends: 641 for t in taskData[mc].taskentries[tid].tdepends:
625 (_, depfn, deptaskname, _) = split_tid_mcfn(t) 642 (depmc, depfn, deptaskname, _) = split_tid_mcfn(t)
626 depends.add(build_tid(mc, depfn, deptaskname)) 643 depends.add(build_tid(depmc, depfn, deptaskname))
627 644
628 # Resolve 'deptask' dependencies 645 # Resolve 'deptask' dependencies
629 # 646 #