From: Alexandru DAMIAN Date: Tue, 19 Nov 2013 16:46:41 +0000 (+0000) Subject: bitbake: cooker, toaster: mark interrupted builds as failed X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9a658e8b1511f1b9f91663f546f748fdfbc8965f;p=thirdparty%2Fopenembedded%2Fopenembedded-core-contrib.git 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. Signed-off-by: Alexandru DAMIAN Signed-off-by: Richard Purdie --- diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py index 524ba1182ca..3295f6c8226 100644 --- a/lib/bb/cooker.py +++ b/lib/bb/cooker.py @@ -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 diff --git a/lib/bb/ui/toasterui.py b/lib/bb/ui/toasterui.py index d2dba256c43..8e30a91109b 100644 --- a/lib/bb/ui/toasterui.py +++ b/lib/bb/ui/toasterui.py @@ -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)