From e6a1b33bc87ea205b5d4ea8cf29159fc6ddd8853 Mon Sep 17 00:00:00 2001 From: Alexandru DAMIAN Date: Tue, 28 May 2013 12:49:55 +0000 Subject: [PATCH] bitbake: bitbake: move extra cache collection out of cooker The collection of the extra caching data should not be performed by the cooker, but supplied to it. This patch will also streamline the code for launching servers without a UI attached. Based on a patch by Bogdan Marinescu (Bitbake rev: f0b54280a6bce522508e4741e5f507bc284113a8) Signed-off-by: Alexandru DAMIAN Signed-off-by: Richard Purdie --- bitbake/bin/bitbake | 18 ++++++++++++++++++ bitbake/lib/bb/cooker.py | 24 ++---------------------- bitbake/lib/bb/cookerdata.py | 1 - 3 files changed, 20 insertions(+), 23 deletions(-) diff --git a/bitbake/bin/bitbake b/bitbake/bin/bitbake index 86cf3a8ae8..f44543de2c 100755 --- a/bitbake/bin/bitbake +++ b/bitbake/bin/bitbake @@ -75,6 +75,18 @@ def get_ui(config): sys.exit("FATAL: Invalid user interface '%s' specified.\n" "Valid interfaces: depexp, goggle, ncurses, hob, knotty [default]." % interface) +def gather_extra_cache_data(): + extra = [] + interfaces = ['depexp', 'goggle', 'ncurses', 'hob', 'knotty'] + for i in interfaces: + try: + ui = __import__("bb.ui." + i, fromlist = [i]) + if hasattr(ui, "extraCaches"): + extra = extra + ui.extraCaches + del ui + except: + pass + return extra # Display bitbake/OE warnings via the BitBake.Warnings logger, ignoring others""" warnlog = logging.getLogger("BitBake.Warnings") @@ -237,6 +249,12 @@ def main(): try: configuration.setServerRegIdleCallback(server.getServerIdleCB()) + + if configParams.server_only: + configuration.extra_caches = gather_extra_cache_data() + else: + configuration.extra_caches = getattr(ui_module, "extraCaches", []) + cooker = bb.cooker.BBCooker(configuration) server.addcooker(cooker) diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index 2ae3e9d239..2edfa9faeb 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py @@ -94,28 +94,8 @@ class BBCooker: self.configuration = configuration self.caches_array = [] - # Currently, only Image Creator hob ui needs extra cache. - # So, we save Extra Cache class name and container file - # information into a extraCaches field in hob UI. - # TODO: In future, bin/bitbake should pass information into cooker, - # instead of getting information from configuration.ui. Also, some - # UI start up issues need to be addressed at the same time. - caches_name_array = ['bb.cache:CoreRecipeInfo'] - if configuration.ui: - try: - module = __import__('bb.ui', fromlist=[configuration.ui]) - name_array = (getattr(module, configuration.ui)).extraCaches - for recipeInfoName in name_array: - caches_name_array.append(recipeInfoName) - except ImportError as exc: - # bb.ui.XXX is not defined and imported. It's an error! - logger.critical("Unable to import '%s' interface from bb.ui: %s" % (configuration.ui, exc)) - sys.exit("FATAL: Failed to import '%s' interface." % configuration.ui) - except AttributeError: - # This is not an error. If the field is not defined in the ui, - # this interface might need no extra cache fields, so - # just skip this error! - logger.debug(2, "UI '%s' does not require extra cache!" % (configuration.ui)) + + 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! diff --git a/bitbake/lib/bb/cookerdata.py b/bitbake/lib/bb/cookerdata.py index 11063b4af2..cbaa0bed47 100644 --- a/bitbake/lib/bb/cookerdata.py +++ b/bitbake/lib/bb/cookerdata.py @@ -119,7 +119,6 @@ class CookerConfiguration(object): self.cmd = None self.abort = True self.force = False - self.ui = None self.profile = False self.nosetscene = False self.invalidate_stamp = False