summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/cookerdata.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/cookerdata.py')
-rw-r--r--bitbake/lib/bb/cookerdata.py31
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)