summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/cooker.py51
1 files changed, 31 insertions, 20 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 16681ba244..8e32af30e4 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -620,27 +620,38 @@ class BBCooker:
620 runlist.append([mc, k, ktask, fn]) 620 runlist.append([mc, k, ktask, fn])
621 bb.event.fire(bb.event.TreeDataPreparationProgress(current, len(fulltargetlist)), self.data) 621 bb.event.fire(bb.event.TreeDataPreparationProgress(current, len(fulltargetlist)), self.data)
622 622
623 mcdeps = taskdata[mc].get_mcdepends() 623
624 # No need to do check providers if there are no mcdeps or not an mc build 624 # No need to do check providers if there are no mcdeps or not an mc build
625 if mcdeps and mc: 625 if mc:
626 # Make sure we can provide the multiconfig dependency 626 # Add unresolved first, so we can get multiconfig indirect dependencies on time
627 seen = set() 627 for mcavailable in self.multiconfigs:
628 new = True 628 # The first element is empty
629 while new: 629 if mcavailable:
630 new = False 630 taskdata[mcavailable].add_unresolved(localdata[mcavailable], self.recipecaches[mcavailable])
631 for mc in self.multiconfigs: 631
632 for k in mcdeps: 632
633 if k in seen: 633 mcdeps = taskdata[mc].get_mcdepends()
634 continue 634
635 l = k.split(':') 635 if mcdeps:
636 depmc = l[2] 636 # Make sure we can provide the multiconfig dependency
637 if depmc not in self.multiconfigs: 637 seen = set()
638 bb.fatal("Multiconfig dependency %s depends on nonexistent mc configuration %s" % (k,depmc)) 638 new = True
639 else: 639 while new:
640 logger.debug(1, "Adding providers for multiconfig dependency %s" % l[3]) 640 new = False
641 taskdata[depmc].add_provider(localdata[depmc], self.recipecaches[depmc], l[3]) 641 for mc in self.multiconfigs:
642 seen.add(k) 642 for k in mcdeps:
643 new = True 643 if k in seen:
644 continue
645 l = k.split(':')
646 depmc = l[2]
647 if depmc not in self.multiconfigs:
648 bb.fatal("Multiconfig dependency %s depends on nonexistent mc configuration %s" % (k,depmc))
649 else:
650 logger.debug(1, "Adding providers for multiconfig dependency %s" % l[3])
651 taskdata[depmc].add_provider(localdata[depmc], self.recipecaches[depmc], l[3])
652 seen.add(k)
653 new = True
654
644 for mc in self.multiconfigs: 655 for mc in self.multiconfigs:
645 taskdata[mc].add_unresolved(localdata[mc], self.recipecaches[mc]) 656 taskdata[mc].add_unresolved(localdata[mc], self.recipecaches[mc])
646 657