summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbin/bitbake18
-rw-r--r--lib/bb/cooker.py24
-rw-r--r--lib/bb/cookerdata.py1
3 files changed, 20 insertions, 23 deletions
diff --git a/bin/bitbake b/bin/bitbake
index 86cf3a8ae..f44543de2 100755
--- a/bin/bitbake
+++ b/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/lib/bb/cooker.py b/lib/bb/cooker.py
index 2ae3e9d23..2edfa9fae 100644
--- a/lib/bb/cooker.py
+++ b/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/lib/bb/cookerdata.py b/lib/bb/cookerdata.py
index 11063b4af..cbaa0bed4 100644
--- a/lib/bb/cookerdata.py
+++ b/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