summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2013-09-13 17:31:09 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-09-13 17:45:37 +0100
commit1193b8d76fcb6cb87e9ec135a2514370d7dd90ac (patch)
treec63db893423e03a93f3a6858a8a642df9924c513
parentbc0b30199a8e3624c5b9914430adbcc7c6bd4497 (diff)
downloadbitbake-1193b8d76fcb6cb87e9ec135a2514370d7dd90ac.tar.gz
cooker: Clean up init/reset configuration code
Currently the cooker event data isn't rebuilt upon reset and the cache configuration cannot be changed after init. These are both bad things and this patch refactors the init/reset code so that it is possible to reconfigure the server. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--lib/bb/cooker.py49
1 files changed, 24 insertions, 25 deletions
diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index daa00a45d..7034f1d71 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -93,22 +93,6 @@ class BBCooker:
self.configuration = configuration
- self.caches_array = []
-
- caches_name_array = ['bb.cache:CoreRecipeInfo'] + configuration.extra_caches
-
- # At least CoreRecipeInfo will be loaded, so caches_array will never be empty!
- # This is the entry point, no further check needed!
- for var in caches_name_array:
- try:
- module_name, cache_name = var.split(':')
- module = __import__(module_name, fromlist=(cache_name,))
- self.caches_array.append(getattr(module, cache_name))
- except ImportError as exc:
- logger.critical("Unable to import extra RecipeInfo '%s' from '%s': %s" % (cache_name, module_name, exc))
- sys.exit("FATAL: Failed to import extra cache class '%s'." % cache_name)
-
- self.data = None
self.loadConfigurationData()
# Take a lock so only one copy of bitbake can run against a given build
@@ -118,13 +102,6 @@ class BBCooker:
if not self.lock:
bb.fatal("Only one copy of bitbake should be run against a build directory")
- #
- # Special updated configuration we use for firing events
- #
- self.event_data = bb.data.createCopy(self.data)
- bb.data.update_data(self.event_data)
- bb.parse.init_parser(self.event_data)
-
# TOSTOP must not be set or our children will hang when they output
fd = sys.stdout.fileno()
if os.isatty(fd):
@@ -141,6 +118,23 @@ class BBCooker:
self.parser = None
def initConfigurationData(self):
+
+ self.state = state.initial
+
+ self.caches_array = []
+ caches_name_array = ['bb.cache:CoreRecipeInfo'] + self.configuration.extra_caches
+
+ # At least CoreRecipeInfo will be loaded, so caches_array will never be empty!
+ # This is the entry point, no further check needed!
+ for var in caches_name_array:
+ try:
+ module_name, cache_name = var.split(':')
+ module = __import__(module_name, fromlist=(cache_name,))
+ self.caches_array.append(getattr(module, cache_name))
+ except ImportError as exc:
+ logger.critical("Unable to import extra RecipeInfo '%s' from '%s': %s" % (cache_name, module_name, exc))
+ sys.exit("FATAL: Failed to import extra cache class '%s'." % cache_name)
+
self.databuilder = bb.cookerdata.CookerDataBuilder(self.configuration, False)
self.data = self.databuilder.data
@@ -158,6 +152,13 @@ class BBCooker:
self.data = self.databuilder.data
self.data_hash = self.databuilder.data_hash
+ #
+ # Special updated configuration we use for firing events
+ #
+ self.event_data = bb.data.createCopy(self.data)
+ bb.data.update_data(self.event_data)
+ bb.parse.init_parser(self.event_data)
+
def modifyConfigurationVar(self, var, val, default_file, op):
if op == "append":
self.appendConfigurationVar(var, val, default_file)
@@ -1246,11 +1247,9 @@ class BBCooker:
self.state = state.stop
def initialize(self):
- self.state = state.initial
self.initConfigurationData()
def reset(self):
- self.state = state.initial
self.loadConfigurationData()
def server_main(cooker, func, *args):