From: Richard Purdie <richard.purdie@linuxfoundation.org>
To: bitbake-devel <bitbake-devel@lists.openembedded.org>
Subject: [PATCH] cooker: Clean up init/reset configuration code
Date: Fri, 13 Sep 2013 17:31:09 +0100 [thread overview]
Message-ID: <1379089869.3484.272.camel@ted> (raw)
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>
---
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py
index daa00a4..7034f1d 100644
--- a/bitbake/lib/bb/cooker.py
+++ b/bitbake/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):
reply other threads:[~2013-09-13 16:31 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1379089869.3484.272.camel@ted \
--to=richard.purdie@linuxfoundation.org \
--cc=bitbake-devel@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.