bitbake: bitbake: cooker, toaster: mark interrupted builds as failed

This patch changes bitbake to log an error to the
command line when the build is interrupted via Ctrl-C.

This is needed to inform the user that not all tasks
required for the build have been executed, and
the build is not complete.

Internally, the Bitbake server will return a CommandFailed
event that will be logged by Toaster as build failure.

(Bitbake rev: 9a658e8b1511f1b9f91663f546f748fdfbc8965f)

Signed-off-by: Alexandru DAMIAN <alexandru.damian@intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Alexandru DAMIAN
2013-11-19 16:46:41 +00:00
committed by Richard Purdie
parent 10717e5a0a
commit e19ee57c96
2 changed files with 15 additions and 2 deletions

View File

@@ -1109,10 +1109,13 @@ class BBCooker:
def buildFileIdle(server, rq, abort):
msg = None
if abort or self.state == state.forceshutdown:
rq.finish_runqueue(True)
msg = "Forced shutdown"
elif self.state == state.shutdown:
rq.finish_runqueue(False)
msg = "Stopped build"
failures = 0
try:
retval = rq.execute_runqueue()
@@ -1125,7 +1128,7 @@ class BBCooker:
if not retval:
bb.event.fire(bb.event.BuildCompleted(len(rq.rqdata.runq_fnid), buildname, item, failures), self.event_data)
self.command.finishAsyncCommand()
self.command.finishAsyncCommand(msg)
return False
if retval is True:
return True
@@ -1139,10 +1142,13 @@ class BBCooker:
"""
def buildTargetsIdle(server, rq, abort):
msg = None
if abort or self.state == state.forceshutdown:
rq.finish_runqueue(True)
msg = "Forced shutdown"
elif self.state == state.shutdown:
rq.finish_runqueue(False)
msg = "Stopped build"
failures = 0
try:
retval = rq.execute_runqueue()
@@ -1155,7 +1161,7 @@ class BBCooker:
if not retval:
bb.event.fire(bb.event.BuildCompleted(len(rq.rqdata.runq_fnid), buildname, targets, failures), self.data)
self.command.finishAsyncCommand()
self.command.finishAsyncCommand(msg)
return False
if retval is True:
return True

View File

@@ -217,6 +217,13 @@ def main(server, eventHandler, params ):
if isinstance(event, (bb.command.CommandCompleted,
bb.command.CommandFailed,
bb.command.CommandExit)):
if (isinstance(event, bb.command.CommandFailed)):
event.levelno = format.ERROR
event.msg = event.error
event.pathname = ""
event.lineno = 0
buildinfohelper.store_log_event(event)
errors += 1
buildinfohelper.update_build_information(event, errors, warnings, taskfailures)