diff options
Diffstat (limited to 'bitbake')
| -rw-r--r-- | bitbake/lib/bb/cooker.py | 9 | ||||
| -rw-r--r-- | bitbake/lib/bb/cookerdata.py | 31 |
2 files changed, 22 insertions, 18 deletions
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index c712744382..7e0d6b47bf 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py | |||
| @@ -400,9 +400,7 @@ class BBCooker: | |||
| 400 | self.disableDataTracking() | 400 | self.disableDataTracking() |
| 401 | 401 | ||
| 402 | for mc in self.databuilder.mcdata.values(): | 402 | for mc in self.databuilder.mcdata.values(): |
| 403 | mc.renameVar("__depends", "__base_depends") | ||
| 404 | self.add_filewatch(mc.getVar("__base_depends", False), self.configwatcher) | 403 | self.add_filewatch(mc.getVar("__base_depends", False), self.configwatcher) |
| 405 | mc.setVar("__bbclasstype", "recipe") | ||
| 406 | 404 | ||
| 407 | self.baseconfig_valid = True | 405 | self.baseconfig_valid = True |
| 408 | self.parsecache_valid = False | 406 | self.parsecache_valid = False |
| @@ -436,10 +434,8 @@ class BBCooker: | |||
| 436 | upstream=upstream, | 434 | upstream=upstream, |
| 437 | ) | 435 | ) |
| 438 | self.hashserv.serve_as_process() | 436 | self.hashserv.serve_as_process() |
| 439 | self.data.setVar("BB_HASHSERVE", self.hashservaddr) | ||
| 440 | self.databuilder.origdata.setVar("BB_HASHSERVE", self.hashservaddr) | ||
| 441 | self.databuilder.data.setVar("BB_HASHSERVE", self.hashservaddr) | ||
| 442 | for mc in self.databuilder.mcdata: | 437 | for mc in self.databuilder.mcdata: |
| 438 | self.databuilder.mcorigdata[mc].setVar("BB_HASHSERVE", self.hashservaddr) | ||
| 443 | self.databuilder.mcdata[mc].setVar("BB_HASHSERVE", self.hashservaddr) | 439 | self.databuilder.mcdata[mc].setVar("BB_HASHSERVE", self.hashservaddr) |
| 444 | 440 | ||
| 445 | bb.parse.init_parser(self.data) | 441 | bb.parse.init_parser(self.data) |
| @@ -1788,8 +1784,9 @@ class BBCooker: | |||
| 1788 | if hasattr(self, "data"): | 1784 | if hasattr(self, "data"): |
| 1789 | self.databuilder.reset() | 1785 | self.databuilder.reset() |
| 1790 | self.data = self.databuilder.data | 1786 | self.data = self.databuilder.data |
| 1787 | # In theory tinfoil could have modified the base data before parsing, | ||
| 1788 | # ideally need to track if anything did modify the datastore | ||
| 1791 | self.parsecache_valid = False | 1789 | self.parsecache_valid = False |
| 1792 | self.baseconfig_valid = False | ||
| 1793 | 1790 | ||
| 1794 | 1791 | ||
| 1795 | class CookerExit(bb.event.Event): | 1792 | class CookerExit(bb.event.Event): |
diff --git a/bitbake/lib/bb/cookerdata.py b/bitbake/lib/bb/cookerdata.py index 650ae05ec9..b4e0c4216b 100644 --- a/bitbake/lib/bb/cookerdata.py +++ b/bitbake/lib/bb/cookerdata.py | |||
| @@ -263,6 +263,7 @@ class CookerDataBuilder(object): | |||
| 263 | self.mcdata = {} | 263 | self.mcdata = {} |
| 264 | 264 | ||
| 265 | def parseBaseConfiguration(self, worker=False): | 265 | def parseBaseConfiguration(self, worker=False): |
| 266 | mcdata = {} | ||
| 266 | data_hash = hashlib.sha256() | 267 | data_hash = hashlib.sha256() |
| 267 | try: | 268 | try: |
| 268 | self.data = self.parseConfigurationFiles(self.prefiles, self.postfiles) | 269 | self.data = self.parseConfigurationFiles(self.prefiles, self.postfiles) |
| @@ -288,18 +289,18 @@ class CookerDataBuilder(object): | |||
| 288 | 289 | ||
| 289 | bb.parse.init_parser(self.data) | 290 | bb.parse.init_parser(self.data) |
| 290 | data_hash.update(self.data.get_hash().encode('utf-8')) | 291 | data_hash.update(self.data.get_hash().encode('utf-8')) |
| 291 | self.mcdata[''] = self.data | 292 | mcdata[''] = self.data |
| 292 | 293 | ||
| 293 | multiconfig = (self.data.getVar("BBMULTICONFIG") or "").split() | 294 | multiconfig = (self.data.getVar("BBMULTICONFIG") or "").split() |
| 294 | for config in multiconfig: | 295 | for config in multiconfig: |
| 295 | if config[0].isdigit(): | 296 | if config[0].isdigit(): |
| 296 | bb.fatal("Multiconfig name '%s' is invalid as multiconfigs cannot start with a digit" % config) | 297 | bb.fatal("Multiconfig name '%s' is invalid as multiconfigs cannot start with a digit" % config) |
| 297 | mcdata = self.parseConfigurationFiles(self.prefiles, self.postfiles, config) | 298 | parsed_mcdata = self.parseConfigurationFiles(self.prefiles, self.postfiles, config) |
| 298 | bb.event.fire(bb.event.ConfigParsed(), mcdata) | 299 | bb.event.fire(bb.event.ConfigParsed(), parsed_mcdata) |
| 299 | self.mcdata[config] = mcdata | 300 | mcdata[config] = parsed_mcdata |
| 300 | data_hash.update(mcdata.get_hash().encode('utf-8')) | 301 | data_hash.update(parsed_mcdata.get_hash().encode('utf-8')) |
| 301 | if multiconfig: | 302 | if multiconfig: |
| 302 | bb.event.fire(bb.event.MultiConfigParsed(self.mcdata), self.data) | 303 | bb.event.fire(bb.event.MultiConfigParsed(mcdata), self.data) |
| 303 | 304 | ||
| 304 | self.data_hash = data_hash.hexdigest() | 305 | self.data_hash = data_hash.hexdigest() |
| 305 | except (SyntaxError, bb.BBHandledException): | 306 | except (SyntaxError, bb.BBHandledException): |
| @@ -332,17 +333,23 @@ class CookerDataBuilder(object): | |||
| 332 | if issues: | 333 | if issues: |
| 333 | raise bb.BBHandledException() | 334 | raise bb.BBHandledException() |
| 334 | 335 | ||
| 336 | for mc in mcdata: | ||
| 337 | mcdata[mc].renameVar("__depends", "__base_depends") | ||
| 338 | mcdata[mc].setVar("__bbclasstype", "recipe") | ||
| 339 | |||
| 335 | # Create a copy so we can reset at a later date when UIs disconnect | 340 | # Create a copy so we can reset at a later date when UIs disconnect |
| 336 | self.origdata = self.data | 341 | self.mcorigdata = mcdata |
| 337 | self.data = bb.data.createCopy(self.origdata) | 342 | for mc in mcdata: |
| 338 | self.mcdata[''] = self.data | 343 | self.mcdata[mc] = bb.data.createCopy(mcdata[mc]) |
| 344 | self.data = self.mcdata[''] | ||
| 339 | 345 | ||
| 340 | def reset(self): | 346 | def reset(self): |
| 341 | # We may not have run parseBaseConfiguration() yet | 347 | # We may not have run parseBaseConfiguration() yet |
| 342 | if not hasattr(self, 'origdata'): | 348 | if not hasattr(self, 'mcorigdata'): |
| 343 | return | 349 | return |
| 344 | self.data = bb.data.createCopy(self.origdata) | 350 | for mc in self.mcorigdata: |
| 345 | self.mcdata[''] = self.data | 351 | self.mcdata[mc] = bb.data.createCopy(self.mcorigdata[mc]) |
| 352 | self.data = self.mcdata[''] | ||
| 346 | 353 | ||
| 347 | def _findLayerConf(self, data): | 354 | def _findLayerConf(self, data): |
| 348 | return findConfigFile("bblayers.conf", data) | 355 | return findConfigFile("bblayers.conf", data) |
