diff options
author | Christopher Larson <chris_larson@mentor.com> | 2012-02-07 12:07:40 -0600 |
---|---|---|
committer | Christopher Larson <chris_larson@mentor.com> | 2012-02-08 08:11:17 -0600 |
commit | ce9e0946b8a412616074809c76fba54f8bff36c4 (patch) | |
tree | 78cdbc739325a29342b9b02e9d287fe2fe530d6c /lib | |
parent | 7c39cfd8e060cca8753ac4114775447b18e13067 (diff) | |
download | bitbake-contrib-ce9e0946b8a412616074809c76fba54f8bff36c4.tar.gz |
knotty: shut down more cleanly
This ensures that when we are shutting down, we drain the queue of events from
the server. This ensures that the server never gets hung up on the join of the
feeder thread associated with the event queue, thereby avoiding a bitbake hang
issue.
Also, since the third keyboard interrupt now behaves the same as the second,
removed that message.
Signed-off-by: Christopher Larson <chris_larson@mentor.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/bb/ui/knotty.py | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/lib/bb/ui/knotty.py b/lib/bb/ui/knotty.py index e1d42f787..22370efc6 100644 --- a/lib/bb/ui/knotty.py +++ b/lib/bb/ui/knotty.py @@ -118,6 +118,8 @@ def main(server, eventHandler): try: event = eventHandler.waitEvent(0.25) if event is None: + if shutdown > 1: + break continue helper.eventHandler(event) if isinstance(event, bb.runqueue.runQueueExitWait): @@ -199,18 +201,18 @@ def main(server, eventHandler): print("Loaded %d entries from dependency cache." % event.num_entries) continue - if isinstance(event, bb.command.CommandCompleted): - break if isinstance(event, bb.command.CommandFailed): return_value = event.exitcode logger.error("Command execution failed: %s", event.error) - break + shutdown = 2 + continue if isinstance(event, bb.command.CommandExit): if not return_value: return_value = event.exitcode continue - if isinstance(event, bb.cooker.CookerExit): - break + if isinstance(event, (bb.command.CommandCompleted, bb.cooker.CookerExit)): + shutdown = 2 + continue if isinstance(event, bb.event.MultipleProviders): logger.info("multiple providers are available for %s%s (%s)", event._is_runtime and "runtime " or "", event._item, @@ -269,9 +271,6 @@ def main(server, eventHandler): if ioerror.args[0] == 4: pass except KeyboardInterrupt: - if shutdown == 2: - print("\nThird Keyboard Interrupt, exit.\n") - break if shutdown == 1: print("\nSecond Keyboard Interrupt, stopping...\n") server.runCommand(["stateStop"]) |