summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/cooker.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/cooker.py')
-rw-r--r--bitbake/lib/bb/cooker.py34
1 files changed, 31 insertions, 3 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 1fda40dd41..946ba9ca06 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -609,7 +609,14 @@ class BBCooker:
609 k2 = k.split(":do_") 609 k2 = k.split(":do_")
610 k = k2[0] 610 k = k2[0]
611 ktask = k2[1] 611 ktask = k2[1]
612 taskdata[mc].add_provider(localdata[mc], self.recipecaches[mc], k) 612 if mc:
613 # Provider might be from another mc
614 for mcavailable in self.multiconfigs:
615 # The first element is empty
616 if mcavailable:
617 taskdata[mcavailable].add_provider(localdata[mcavailable], self.recipecaches[mcavailable], k)
618 else:
619 taskdata[mc].add_provider(localdata[mc], self.recipecaches[mc], k)
613 current += 1 620 current += 1
614 if not ktask.startswith("do_"): 621 if not ktask.startswith("do_"):
615 ktask = "do_%s" % ktask 622 ktask = "do_%s" % ktask
@@ -620,6 +627,27 @@ class BBCooker:
620 runlist.append([mc, k, ktask, fn]) 627 runlist.append([mc, k, ktask, fn])
621 bb.event.fire(bb.event.TreeDataPreparationProgress(current, len(fulltargetlist)), self.data) 628 bb.event.fire(bb.event.TreeDataPreparationProgress(current, len(fulltargetlist)), self.data)
622 629
630 mcdeps = taskdata[mc].get_mcdepends()
631 # No need to do check providers if there are no mcdeps or not an mc build
632 if mcdeps and mc:
633 # Make sure we can provide the multiconfig dependency
634 seen = set()
635 new = True
636 while new:
637 new = False
638 for mc in self.multiconfigs:
639 for k in mcdeps:
640 if k in seen:
641 continue
642 l = k.split(':')
643 depmc = l[2]
644 if depmc not in self.multiconfigs:
645 bb.fatal("Multiconfig dependency %s depends on nonexistent mc configuration %s" % (k,depmc))
646 else:
647 logger.debug(1, "Adding providers for multiconfig dependency %s" % l[3])
648 taskdata[depmc].add_provider(localdata[depmc], self.recipecaches[depmc], l[3])
649 seen.add(k)
650 new = True
623 for mc in self.multiconfigs: 651 for mc in self.multiconfigs:
624 taskdata[mc].add_unresolved(localdata[mc], self.recipecaches[mc]) 652 taskdata[mc].add_unresolved(localdata[mc], self.recipecaches[mc])
625 653
@@ -706,8 +734,8 @@ class BBCooker:
706 if not dotname in depend_tree["tdepends"]: 734 if not dotname in depend_tree["tdepends"]:
707 depend_tree["tdepends"][dotname] = [] 735 depend_tree["tdepends"][dotname] = []
708 for dep in rq.rqdata.runtaskentries[tid].depends: 736 for dep in rq.rqdata.runtaskentries[tid].depends:
709 (depmc, depfn, deptaskname, deptaskfn) = bb.runqueue.split_tid_mcfn(dep) 737 (depmc, depfn, _, deptaskfn) = bb.runqueue.split_tid_mcfn(dep)
710 deppn = self.recipecaches[mc].pkg_fn[deptaskfn] 738 deppn = self.recipecaches[depmc].pkg_fn[deptaskfn]
711 depend_tree["tdepends"][dotname].append("%s.%s" % (deppn, bb.runqueue.taskname_from_tid(dep))) 739 depend_tree["tdepends"][dotname].append("%s.%s" % (deppn, bb.runqueue.taskname_from_tid(dep)))
712 if taskfn not in seen_fns: 740 if taskfn not in seen_fns:
713 seen_fns.append(taskfn) 741 seen_fns.append(taskfn)