summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/ui/crumbs/hobeventhandler.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/ui/crumbs/hobeventhandler.py')
-rw-r--r--bitbake/lib/bb/ui/crumbs/hobeventhandler.py67
1 files changed, 49 insertions, 18 deletions
diff --git a/bitbake/lib/bb/ui/crumbs/hobeventhandler.py b/bitbake/lib/bb/ui/crumbs/hobeventhandler.py
index d10c8588dc..4897bccd26 100644
--- a/bitbake/lib/bb/ui/crumbs/hobeventhandler.py
+++ b/bitbake/lib/bb/ui/crumbs/hobeventhandler.py
@@ -52,16 +52,13 @@ class HobHandler(gobject.GObject):
52 "error" : (gobject.SIGNAL_RUN_LAST, 52 "error" : (gobject.SIGNAL_RUN_LAST,
53 gobject.TYPE_NONE, 53 gobject.TYPE_NONE,
54 (gobject.TYPE_STRING,)), 54 (gobject.TYPE_STRING,)),
55 "build-complete" : (gobject.SIGNAL_RUN_LAST,
56 gobject.TYPE_NONE,
57 ()),
58 "reload-triggered" : (gobject.SIGNAL_RUN_LAST, 55 "reload-triggered" : (gobject.SIGNAL_RUN_LAST,
59 gobject.TYPE_NONE, 56 gobject.TYPE_NONE,
60 (gobject.TYPE_STRING, 57 (gobject.TYPE_STRING,
61 gobject.TYPE_STRING)), 58 gobject.TYPE_STRING)),
62 } 59 }
63 60
64 (CFG_PATH_LOCAL, CFG_PATH_HOB, CFG_PATH_LAYERS, CFG_FILES_DISTRO, CFG_FILES_MACH, CFG_FILES_SDK, FILES_MATCH_CLASS, GENERATE_TGTS, REPARSE_FILES) = range(9) 61 (CFG_PATH_LOCAL, CFG_PATH_HOB, CFG_PATH_LAYERS, CFG_FILES_DISTRO, CFG_FILES_MACH, CFG_FILES_SDK, FILES_MATCH_CLASS, GENERATE_TGTS, REPARSE_FILES, BUILD_IMAGE) = range(10)
65 62
66 def __init__(self, taskmodel, server): 63 def __init__(self, taskmodel, server):
67 gobject.GObject.__init__(self) 64 gobject.GObject.__init__(self)
@@ -111,8 +108,21 @@ class HobHandler(gobject.GObject):
111 self.generating = False 108 self.generating = False
112 self.current_command = None 109 self.current_command = None
113 elif self.current_command == self.REPARSE_FILES: 110 elif self.current_command == self.REPARSE_FILES:
114 self.current_command = self.CFG_PATH_LAYERS 111 if self.build_queue:
112 self.current_command = self.BUILD_IMAGE
113 else:
114 self.current_command = self.CFG_PATH_LAYERS
115 self.server.runCommand(["reparseFiles"]) 115 self.server.runCommand(["reparseFiles"])
116 elif self.current_command == self.BUILD_IMAGE:
117 self.building = "image"
118 if self.generating:
119 self.emit("data-generated")
120 self.generating = False
121 bbpath = self.server.runCommand(["getVariable", "BBPATH"])
122 bbfiles = self.server.runCommand(["getVariable", "BBFILES"])
123 self.server.runCommand(["buildTargets", self.build_queue, "build"])
124 self.build_queue = []
125 self.current_command = None
116 126
117 def handle_event(self, event, running_build, pbar): 127 def handle_event(self, event, running_build, pbar):
118 if not event: 128 if not event:
@@ -208,27 +218,48 @@ class HobHandler(gobject.GObject):
208 pmake = "-j %s" % threads 218 pmake = "-j %s" % threads
209 self.server.runCommand(["setVariable", "BB_NUMBER_THREADS", pmake]) 219 self.server.runCommand(["setVariable", "BB_NUMBER_THREADS", pmake])
210 220
211 def run_build(self, tgts): 221 def build_image(self, image, image_path, configurator):
212 self.building = "image"
213 targets = [] 222 targets = []
214 targets.append(tgts) 223 targets.append(image)
215 if self.build_toolchain and self.build_toolchain_headers: 224 if self.build_toolchain and self.build_toolchain_headers:
216 targets = ["meta-toolchain-sdk"] + targets 225 targets.append("meta-toolchain-sdk")
217 elif self.build_toolchain: 226 elif self.build_toolchain:
218 targets = ["meta-toolchain"] + targets 227 targets.append("meta-toolchain")
219 self.server.runCommand(["buildTargets", targets, "build"]) 228 self.build_queue = targets
229
230 bbpath_ok = False
231 bbpath = self.server.runCommand(["getVariable", "BBPATH"])
232 if image_path in bbpath.split(":"):
233 bbpath_ok = True
234
235 bbfiles_ok = False
236 bbfiles = self.server.runCommand(["getVariable", "BBFILES"]).split(" ")
237 for files in bbfiles:
238 import re
239 pattern = "%s/\*.bb" % image_path
240 if re.match(pattern, files):
241 bbfiles_ok = True
242
243 if not bbpath_ok:
244 nbbp = image_path
245 else:
246 nbbp = None
247
248 if not bbfiles_ok:
249 nbbf = "%s/*.bb" % image_path
250 else:
251 nbbf = None
252
253 if not bbfiles_ok or not bbpath_ok:
254 configurator.insertTempBBPath(nbbp, nbbf)
255
256 self.current_command = self.REPARSE_FILES
257 self.run_next_command()
220 258
221 def build_packages(self, pkgs): 259 def build_packages(self, pkgs):
222 self.building = "packages" 260 self.building = "packages"
223 if 'meta-toolchain' in self.build_queue:
224 self.build_queue.remove('meta-toolchain')
225 pkgs.extend('meta-toolchain')
226 self.server.runCommand(["buildTargets", pkgs, "build"]) 261 self.server.runCommand(["buildTargets", pkgs, "build"])
227 262
228 def build_file(self, image):
229 self.building = "image"
230 self.server.runCommand(["buildFile", image, "build"])
231
232 def cancel_build(self, force=False): 263 def cancel_build(self, force=False):
233 if force: 264 if force:
234 # Force the cooker to stop as quickly as possible 265 # Force the cooker to stop as quickly as possible