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.py59
1 files changed, 34 insertions, 25 deletions
diff --git a/bitbake/lib/bb/cookerdata.py b/bitbake/lib/bb/cookerdata.py
index 71021a3510..fa1de7a22f 100644
--- a/bitbake/lib/bb/cookerdata.py
+++ b/bitbake/lib/bb/cookerdata.py
@@ -237,9 +237,9 @@ class CookerDataBuilder(object):
237 237
238 bb.utils.set_context(bb.utils.clean_context()) 238 bb.utils.set_context(bb.utils.clean_context())
239 bb.event.set_class_handlers(bb.event.clean_class_handlers()) 239 bb.event.set_class_handlers(bb.event.clean_class_handlers())
240 self.data = bb.data.init() 240 self.basedata = bb.data.init()
241 if self.tracking: 241 if self.tracking:
242 self.data.enableTracking() 242 self.basedata.enableTracking()
243 243
244 # Keep a datastore of the initial environment variables and their 244 # Keep a datastore of the initial environment variables and their
245 # values from when BitBake was launched to enable child processes 245 # values from when BitBake was launched to enable child processes
@@ -250,15 +250,40 @@ class CookerDataBuilder(object):
250 self.savedenv.setVar(k, cookercfg.env[k]) 250 self.savedenv.setVar(k, cookercfg.env[k])
251 251
252 filtered_keys = bb.utils.approved_variables() 252 filtered_keys = bb.utils.approved_variables()
253 bb.data.inheritFromOS(self.data, self.savedenv, filtered_keys) 253 bb.data.inheritFromOS(self.basedata, self.savedenv, filtered_keys)
254 self.data.setVar("BB_ORIGENV", self.savedenv) 254 self.basedata.setVar("BB_ORIGENV", self.savedenv)
255 255
256 if worker: 256 if worker:
257 self.data.setVar("BB_WORKERCONTEXT", "1") 257 self.basedata.setVar("BB_WORKERCONTEXT", "1")
258
259 self.data = self.basedata
260 self.mcdata = {}
258 261
259 def parseBaseConfiguration(self): 262 def parseBaseConfiguration(self):
260 try: 263 try:
261 self.parseConfigurationFiles() 264 bb.parse.init_parser(self.basedata)
265 self.data = self.parseConfigurationFiles(self.prefiles, self.postfiles)
266
267 if self.data.getVar("BB_WORKERCONTEXT", False) is None:
268 bb.fetch.fetcher_init(self.data)
269 bb.codeparser.parser_cache_init(self.data)
270
271 bb.event.fire(bb.event.ConfigParsed(), self.data)
272
273 if self.data.getVar("BB_INVALIDCONF", False) is True:
274 self.data.setVar("BB_INVALIDCONF", False)
275 self.data = self.parseConfigurationFiles(self.prefiles, self.postfiles)
276
277 bb.parse.init_parser(self.data)
278 self.data_hash = self.data.get_hash()
279 self.mcdata[''] = self.data
280
281 multiconfig = (self.data.getVar("BBMULTICONFIG", True) or "").split()
282 for config in multiconfig:
283 mcdata = self.parseConfigurationFiles(['conf/multiconfig/%s.conf' % config] + self.prefiles, self.postfiles)
284 bb.event.fire(bb.event.ConfigParsed(), mcdata)
285 self.mcdata[config] = mcdata
286
262 except SyntaxError: 287 except SyntaxError:
263 raise bb.BBHandledException 288 raise bb.BBHandledException
264 except bb.data_smart.ExpansionError as e: 289 except bb.data_smart.ExpansionError as e:
@@ -271,11 +296,8 @@ class CookerDataBuilder(object):
271 def _findLayerConf(self, data): 296 def _findLayerConf(self, data):
272 return findConfigFile("bblayers.conf", data) 297 return findConfigFile("bblayers.conf", data)
273 298
274 def parseConfigurationFiles(self): 299 def parseConfigurationFiles(self, prefiles, postfiles):
275 data = self.data 300 data = bb.data.createCopy(self.basedata)
276 prefiles = self.prefiles
277 postfiles = self.postfiles
278 bb.parse.init_parser(data)
279 301
280 # Parse files for loading *before* bitbake.conf and any includes 302 # Parse files for loading *before* bitbake.conf and any includes
281 for f in prefiles: 303 for f in prefiles:
@@ -338,20 +360,7 @@ class CookerDataBuilder(object):
338 handlerln = int(data.getVarFlag(var, "lineno", False)) 360 handlerln = int(data.getVarFlag(var, "lineno", False))
339 bb.event.register(var, data.getVar(var, False), (data.getVarFlag(var, "eventmask", True) or "").split(), handlerfn, handlerln) 361 bb.event.register(var, data.getVar(var, False), (data.getVarFlag(var, "eventmask", True) or "").split(), handlerfn, handlerln)
340 362
341 if data.getVar("BB_WORKERCONTEXT", False) is None:
342 bb.fetch.fetcher_init(data)
343 bb.codeparser.parser_cache_init(data)
344 bb.event.fire(bb.event.ConfigParsed(), data)
345
346 if data.getVar("BB_INVALIDCONF", False) is True:
347 data.setVar("BB_INVALIDCONF", False)
348 self.parseConfigurationFiles()
349 return
350
351 bb.parse.init_parser(data)
352 data.setVar('BBINCLUDED',bb.parse.get_file_depends(data)) 363 data.setVar('BBINCLUDED',bb.parse.get_file_depends(data))
353 self.data = data
354 self.data_hash = data.get_hash()
355
356 364
365 return data
357 366