summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
authorPaul Eggleton <paul.eggleton@linux.intel.com>2012-02-27 18:54:11 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2012-02-28 12:27:22 +0000
commitce0ecf5d847b168ad05117cdd1f5fdcc561d770d (patch)
tree994a7639091021cff978e90c74e2db6cb8b27e81 /bitbake
parente7952c188374508bcf65903d85ae27a593de7465 (diff)
downloadast2050-yocto-poky-ce0ecf5d847b168ad05117cdd1f5fdcc561d770d.zip
ast2050-yocto-poky-ce0ecf5d847b168ad05117cdd1f5fdcc561d770d.tar.gz
bitbake: fix setscene task start/failure handling
* When a setscene task starts, print out that it's starting in the UI (ensuring we get the correct task name) * When a setscene task fails, ensure we remove it from the list of running tasks so that if you break out any time afterwards it is not still listed. (Bitbake rev: e8a3499c95a6d4f2b8fed002fb9504733c5be3c6) Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/build.py10
-rw-r--r--bitbake/lib/bb/runqueue.py18
-rw-r--r--bitbake/lib/bb/ui/knotty.py9
-rw-r--r--bitbake/lib/bb/ui/uihelper.py3
4 files changed, 32 insertions, 8 deletions
diff --git a/bitbake/lib/bb/build.py b/bitbake/lib/bb/build.py
index e85d7c4..b7031ab 100644
--- a/bitbake/lib/bb/build.py
+++ b/bitbake/lib/bb/build.py
@@ -96,6 +96,12 @@ class TaskFailed(TaskBase):
self.errprinted = errprinted
super(TaskFailed, self).__init__(task, metadata)
+class TaskFailedSilent(TaskBase):
+ """Task execution failed (silently)"""
+ def __init__(self, task, logfile, metadata):
+ self.logfile = logfile
+ super(TaskFailedSilent, self).__init__(task, metadata)
+
class TaskInvalid(TaskBase):
def __init__(self, task, metadata):
@@ -334,7 +340,9 @@ def _exec_task(fn, task, d, quieterr):
for func in (postfuncs or '').split():
exec_func(func, localdata)
except FuncFailed as exc:
- if not quieterr:
+ if quieterr:
+ event.fire(TaskFailedSilent(task, logfn, localdata), localdata)
+ else:
errprinted = errchk.triggered
logger.error(str(exc))
event.fire(TaskFailed(task, logfn, localdata, errprinted), localdata)
diff --git a/bitbake/lib/bb/runqueue.py b/bitbake/lib/bb/runqueue.py
index 0e5d5c3..d4b2cd4 100644
--- a/bitbake/lib/bb/runqueue.py
+++ b/bitbake/lib/bb/runqueue.py
@@ -1724,6 +1724,15 @@ class runQueueEvent(bb.event.Event):
self.stats = stats.copy()
bb.event.Event.__init__(self)
+class sceneQueueEvent(runQueueEvent):
+ """
+ Base sceneQueue event class
+ """
+ def __init__(self, task, stats, rq, noexec=False):
+ runQueueEvent.__init__(self, task, stats, rq)
+ realtask = rq.rqdata.runq_setscene[task]
+ self.taskstring = rq.rqdata.get_user_idstring(realtask, "_setscene")
+
class runQueueTaskStarted(runQueueEvent):
"""
Event notifing a task was started
@@ -1732,12 +1741,12 @@ class runQueueTaskStarted(runQueueEvent):
runQueueEvent.__init__(self, task, stats, rq)
self.noexec = noexec
-class sceneQueueTaskStarted(runQueueEvent):
+class sceneQueueTaskStarted(sceneQueueEvent):
"""
Event notifing a setscene task was started
"""
def __init__(self, task, stats, rq, noexec=False):
- runQueueEvent.__init__(self, task, stats, rq)
+ sceneQueueEvent.__init__(self, task, stats, rq)
self.noexec = noexec
class runQueueTaskFailed(runQueueEvent):
@@ -1748,14 +1757,13 @@ class runQueueTaskFailed(runQueueEvent):
runQueueEvent.__init__(self, task, stats, rq)
self.exitcode = exitcode
-class sceneQueueTaskFailed(runQueueEvent):
+class sceneQueueTaskFailed(sceneQueueEvent):
"""
Event notifing a setscene task failed
"""
def __init__(self, task, stats, exitcode, rq):
- runQueueEvent.__init__(self, task, stats, rq)
+ sceneQueueEvent.__init__(self, task, stats, rq)
self.exitcode = exitcode
- self.taskstring = rq.rqdata.get_user_idstring(task, "_setscene")
class runQueueTaskCompleted(runQueueEvent):
"""
diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py
index e2e6ac3..14989d4 100644
--- a/bitbake/lib/bb/ui/knotty.py
+++ b/bitbake/lib/bb/ui/knotty.py
@@ -238,6 +238,10 @@ def main(server, eventHandler):
logger.error("%s", reason)
continue
+ if isinstance(event, bb.runqueue.sceneQueueTaskStarted):
+ logger.info("Running setscene task %d of %d (%s)" % (event.stats.completed + event.stats.active + event.stats.failed + 1, event.stats.total, event.taskstring))
+ continue
+
if isinstance(event, bb.runqueue.runQueueTaskStarted):
if event.noexec:
tasktype = 'noexec task'
@@ -256,6 +260,11 @@ def main(server, eventHandler):
event.taskid, event.taskstring, event.exitcode)
continue
+ if isinstance(event, bb.runqueue.sceneQueueTaskFailed):
+ logger.warn("Setscene task %s (%s) failed with exit code '%s' - real task will be run instead",
+ event.taskid, event.taskstring, event.exitcode)
+ continue
+
# ignore
if isinstance(event, (bb.event.BuildBase,
bb.event.StampUpdate,
diff --git a/bitbake/lib/bb/ui/uihelper.py b/bitbake/lib/bb/ui/uihelper.py
index bbf5135..4116dab 100644
--- a/bitbake/lib/bb/ui/uihelper.py
+++ b/bitbake/lib/bb/ui/uihelper.py
@@ -32,9 +32,8 @@ class BBUIHelper:
if isinstance(event, bb.build.TaskSucceeded):
del self.running_tasks[event.pid]
self.needUpdate = True
- if isinstance(event, bb.build.TaskFailed):
+ if isinstance(event, bb.build.TaskFailed) or isinstance(event, bb.build.TaskFailedSilent):
del self.running_tasks[event.pid]
- self.failed_tasks.append( { 'title' : "%s %s" % (event._package, event._task)})
self.needUpdate = True
def getTasks(self):
OpenPOWER on IntegriCloud