summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xbitbake/bin/bitbake18
-rw-r--r--bitbake/lib/bb/cooker.py24
-rw-r--r--bitbake/lib/bb/cookerdata.py1
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):
75 sys.exit("FATAL: Invalid user interface '%s' specified.\n" 75 sys.exit("FATAL: Invalid user interface '%s' specified.\n"
76 "Valid interfaces: depexp, goggle, ncurses, hob, knotty [default]." % interface) 76 "Valid interfaces: depexp, goggle, ncurses, hob, knotty [default]." % interface)
77 77
78def gather_extra_cache_data():
79 extra = []
80 interfaces = ['depexp', 'goggle', 'ncurses', 'hob', 'knotty']
81 for i in interfaces:
82 try:
83 ui = __import__("bb.ui." + i, fromlist = [i])
84 if hasattr(ui, "extraCaches"):
85 extra = extra + ui.extraCaches
86 del ui
87 except:
88 pass
89 return extra
78 90
79# Display bitbake/OE warnings via the BitBake.Warnings logger, ignoring others""" 91# Display bitbake/OE warnings via the BitBake.Warnings logger, ignoring others"""
80warnlog = logging.getLogger("BitBake.Warnings") 92warnlog = logging.getLogger("BitBake.Warnings")
@@ -237,6 +249,12 @@ def main():
237 249
238 try: 250 try:
239 configuration.setServerRegIdleCallback(server.getServerIdleCB()) 251 configuration.setServerRegIdleCallback(server.getServerIdleCB())
252
253 if configParams.server_only:
254 configuration.extra_caches = gather_extra_cache_data()
255 else:
256 configuration.extra_caches = getattr(ui_module, "extraCaches", [])
257
240 cooker = bb.cooker.BBCooker(configuration) 258 cooker = bb.cooker.BBCooker(configuration)
241 259
242 server.addcooker(cooker) 260 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:
94 self.configuration = configuration 94 self.configuration = configuration
95 95
96 self.caches_array = [] 96 self.caches_array = []
97 # Currently, only Image Creator hob ui needs extra cache. 97
98 # So, we save Extra Cache class name and container file 98 caches_name_array = ['bb.cache:CoreRecipeInfo'] + configuration.extra_caches
99 # information into a extraCaches field in hob UI.
100 # TODO: In future, bin/bitbake should pass information into cooker,
101 # instead of getting information from configuration.ui. Also, some
102 # UI start up issues need to be addressed at the same time.
103 caches_name_array = ['bb.cache:CoreRecipeInfo']
104 if configuration.ui:
105 try:
106 module = __import__('bb.ui', fromlist=[configuration.ui])
107 name_array = (getattr(module, configuration.ui)).extraCaches
108 for recipeInfoName in name_array:
109 caches_name_array.append(recipeInfoName)
110 except ImportError as exc:
111 # bb.ui.XXX is not defined and imported. It's an error!
112 logger.critical("Unable to import '%s' interface from bb.ui: %s" % (configuration.ui, exc))
113 sys.exit("FATAL: Failed to import '%s' interface." % configuration.ui)
114 except AttributeError:
115 # This is not an error. If the field is not defined in the ui,
116 # this interface might need no extra cache fields, so
117 # just skip this error!
118 logger.debug(2, "UI '%s' does not require extra cache!" % (configuration.ui))
119 99
120 # At least CoreRecipeInfo will be loaded, so caches_array will never be empty! 100 # At least CoreRecipeInfo will be loaded, so caches_array will never be empty!
121 # This is the entry point, no further check needed! 101 # 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):
119 self.cmd = None 119 self.cmd = None
120 self.abort = True 120 self.abort = True
121 self.force = False 121 self.force = False
122 self.ui = None
123 self.profile = False 122 self.profile = False
124 self.nosetscene = False 123 self.nosetscene = False
125 self.invalidate_stamp = False 124 self.invalidate_stamp = False