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.py20
1 files changed, 13 insertions, 7 deletions
diff --git a/bitbake/lib/bb/cookerdata.py b/bitbake/lib/bb/cookerdata.py
index 0649e40995..65c153a5bb 100644
--- a/bitbake/lib/bb/cookerdata.py
+++ b/bitbake/lib/bb/cookerdata.py
@@ -1,3 +1,4 @@
1
1# 2#
2# Copyright (C) 2003, 2004 Chris Larson 3# Copyright (C) 2003, 2004 Chris Larson
3# Copyright (C) 2003, 2004 Phil Blundell 4# Copyright (C) 2003, 2004 Phil Blundell
@@ -254,14 +255,21 @@ class CookerDataBuilder(object):
254 self.data = self.basedata 255 self.data = self.basedata
255 self.mcdata = {} 256 self.mcdata = {}
256 257
258 def calc_datastore_hashes(self):
259 data_hash = hashlib.sha256()
260 data_hash.update(self.data.get_hash().encode('utf-8'))
261 multiconfig = (self.data.getVar("BBMULTICONFIG") or "").split()
262 for config in multiconfig:
263 data_hash.update(self.mcdata[config].get_hash().encode('utf-8'))
264 self.data_hash = data_hash.hexdigest()
265
257 def parseBaseConfiguration(self, worker=False): 266 def parseBaseConfiguration(self, worker=False):
258 mcdata = {} 267 mcdata = {}
259 data_hash = hashlib.sha256()
260 try: 268 try:
261 self.data = self.parseConfigurationFiles(self.prefiles, self.postfiles) 269 self.data = self.parseConfigurationFiles(self.prefiles, self.postfiles)
262 270
263 if self.data.getVar("BB_WORKERCONTEXT", False) is None and not worker: 271 servercontext = self.data.getVar("BB_WORKERCONTEXT", False) is None and not worker
264 bb.fetch.fetcher_init(self.data) 272 bb.fetch.fetcher_init(self.data, servercontext)
265 bb.parse.init_parser(self.data) 273 bb.parse.init_parser(self.data)
266 274
267 bb.event.fire(bb.event.ConfigParsed(), self.data) 275 bb.event.fire(bb.event.ConfigParsed(), self.data)
@@ -279,7 +287,6 @@ class CookerDataBuilder(object):
279 bb.event.fire(bb.event.ConfigParsed(), self.data) 287 bb.event.fire(bb.event.ConfigParsed(), self.data)
280 288
281 bb.parse.init_parser(self.data) 289 bb.parse.init_parser(self.data)
282 data_hash.update(self.data.get_hash().encode('utf-8'))
283 mcdata[''] = self.data 290 mcdata[''] = self.data
284 291
285 multiconfig = (self.data.getVar("BBMULTICONFIG") or "").split() 292 multiconfig = (self.data.getVar("BBMULTICONFIG") or "").split()
@@ -289,11 +296,9 @@ class CookerDataBuilder(object):
289 parsed_mcdata = self.parseConfigurationFiles(self.prefiles, self.postfiles, config) 296 parsed_mcdata = self.parseConfigurationFiles(self.prefiles, self.postfiles, config)
290 bb.event.fire(bb.event.ConfigParsed(), parsed_mcdata) 297 bb.event.fire(bb.event.ConfigParsed(), parsed_mcdata)
291 mcdata[config] = parsed_mcdata 298 mcdata[config] = parsed_mcdata
292 data_hash.update(parsed_mcdata.get_hash().encode('utf-8'))
293 if multiconfig: 299 if multiconfig:
294 bb.event.fire(bb.event.MultiConfigParsed(mcdata), self.data) 300 bb.event.fire(bb.event.MultiConfigParsed(mcdata), self.data)
295 301
296 self.data_hash = data_hash.hexdigest()
297 except bb.data_smart.ExpansionError as e: 302 except bb.data_smart.ExpansionError as e:
298 logger.error(str(e)) 303 logger.error(str(e))
299 raise bb.BBHandledException() 304 raise bb.BBHandledException()
@@ -328,6 +333,7 @@ class CookerDataBuilder(object):
328 for mc in mcdata: 333 for mc in mcdata:
329 self.mcdata[mc] = bb.data.createCopy(mcdata[mc]) 334 self.mcdata[mc] = bb.data.createCopy(mcdata[mc])
330 self.data = self.mcdata[''] 335 self.data = self.mcdata['']
336 self.calc_datastore_hashes()
331 337
332 def reset(self): 338 def reset(self):
333 # We may not have run parseBaseConfiguration() yet 339 # We may not have run parseBaseConfiguration() yet
@@ -340,7 +346,7 @@ class CookerDataBuilder(object):
340 def _findLayerConf(self, data): 346 def _findLayerConf(self, data):
341 return findConfigFile("bblayers.conf", data) 347 return findConfigFile("bblayers.conf", data)
342 348
343 def parseConfigurationFiles(self, prefiles, postfiles, mc = "default"): 349 def parseConfigurationFiles(self, prefiles, postfiles, mc = ""):
344 data = bb.data.createCopy(self.basedata) 350 data = bb.data.createCopy(self.basedata)
345 data.setVar("BB_CURRENT_MC", mc) 351 data.setVar("BB_CURRENT_MC", mc)
346 352