mirror of
https://git.yoctoproject.org/poky
synced 2026-09-20 03:49:32 +02:00
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>
This commit is contained in:
committed by
Richard Purdie
parent
e7952c1883
commit
ce0ecf5d84
@@ -96,6 +96,12 @@ class TaskFailed(TaskBase):
|
|||||||
self.errprinted = errprinted
|
self.errprinted = errprinted
|
||||||
super(TaskFailed, self).__init__(task, metadata)
|
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):
|
class TaskInvalid(TaskBase):
|
||||||
|
|
||||||
def __init__(self, task, metadata):
|
def __init__(self, task, metadata):
|
||||||
@@ -334,7 +340,9 @@ def _exec_task(fn, task, d, quieterr):
|
|||||||
for func in (postfuncs or '').split():
|
for func in (postfuncs or '').split():
|
||||||
exec_func(func, localdata)
|
exec_func(func, localdata)
|
||||||
except FuncFailed as exc:
|
except FuncFailed as exc:
|
||||||
if not quieterr:
|
if quieterr:
|
||||||
|
event.fire(TaskFailedSilent(task, logfn, localdata), localdata)
|
||||||
|
else:
|
||||||
errprinted = errchk.triggered
|
errprinted = errchk.triggered
|
||||||
logger.error(str(exc))
|
logger.error(str(exc))
|
||||||
event.fire(TaskFailed(task, logfn, localdata, errprinted), localdata)
|
event.fire(TaskFailed(task, logfn, localdata, errprinted), localdata)
|
||||||
|
|||||||
@@ -1724,6 +1724,15 @@ class runQueueEvent(bb.event.Event):
|
|||||||
self.stats = stats.copy()
|
self.stats = stats.copy()
|
||||||
bb.event.Event.__init__(self)
|
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):
|
class runQueueTaskStarted(runQueueEvent):
|
||||||
"""
|
"""
|
||||||
Event notifing a task was started
|
Event notifing a task was started
|
||||||
@@ -1732,12 +1741,12 @@ class runQueueTaskStarted(runQueueEvent):
|
|||||||
runQueueEvent.__init__(self, task, stats, rq)
|
runQueueEvent.__init__(self, task, stats, rq)
|
||||||
self.noexec = noexec
|
self.noexec = noexec
|
||||||
|
|
||||||
class sceneQueueTaskStarted(runQueueEvent):
|
class sceneQueueTaskStarted(sceneQueueEvent):
|
||||||
"""
|
"""
|
||||||
Event notifing a setscene task was started
|
Event notifing a setscene task was started
|
||||||
"""
|
"""
|
||||||
def __init__(self, task, stats, rq, noexec=False):
|
def __init__(self, task, stats, rq, noexec=False):
|
||||||
runQueueEvent.__init__(self, task, stats, rq)
|
sceneQueueEvent.__init__(self, task, stats, rq)
|
||||||
self.noexec = noexec
|
self.noexec = noexec
|
||||||
|
|
||||||
class runQueueTaskFailed(runQueueEvent):
|
class runQueueTaskFailed(runQueueEvent):
|
||||||
@@ -1748,14 +1757,13 @@ class runQueueTaskFailed(runQueueEvent):
|
|||||||
runQueueEvent.__init__(self, task, stats, rq)
|
runQueueEvent.__init__(self, task, stats, rq)
|
||||||
self.exitcode = exitcode
|
self.exitcode = exitcode
|
||||||
|
|
||||||
class sceneQueueTaskFailed(runQueueEvent):
|
class sceneQueueTaskFailed(sceneQueueEvent):
|
||||||
"""
|
"""
|
||||||
Event notifing a setscene task failed
|
Event notifing a setscene task failed
|
||||||
"""
|
"""
|
||||||
def __init__(self, task, stats, exitcode, rq):
|
def __init__(self, task, stats, exitcode, rq):
|
||||||
runQueueEvent.__init__(self, task, stats, rq)
|
sceneQueueEvent.__init__(self, task, stats, rq)
|
||||||
self.exitcode = exitcode
|
self.exitcode = exitcode
|
||||||
self.taskstring = rq.rqdata.get_user_idstring(task, "_setscene")
|
|
||||||
|
|
||||||
class runQueueTaskCompleted(runQueueEvent):
|
class runQueueTaskCompleted(runQueueEvent):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -238,6 +238,10 @@ def main(server, eventHandler):
|
|||||||
logger.error("%s", reason)
|
logger.error("%s", reason)
|
||||||
continue
|
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 isinstance(event, bb.runqueue.runQueueTaskStarted):
|
||||||
if event.noexec:
|
if event.noexec:
|
||||||
tasktype = 'noexec task'
|
tasktype = 'noexec task'
|
||||||
@@ -256,6 +260,11 @@ def main(server, eventHandler):
|
|||||||
event.taskid, event.taskstring, event.exitcode)
|
event.taskid, event.taskstring, event.exitcode)
|
||||||
continue
|
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
|
# ignore
|
||||||
if isinstance(event, (bb.event.BuildBase,
|
if isinstance(event, (bb.event.BuildBase,
|
||||||
bb.event.StampUpdate,
|
bb.event.StampUpdate,
|
||||||
|
|||||||
@@ -32,9 +32,8 @@ class BBUIHelper:
|
|||||||
if isinstance(event, bb.build.TaskSucceeded):
|
if isinstance(event, bb.build.TaskSucceeded):
|
||||||
del self.running_tasks[event.pid]
|
del self.running_tasks[event.pid]
|
||||||
self.needUpdate = True
|
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]
|
del self.running_tasks[event.pid]
|
||||||
self.failed_tasks.append( { 'title' : "%s %s" % (event._package, event._task)})
|
|
||||||
self.needUpdate = True
|
self.needUpdate = True
|
||||||
|
|
||||||
def getTasks(self):
|
def getTasks(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user