summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/cooker.py
diff options
context:
space:
mode:
authorChris Laplante <chris.laplante@agilent.com>2025-01-07 16:54:03 -0500
committerSteve Sakoman <steve@sakoman.com>2025-01-24 07:59:38 -0800
commit7aa8128bf1744dc0dd4c68065d19e12c86443c46 (patch)
tree13a67d6420ee51cfbb759accbc5f6d745fcfa66a /bitbake/lib/bb/cooker.py
parentc1ed07ecde3eea6dee3f7f0c7862ca85858e840d (diff)
downloadpoky-7aa8128bf1744dc0dd4c68065d19e12c86443c46.tar.gz
bitbake: cooker: Make cooker 'skiplist' per-multiconfig/mc
Previously, the cooker skiplist was shared across multiconfigs (including default ''). If you had a recipe that was incompatible with several multiconfigs for different reasons, then the displayed reason (i.e. the "ERROR: Nothing PROVIDES" and "* was skipped" messages) might vary across invocations of bitbake. This was caused by the random order in which recipes are parsed under different multiconfig contexts, with each skip reason overwriting the previously assigned reason. I hit this specificially when using COMPATIBLE_MACHINE, but COMPATIBLE_HOST (or anything using bb.parse.SkipRecipe) would have done it too. (Bitbake rev: 7dde14582bfd104c6da26e3f5ecf2ef37a1494ce) Signed-off-by: Chris Laplante <chris.laplante@agilent.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Signed-off-by: Steve Sakoman <steve@sakoman.com>
Diffstat (limited to 'bitbake/lib/bb/cooker.py')
-rw-r--r--bitbake/lib/bb/cooker.py11
1 files changed, 6 insertions, 5 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index 1cb3e189f4..6fce19b464 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/lib/bb/cooker.py
@@ -134,7 +134,8 @@ class BBCooker:
134 self.baseconfig_valid = False 134 self.baseconfig_valid = False
135 self.parsecache_valid = False 135 self.parsecache_valid = False
136 self.eventlog = None 136 self.eventlog = None
137 self.skiplist = {} 137 # The skiplists, one per multiconfig
138 self.skiplist_by_mc = defaultdict(dict)
138 self.featureset = CookerFeatures() 139 self.featureset = CookerFeatures()
139 if featureSet: 140 if featureSet:
140 for f in featureSet: 141 for f in featureSet:
@@ -612,8 +613,8 @@ class BBCooker:
612 localdata = {} 613 localdata = {}
613 614
614 for mc in self.multiconfigs: 615 for mc in self.multiconfigs:
615 taskdata[mc] = bb.taskdata.TaskData(halt, skiplist=self.skiplist, allowincomplete=allowincomplete) 616 taskdata[mc] = bb.taskdata.TaskData(halt, skiplist=self.skiplist_by_mc[mc], allowincomplete=allowincomplete)
616 localdata[mc] = data.createCopy(self.databuilder.mcdata[mc]) 617 localdata[mc] = bb.data.createCopy(self.databuilder.mcdata[mc])
617 bb.data.expandKeys(localdata[mc]) 618 bb.data.expandKeys(localdata[mc])
618 619
619 current = 0 620 current = 0
@@ -933,7 +934,7 @@ class BBCooker:
933 for mc in self.multiconfigs: 934 for mc in self.multiconfigs:
934 # First get list of recipes, including skipped 935 # First get list of recipes, including skipped
935 recipefns = list(self.recipecaches[mc].pkg_fn.keys()) 936 recipefns = list(self.recipecaches[mc].pkg_fn.keys())
936 recipefns.extend(self.skiplist.keys()) 937 recipefns.extend(self.skiplist_by_mc[mc].keys())
937 938
938 # Work out list of bbappends that have been applied 939 # Work out list of bbappends that have been applied
939 applied_appends = [] 940 applied_appends = []
@@ -2358,7 +2359,7 @@ class CookerParser(object):
2358 for virtualfn, info_array in result: 2359 for virtualfn, info_array in result:
2359 if info_array[0].skipped: 2360 if info_array[0].skipped:
2360 self.skipped += 1 2361 self.skipped += 1
2361 self.cooker.skiplist[virtualfn] = SkippedPackage(info_array[0]) 2362 self.cooker.skiplist_by_mc[mc][virtualfn] = SkippedPackage(info_array[0])
2362 self.bb_caches[mc].add_info(virtualfn, info_array, self.cooker.recipecaches[mc], 2363 self.bb_caches[mc].add_info(virtualfn, info_array, self.cooker.recipecaches[mc],
2363 parsed=parsed, watcher = self.cooker.add_filewatch) 2364 parsed=parsed, watcher = self.cooker.add_filewatch)
2364 return True 2365 return True