diff options
Diffstat (limited to 'bitbake/lib/bb/cookerdata.py')
-rw-r--r-- | bitbake/lib/bb/cookerdata.py | 31 |
1 files changed, 19 insertions, 12 deletions
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) |