diff options
| -rw-r--r-- | bitbake/lib/bb/command.py | 13 | ||||
| -rw-r--r-- | bitbake/lib/bb/cooker.py | 13 | ||||
| -rw-r--r-- | bitbake/lib/bb/server/process.py | 11 |
3 files changed, 20 insertions, 17 deletions
diff --git a/bitbake/lib/bb/command.py b/bitbake/lib/bb/command.py index cbac07f516..732327d84d 100644 --- a/bitbake/lib/bb/command.py +++ b/bitbake/lib/bb/command.py | |||
| @@ -128,22 +128,19 @@ class Command: | |||
| 128 | else: | 128 | else: |
| 129 | return False | 129 | return False |
| 130 | except KeyboardInterrupt as exc: | 130 | except KeyboardInterrupt as exc: |
| 131 | self.finishAsyncCommand("Interrupted") | 131 | return bb.server.process.idleFinish("Interrupted") |
| 132 | return False | ||
| 133 | except SystemExit as exc: | 132 | except SystemExit as exc: |
| 134 | arg = exc.args[0] | 133 | arg = exc.args[0] |
| 135 | if isinstance(arg, str): | 134 | if isinstance(arg, str): |
| 136 | self.finishAsyncCommand(arg) | 135 | return bb.server.process.idleFinish(arg) |
| 137 | else: | 136 | else: |
| 138 | self.finishAsyncCommand("Exited with %s" % arg) | 137 | return bb.server.process.idleFinish("Exited with %s" % arg) |
| 139 | return False | ||
| 140 | except Exception as exc: | 138 | except Exception as exc: |
| 141 | import traceback | 139 | import traceback |
| 142 | if isinstance(exc, bb.BBHandledException): | 140 | if isinstance(exc, bb.BBHandledException): |
| 143 | self.finishAsyncCommand("") | 141 | return bb.server.process.idleFinish("") |
| 144 | else: | 142 | else: |
| 145 | self.finishAsyncCommand(traceback.format_exc()) | 143 | return bb.server.process.idleFinish(traceback.format_exc()) |
| 146 | return False | ||
| 147 | 144 | ||
| 148 | def finishAsyncCommand(self, msg=None, code=None): | 145 | def finishAsyncCommand(self, msg=None, code=None): |
| 149 | if msg or msg == "": | 146 | if msg or msg == "": |
diff --git a/bitbake/lib/bb/cooker.py b/bitbake/lib/bb/cooker.py index adc232e288..ded9369787 100644 --- a/bitbake/lib/bb/cooker.py +++ b/bitbake/lib/bb/cooker.py | |||
| @@ -1489,23 +1489,21 @@ class BBCooker: | |||
| 1489 | failures += len(exc.args) | 1489 | failures += len(exc.args) |
| 1490 | retval = False | 1490 | retval = False |
| 1491 | except SystemExit as exc: | 1491 | except SystemExit as exc: |
| 1492 | self.command.finishAsyncCommand(str(exc)) | ||
| 1493 | if quietlog: | 1492 | if quietlog: |
| 1494 | bb.runqueue.logger.setLevel(rqloglevel) | 1493 | bb.runqueue.logger.setLevel(rqloglevel) |
| 1495 | return False | 1494 | return bb.server.process.idleFinish(str(exc)) |
| 1496 | 1495 | ||
| 1497 | if not retval: | 1496 | if not retval: |
| 1498 | if fireevents: | 1497 | if fireevents: |
| 1499 | bb.event.fire(bb.event.BuildCompleted(len(rq.rqdata.runtaskentries), buildname, item, failures, interrupted), self.databuilder.mcdata[mc]) | 1498 | bb.event.fire(bb.event.BuildCompleted(len(rq.rqdata.runtaskentries), buildname, item, failures, interrupted), self.databuilder.mcdata[mc]) |
| 1500 | bb.event.disable_heartbeat() | 1499 | bb.event.disable_heartbeat() |
| 1501 | self.command.finishAsyncCommand(msg) | ||
| 1502 | # We trashed self.recipecaches above | 1500 | # We trashed self.recipecaches above |
| 1503 | self.parsecache_valid = False | 1501 | self.parsecache_valid = False |
| 1504 | self.configuration.limited_deps = False | 1502 | self.configuration.limited_deps = False |
| 1505 | bb.parse.siggen.reset(self.data) | 1503 | bb.parse.siggen.reset(self.data) |
| 1506 | if quietlog: | 1504 | if quietlog: |
| 1507 | bb.runqueue.logger.setLevel(rqloglevel) | 1505 | bb.runqueue.logger.setLevel(rqloglevel) |
| 1508 | return False | 1506 | return bb.server.process.idleFinish(msg) |
| 1509 | if retval is True: | 1507 | if retval is True: |
| 1510 | return True | 1508 | return True |
| 1511 | return retval | 1509 | return retval |
| @@ -1535,8 +1533,7 @@ class BBCooker: | |||
| 1535 | failures += len(exc.args) | 1533 | failures += len(exc.args) |
| 1536 | retval = False | 1534 | retval = False |
| 1537 | except SystemExit as exc: | 1535 | except SystemExit as exc: |
| 1538 | self.command.finishAsyncCommand(str(exc)) | 1536 | return bb.server.process.idleFinish(str(exc)) |
| 1539 | return False | ||
| 1540 | 1537 | ||
| 1541 | if not retval: | 1538 | if not retval: |
| 1542 | try: | 1539 | try: |
| @@ -1544,8 +1541,8 @@ class BBCooker: | |||
| 1544 | bb.event.fire(bb.event.BuildCompleted(len(rq.rqdata.runtaskentries), buildname, targets, failures, interrupted), self.databuilder.mcdata[mc]) | 1541 | bb.event.fire(bb.event.BuildCompleted(len(rq.rqdata.runtaskentries), buildname, targets, failures, interrupted), self.databuilder.mcdata[mc]) |
| 1545 | finally: | 1542 | finally: |
| 1546 | bb.event.disable_heartbeat() | 1543 | bb.event.disable_heartbeat() |
| 1547 | self.command.finishAsyncCommand(msg) | 1544 | return bb.server.process.idleFinish(msg) |
| 1548 | return False | 1545 | |
| 1549 | if retval is True: | 1546 | if retval is True: |
| 1550 | return True | 1547 | return True |
| 1551 | return retval | 1548 | return retval |
diff --git a/bitbake/lib/bb/server/process.py b/bitbake/lib/bb/server/process.py index eba28ad983..5acc105e08 100644 --- a/bitbake/lib/bb/server/process.py +++ b/bitbake/lib/bb/server/process.py | |||
| @@ -71,6 +71,10 @@ def get_lockfile_process_msg(lockfile): | |||
| 71 | return procs.decode("utf-8") | 71 | return procs.decode("utf-8") |
| 72 | return None | 72 | return None |
| 73 | 73 | ||
| 74 | class idleFinish(): | ||
| 75 | def __init__(self, msg): | ||
| 76 | self.msg = msg | ||
| 77 | |||
| 74 | class ProcessServer(): | 78 | class ProcessServer(): |
| 75 | profile_filename = "profile.log" | 79 | profile_filename = "profile.log" |
| 76 | profile_processed_filename = "profile.log.processed" | 80 | profile_processed_filename = "profile.log.processed" |
| @@ -361,7 +365,12 @@ class ProcessServer(): | |||
| 361 | for function, data in list(self._idlefuns.items()): | 365 | for function, data in list(self._idlefuns.items()): |
| 362 | try: | 366 | try: |
| 363 | retval = function(self, data, False) | 367 | retval = function(self, data, False) |
| 364 | if retval is False: | 368 | if isinstance(retval, idleFinish): |
| 369 | serverlog("Removing idle function %s at idleFinish" % str(function)) | ||
| 370 | del self._idlefuns[function] | ||
| 371 | self.cooker.command.finishAsyncCommand(retval.msg) | ||
| 372 | nextsleep = None | ||
| 373 | elif retval is False: | ||
| 365 | serverlog("Removing idle function %s" % str(function)) | 374 | serverlog("Removing idle function %s" % str(function)) |
| 366 | del self._idlefuns[function] | 375 | del self._idlefuns[function] |
| 367 | nextsleep = None | 376 | nextsleep = None |
