summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/cooker.py9
-rw-r--r--bitbake/lib/bb/cookerdata.py31
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
1795class CookerExit(bb.event.Event): 1792class 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)