diff options
Diffstat (limited to 'bitbake/lib/bb/ui/crumbs/runningbuild.py')
-rw-r--r-- | bitbake/lib/bb/ui/crumbs/runningbuild.py | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/bitbake/lib/bb/ui/crumbs/runningbuild.py b/bitbake/lib/bb/ui/crumbs/runningbuild.py index 0347058d7e..a57d6db5e5 100644 --- a/bitbake/lib/bb/ui/crumbs/runningbuild.py +++ b/bitbake/lib/bb/ui/crumbs/runningbuild.py | |||
@@ -88,6 +88,9 @@ class RunningBuild (gobject.GObject): | |||
88 | 'no-provider' : (gobject.SIGNAL_RUN_LAST, | 88 | 'no-provider' : (gobject.SIGNAL_RUN_LAST, |
89 | gobject.TYPE_NONE, | 89 | gobject.TYPE_NONE, |
90 | (gobject.TYPE_PYOBJECT,)), | 90 | (gobject.TYPE_PYOBJECT,)), |
91 | 'log' : (gobject.SIGNAL_RUN_LAST, | ||
92 | gobject.TYPE_NONE, | ||
93 | (gobject.TYPE_STRING, gobject.TYPE_PYOBJECT,)), | ||
91 | } | 94 | } |
92 | pids_to_task = {} | 95 | pids_to_task = {} |
93 | tasks_to_iter = {} | 96 | tasks_to_iter = {} |
@@ -126,6 +129,8 @@ class RunningBuild (gobject.GObject): | |||
126 | parent = self.tasks_to_iter[(package, task)] | 129 | parent = self.tasks_to_iter[(package, task)] |
127 | 130 | ||
128 | if(isinstance(event, logging.LogRecord)): | 131 | if(isinstance(event, logging.LogRecord)): |
132 | if event.taskpid == 0 or event.levelno > logging.INFO: | ||
133 | self.emit("log", "handle", event) | ||
129 | # FIXME: this is a hack! More info in Yocto #1433 | 134 | # FIXME: this is a hack! More info in Yocto #1433 |
130 | # http://bugzilla.pokylinux.org/show_bug.cgi?id=1433, temporarily | 135 | # http://bugzilla.pokylinux.org/show_bug.cgi?id=1433, temporarily |
131 | # mask the error message as it's not informative for the user. | 136 | # mask the error message as it's not informative for the user. |
@@ -211,6 +216,7 @@ class RunningBuild (gobject.GObject): | |||
211 | self.tasks_to_iter[(package, task)] = i | 216 | self.tasks_to_iter[(package, task)] = i |
212 | 217 | ||
213 | elif isinstance(event, bb.build.TaskBase): | 218 | elif isinstance(event, bb.build.TaskBase): |
219 | self.emit("log", "info", event._message) | ||
214 | current = self.tasks_to_iter[(package, task)] | 220 | current = self.tasks_to_iter[(package, task)] |
215 | parent = self.tasks_to_iter[(package, None)] | 221 | parent = self.tasks_to_iter[(package, None)] |
216 | 222 | ||
@@ -296,6 +302,7 @@ class RunningBuild (gobject.GObject): | |||
296 | self.buildaborted = True | 302 | self.buildaborted = True |
297 | 303 | ||
298 | elif isinstance(event, bb.command.CommandFailed): | 304 | elif isinstance(event, bb.command.CommandFailed): |
305 | self.emit("log", "error", "Command execution failed: %s" % (event.error)) | ||
299 | if event.error.startswith("Exited with"): | 306 | if event.error.startswith("Exited with"): |
300 | # If the command fails with an exit code we're done, emit the | 307 | # If the command fails with an exit code we're done, emit the |
301 | # generic signal for the UI to notify the user | 308 | # generic signal for the UI to notify the user |
@@ -323,7 +330,24 @@ class RunningBuild (gobject.GObject): | |||
323 | elif isinstance(event, bb.event.ParseCompleted) and pbar: | 330 | elif isinstance(event, bb.event.ParseCompleted) and pbar: |
324 | pbar.hide() | 331 | pbar.hide() |
325 | #using runqueue events as many as possible to update the progress bar | 332 | #using runqueue events as many as possible to update the progress bar |
333 | elif isinstance(event, bb.runqueue.runQueueTaskFailed): | ||
334 | self.emit("log", "error", "Task %s (%s) failed with exit code '%s'" % (event.taskid, event.taskstring, event.exitcode)) | ||
335 | elif isinstance(event, bb.runqueue.sceneQueueTaskFailed): | ||
336 | self.emit("log", "warn", "Setscene task %s (%s) failed with exit code '%s' - real task will be run instead" \ | ||
337 | % (event.taskid, event.taskstring, event.exitcode)) | ||
326 | elif isinstance(event, (bb.runqueue.runQueueTaskStarted, bb.runqueue.sceneQueueTaskStarted)): | 338 | elif isinstance(event, (bb.runqueue.runQueueTaskStarted, bb.runqueue.sceneQueueTaskStarted)): |
339 | if isinstance(event, bb.runqueue.sceneQueueTaskStarted): | ||
340 | self.emit("log", "info", "Running setscene task %d of %d (%s)" % \ | ||
341 | (event.stats.completed + event.stats.active + event.stats.failed + 1, | ||
342 | event.stats.total, event.taskstring)) | ||
343 | else: | ||
344 | if event.noexec: | ||
345 | tasktype = 'noexec task' | ||
346 | else: | ||
347 | tasktype = 'task' | ||
348 | self.emit("log", "info", "Running %s %s of %s (ID: %s, %s)" % \ | ||
349 | (tasktype, event.stats.completed + event.stats.active + event.stats.failed + 1, | ||
350 | event.stats.total, event.taskid, event.taskstring)) | ||
327 | message = {} | 351 | message = {} |
328 | message["eventname"] = bb.event.getName(event) | 352 | message["eventname"] = bb.event.getName(event) |
329 | num_of_completed = event.stats.completed + event.stats.failed | 353 | num_of_completed = event.stats.completed + event.stats.failed |
@@ -332,6 +356,10 @@ class RunningBuild (gobject.GObject): | |||
332 | message["title"] = "" | 356 | message["title"] = "" |
333 | message["task"] = event.taskstring | 357 | message["task"] = event.taskstring |
334 | self.emit("task-started", message) | 358 | self.emit("task-started", message) |
359 | elif isinstance(event, bb.event.MultipleProviders): | ||
360 | self.emit("log", "info", "multiple providers are available for %s%s (%s)" \ | ||
361 | % (event._is_runtime and "runtime " or "", event._item, ", ".join(event._candidates))) | ||
362 | self.emit("log", "info", "consider defining a PREFERRED_PROVIDER entry to match %s" % (event._item)) | ||
335 | elif isinstance(event, bb.event.NoProvider): | 363 | elif isinstance(event, bb.event.NoProvider): |
336 | msg = "" | 364 | msg = "" |
337 | if event._runtime: | 365 | if event._runtime: |
@@ -346,6 +374,19 @@ class RunningBuild (gobject.GObject): | |||
346 | for reason in event._reasons: | 374 | for reason in event._reasons: |
347 | msg += ("%s\n" % reason) | 375 | msg += ("%s\n" % reason) |
348 | self.emit("no-provider", msg) | 376 | self.emit("no-provider", msg) |
377 | self.emit("log", msg) | ||
378 | else: | ||
379 | if not isinstance(event, (bb.event.BuildBase, | ||
380 | bb.event.StampUpdate, | ||
381 | bb.event.ConfigParsed, | ||
382 | bb.event.RecipeParsed, | ||
383 | bb.event.RecipePreFinalise, | ||
384 | bb.runqueue.runQueueEvent, | ||
385 | bb.runqueue.runQueueExitWait, | ||
386 | bb.event.OperationStarted, | ||
387 | bb.event.OperationCompleted, | ||
388 | bb.event.OperationProgress)): | ||
389 | self.emit("log", "error", "Unknown event: %s" % (event.error if hasattr(event, 'error') else 'error')) | ||
349 | 390 | ||
350 | return | 391 | return |
351 | 392 | ||