diff options
| -rw-r--r-- | bitbake/lib/bb/cache.py | 22 | ||||
| -rw-r--r-- | bitbake/lib/bb/cooker.py | 8 |
2 files changed, 19 insertions, 11 deletions
diff --git a/bitbake/lib/bb/cache.py b/bitbake/lib/bb/cache.py index b34bfa9b5a..df78d5b701 100644 --- a/bitbake/lib/bb/cache.py +++ b/bitbake/lib/bb/cache.py | |||
| @@ -328,7 +328,7 @@ class NoCache(object): | |||
| 328 | bb_data = self.load_bbfile(virtualfn, appends, virtonly=True) | 328 | bb_data = self.load_bbfile(virtualfn, appends, virtonly=True) |
| 329 | return bb_data[virtual] | 329 | return bb_data[virtual] |
| 330 | 330 | ||
| 331 | def load_bbfile(self, bbfile, appends, virtonly = False): | 331 | def load_bbfile(self, bbfile, appends, virtonly = False, mc=None): |
| 332 | """ | 332 | """ |
| 333 | Load and parse one .bb build file | 333 | Load and parse one .bb build file |
| 334 | Return the data and whether parsing resulted in the file being skipped | 334 | Return the data and whether parsing resulted in the file being skipped |
| @@ -341,6 +341,10 @@ class NoCache(object): | |||
| 341 | datastores = parse_recipe(bb_data, bbfile, appends, mc) | 341 | datastores = parse_recipe(bb_data, bbfile, appends, mc) |
| 342 | return datastores | 342 | return datastores |
| 343 | 343 | ||
| 344 | if mc is not None: | ||
| 345 | bb_data = self.databuilder.mcdata[mc].createCopy() | ||
| 346 | return parse_recipe(bb_data, bbfile, appends, mc) | ||
| 347 | |||
| 344 | bb_data = self.data.createCopy() | 348 | bb_data = self.data.createCopy() |
| 345 | datastores = parse_recipe(bb_data, bbfile, appends) | 349 | datastores = parse_recipe(bb_data, bbfile, appends) |
| 346 | 350 | ||
| @@ -500,7 +504,7 @@ class Cache(NoCache): | |||
| 500 | """Parse the specified filename, returning the recipe information""" | 504 | """Parse the specified filename, returning the recipe information""" |
| 501 | self.logger.debug(1, "Parsing %s", filename) | 505 | self.logger.debug(1, "Parsing %s", filename) |
| 502 | infos = [] | 506 | infos = [] |
| 503 | datastores = self.load_bbfile(filename, appends) | 507 | datastores = self.load_bbfile(filename, appends, mc=self.mc) |
| 504 | depends = [] | 508 | depends = [] |
| 505 | variants = [] | 509 | variants = [] |
| 506 | # Process the "real" fn last so we can store variants list | 510 | # Process the "real" fn last so we can store variants list |
| @@ -720,8 +724,18 @@ class Cache(NoCache): | |||
| 720 | return bb.parse.cached_mtime_noerror(cachefile) | 724 | return bb.parse.cached_mtime_noerror(cachefile) |
| 721 | 725 | ||
| 722 | def add_info(self, filename, info_array, cacheData, parsed=None, watcher=None): | 726 | def add_info(self, filename, info_array, cacheData, parsed=None, watcher=None): |
| 723 | if cacheData is not None and isinstance(info_array[0], CoreRecipeInfo) and (not info_array[0].skipped): | 727 | if self.mc is not None: |
| 724 | cacheData.add_from_recipeinfo(filename, info_array) | 728 | (fn, cls, mc) = virtualfn2realfn(filename) |
| 729 | if mc: | ||
| 730 | self.logger.error("Unexpected multiconfig %s", virtualfn) | ||
| 731 | return | ||
| 732 | |||
| 733 | vfn = realfn2virtual(fn, cls, self.mc) | ||
| 734 | else: | ||
| 735 | vfn = filename | ||
| 736 | |||
| 737 | if isinstance(info_array[0], CoreRecipeInfo) and (not info_array[0].skipped): | ||
| 738 | cacheData.add_from_recipeinfo(vfn, info_array) | ||
| 725 | 739 | ||
| 726 | if watcher: | 740 | if watcher: |
| 727 | watcher(info_array[0].file_depends) | 741 | watcher(info_array[0].file_depends) |
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index 50526d52b2..effd02442c 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py | |||
| @@ -2199,13 +2199,7 @@ class CookerParser(object): | |||
| 2199 | if info_array[0].skipped: | 2199 | if info_array[0].skipped: |
| 2200 | self.skipped += 1 | 2200 | self.skipped += 1 |
| 2201 | self.cooker.skiplist[virtualfn] = SkippedPackage(info_array[0]) | 2201 | self.cooker.skiplist[virtualfn] = SkippedPackage(info_array[0]) |
| 2202 | (fn, cls, fnmc) = bb.cache.virtualfn2realfn(virtualfn) | 2202 | self.bb_caches[mc].add_info(virtualfn, info_array, self.cooker.recipecaches[mc], |
| 2203 | |||
| 2204 | if fnmc == mc: | ||
| 2205 | cache = self.cooker.recipecaches[mc] | ||
| 2206 | else: | ||
| 2207 | cache = None | ||
| 2208 | self.bb_caches[mc].add_info(virtualfn, info_array, cache, | ||
| 2209 | parsed=parsed, watcher = self.cooker.add_filewatch) | 2203 | parsed=parsed, watcher = self.cooker.add_filewatch) |
| 2210 | return True | 2204 | return True |
| 2211 | 2205 | ||
