bitbake: lib/bb/cooker: add interrupted flag to BuildCompleted event

Allow any listeners for this event (such as buildhistory.bbclass in
OpenEmbedded) to find out if the build was interrupted rather than
completing normally. The value will be 0 if not interrupted, 1 if
interrupted waiting for remaining tasks to complete, or 2 if force
interrupted (stopping any running tasks immediately).

(Bitbake rev: df2b778efd2ecc48f6c5a3ed446f6459f2250035)

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Paul Eggleton 2015-08-26 13:50:47 +01:00 committed by Richard Purdie
parent 7ee503e7c5
commit 294948c732
2 changed files with 10 additions and 3 deletions

View File

@ -1319,12 +1319,15 @@ class BBCooker:
def buildFileIdle(server, rq, abort):
msg = None
interrupted = 0
if abort or self.state == state.forceshutdown:
rq.finish_runqueue(True)
msg = "Forced shutdown"
interrupted = 2
elif self.state == state.shutdown:
rq.finish_runqueue(False)
msg = "Stopped build"
interrupted = 1
failures = 0
try:
retval = rq.execute_runqueue()
@ -1336,7 +1339,7 @@ class BBCooker:
return False
if not retval:
bb.event.fire(bb.event.BuildCompleted(len(rq.rqdata.runq_fnid), buildname, item, failures), self.expanded_data)
bb.event.fire(bb.event.BuildCompleted(len(rq.rqdata.runq_fnid), buildname, item, failures, interrupted), self.expanded_data)
self.command.finishAsyncCommand(msg)
return False
if retval is True:
@ -1352,12 +1355,15 @@ class BBCooker:
def buildTargetsIdle(server, rq, abort):
msg = None
interrupted = 0
if abort or self.state == state.forceshutdown:
rq.finish_runqueue(True)
msg = "Forced shutdown"
interrupted = 2
elif self.state == state.shutdown:
rq.finish_runqueue(False)
msg = "Stopped build"
interrupted = 1
failures = 0
try:
retval = rq.execute_runqueue()
@ -1369,7 +1375,7 @@ class BBCooker:
return False
if not retval:
bb.event.fire(bb.event.BuildCompleted(len(rq.rqdata.runq_fnid), buildname, targets, failures), self.data)
bb.event.fire(bb.event.BuildCompleted(len(rq.rqdata.runq_fnid), buildname, targets, failures, interrupted), self.data)
self.command.finishAsyncCommand(msg)
return False
if retval is True:

View File

@ -370,11 +370,12 @@ class BuildStarted(BuildBase, OperationStarted):
class BuildCompleted(BuildBase, OperationCompleted):
"""bbmake build run completed"""
def __init__(self, total, n, p, failures = 0):
def __init__(self, total, n, p, failures=0, interrupted=0):
if not failures:
OperationCompleted.__init__(self, total, "Building Succeeded")
else:
OperationCompleted.__init__(self, total, "Building Failed")
self._interrupted = interrupted
BuildBase.__init__(self, n, p, failures)
class DiskFull(Event):