diff options
Diffstat (limited to 'bitbake/lib/bb/cooker.py')
-rw-r--r-- | bitbake/lib/bb/cooker.py | 32 |
1 files changed, 18 insertions, 14 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index 2a0ef28755..0a21f1c2f8 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py | |||
@@ -643,7 +643,8 @@ class BBCooker: | |||
643 | 643 | ||
644 | if fn: | 644 | if fn: |
645 | try: | 645 | try: |
646 | envdata = self.databuilder.parseRecipe(fn, self.collections[mc].get_file_appends(fn)) | 646 | layername = self.collections[mc].calc_bbfile_priority(fn)[2] |
647 | envdata = self.databuilder.parseRecipe(fn, self.collections[mc].get_file_appends(fn), layername) | ||
647 | except Exception as e: | 648 | except Exception as e: |
648 | parselog.exception("Unable to read %s", fn) | 649 | parselog.exception("Unable to read %s", fn) |
649 | raise | 650 | raise |
@@ -1448,7 +1449,8 @@ class BBCooker: | |||
1448 | 1449 | ||
1449 | bb_caches = bb.cache.MulticonfigCache(self.databuilder, self.data_hash, self.caches_array) | 1450 | bb_caches = bb.cache.MulticonfigCache(self.databuilder, self.data_hash, self.caches_array) |
1450 | 1451 | ||
1451 | infos = bb_caches[mc].parse(fn, self.collections[mc].get_file_appends(fn)) | 1452 | layername = self.collections[mc].calc_bbfile_priority(fn)[2] |
1453 | infos = bb_caches[mc].parse(fn, self.collections[mc].get_file_appends(fn), layername) | ||
1452 | infos = dict(infos) | 1454 | infos = dict(infos) |
1453 | 1455 | ||
1454 | fn = bb.cache.realfn2virtual(fn, cls, mc) | 1456 | fn = bb.cache.realfn2virtual(fn, cls, mc) |
@@ -1833,10 +1835,10 @@ class CookerCollectFiles(object): | |||
1833 | self.bbfile_config_priorities = sorted(priorities, key=lambda tup: tup[1], reverse=True) | 1835 | self.bbfile_config_priorities = sorted(priorities, key=lambda tup: tup[1], reverse=True) |
1834 | 1836 | ||
1835 | def calc_bbfile_priority(self, filename): | 1837 | def calc_bbfile_priority(self, filename): |
1836 | for _, _, regex, pri in self.bbfile_config_priorities: | 1838 | for layername, _, regex, pri in self.bbfile_config_priorities: |
1837 | if regex.match(filename): | 1839 | if regex.match(filename): |
1838 | return pri, regex | 1840 | return pri, regex, layername |
1839 | return 0, None | 1841 | return 0, None, None |
1840 | 1842 | ||
1841 | def get_bbfiles(self): | 1843 | def get_bbfiles(self): |
1842 | """Get list of default .bb files by reading out the current directory""" | 1844 | """Get list of default .bb files by reading out the current directory""" |
@@ -2009,7 +2011,7 @@ class CookerCollectFiles(object): | |||
2009 | # Calculate priorities for each file | 2011 | # Calculate priorities for each file |
2010 | for p in pkgfns: | 2012 | for p in pkgfns: |
2011 | realfn, cls, mc = bb.cache.virtualfn2realfn(p) | 2013 | realfn, cls, mc = bb.cache.virtualfn2realfn(p) |
2012 | priorities[p], regex = self.calc_bbfile_priority(realfn) | 2014 | priorities[p], regex, _ = self.calc_bbfile_priority(realfn) |
2013 | if regex in unmatched_regex: | 2015 | if regex in unmatched_regex: |
2014 | matched_regex.add(regex) | 2016 | matched_regex.add(regex) |
2015 | unmatched_regex.remove(regex) | 2017 | unmatched_regex.remove(regex) |
@@ -2146,7 +2148,7 @@ class Parser(multiprocessing.Process): | |||
2146 | self.results.close() | 2148 | self.results.close() |
2147 | self.results.join_thread() | 2149 | self.results.join_thread() |
2148 | 2150 | ||
2149 | def parse(self, mc, cache, filename, appends): | 2151 | def parse(self, mc, cache, filename, appends, layername): |
2150 | try: | 2152 | try: |
2151 | origfilter = bb.event.LogHandler.filter | 2153 | origfilter = bb.event.LogHandler.filter |
2152 | # Record the filename we're parsing into any events generated | 2154 | # Record the filename we're parsing into any events generated |
@@ -2160,7 +2162,7 @@ class Parser(multiprocessing.Process): | |||
2160 | bb.event.set_class_handlers(self.handlers.copy()) | 2162 | bb.event.set_class_handlers(self.handlers.copy()) |
2161 | bb.event.LogHandler.filter = parse_filter | 2163 | bb.event.LogHandler.filter = parse_filter |
2162 | 2164 | ||
2163 | return True, mc, cache.parse(filename, appends) | 2165 | return True, mc, cache.parse(filename, appends, layername) |
2164 | except Exception as exc: | 2166 | except Exception as exc: |
2165 | tb = sys.exc_info()[2] | 2167 | tb = sys.exc_info()[2] |
2166 | exc.recipe = filename | 2168 | exc.recipe = filename |
@@ -2200,10 +2202,11 @@ class CookerParser(object): | |||
2200 | for mc in self.cooker.multiconfigs: | 2202 | for mc in self.cooker.multiconfigs: |
2201 | for filename in self.mcfilelist[mc]: | 2203 | for filename in self.mcfilelist[mc]: |
2202 | appends = self.cooker.collections[mc].get_file_appends(filename) | 2204 | appends = self.cooker.collections[mc].get_file_appends(filename) |
2205 | layername = self.cooker.collections[mc].calc_bbfile_priority(filename)[2] | ||
2203 | if not self.bb_caches[mc].cacheValid(filename, appends): | 2206 | if not self.bb_caches[mc].cacheValid(filename, appends): |
2204 | self.willparse.add((mc, self.bb_caches[mc], filename, appends)) | 2207 | self.willparse.add((mc, self.bb_caches[mc], filename, appends, layername)) |
2205 | else: | 2208 | else: |
2206 | self.fromcache.add((mc, self.bb_caches[mc], filename, appends)) | 2209 | self.fromcache.add((mc, self.bb_caches[mc], filename, appends, layername)) |
2207 | 2210 | ||
2208 | self.total = len(self.fromcache) + len(self.willparse) | 2211 | self.total = len(self.fromcache) + len(self.willparse) |
2209 | self.toparse = len(self.willparse) | 2212 | self.toparse = len(self.willparse) |
@@ -2314,7 +2317,7 @@ class CookerParser(object): | |||
2314 | self.syncthread.join() | 2317 | self.syncthread.join() |
2315 | 2318 | ||
2316 | def load_cached(self): | 2319 | def load_cached(self): |
2317 | for mc, cache, filename, appends in self.fromcache: | 2320 | for mc, cache, filename, appends, layername in self.fromcache: |
2318 | infos = cache.loadCached(filename, appends) | 2321 | infos = cache.loadCached(filename, appends) |
2319 | yield False, mc, infos | 2322 | yield False, mc, infos |
2320 | 2323 | ||
@@ -2417,9 +2420,10 @@ class CookerParser(object): | |||
2417 | bb.cache.SiggenRecipeInfo.reset() | 2420 | bb.cache.SiggenRecipeInfo.reset() |
2418 | to_reparse = set() | 2421 | to_reparse = set() |
2419 | for mc in self.cooker.multiconfigs: | 2422 | for mc in self.cooker.multiconfigs: |
2420 | to_reparse.add((mc, filename, self.cooker.collections[mc].get_file_appends(filename))) | 2423 | layername = self.cooker.collections[mc].calc_bbfile_priority(filename)[2] |
2424 | to_reparse.add((mc, filename, self.cooker.collections[mc].get_file_appends(filename), layername)) | ||
2421 | 2425 | ||
2422 | for mc, filename, appends in to_reparse: | 2426 | for mc, filename, appends, layername in to_reparse: |
2423 | infos = self.bb_caches[mc].parse(filename, appends) | 2427 | infos = self.bb_caches[mc].parse(filename, appends, layername) |
2424 | for vfn, info_array in infos: | 2428 | for vfn, info_array in infos: |
2425 | self.cooker.recipecaches[mc].add_from_recipeinfo(vfn, info_array) | 2429 | self.cooker.recipecaches[mc].add_from_recipeinfo(vfn, info_array) |