summaryrefslogtreecommitdiffstats
path: root/bitbake
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake')
-rw-r--r--bitbake/lib/bb/ui/knotty.py18
1 files changed, 14 insertions, 4 deletions
diff --git a/bitbake/lib/bb/ui/knotty.py b/bitbake/lib/bb/ui/knotty.py
index 1c72aa2947..35736ade03 100644
--- a/bitbake/lib/bb/ui/knotty.py
+++ b/bitbake/lib/bb/ui/knotty.py
@@ -689,17 +689,27 @@ def main(server, eventHandler, params, tf = TerminalFilter):
689 if params.observe_only: 689 if params.observe_only:
690 print("\nKeyboard Interrupt, exiting observer...") 690 print("\nKeyboard Interrupt, exiting observer...")
691 main.shutdown = 2 691 main.shutdown = 2
692 if not params.observe_only and main.shutdown == 1: 692
693 def state_force_shutdown():
693 print("\nSecond Keyboard Interrupt, stopping...\n") 694 print("\nSecond Keyboard Interrupt, stopping...\n")
694 _, error = server.runCommand(["stateForceShutdown"]) 695 _, error = server.runCommand(["stateForceShutdown"])
695 if error: 696 if error:
696 logger.error("Unable to cleanly stop: %s" % error) 697 logger.error("Unable to cleanly stop: %s" % error)
698
699 if not params.observe_only and main.shutdown == 1:
700 state_force_shutdown()
701
697 if not params.observe_only and main.shutdown == 0: 702 if not params.observe_only and main.shutdown == 0:
698 print("\nKeyboard Interrupt, closing down...\n") 703 print("\nKeyboard Interrupt, closing down...\n")
699 interrupted = True 704 interrupted = True
700 _, error = server.runCommand(["stateShutdown"]) 705 # Capture the second KeyboardInterrupt during stateShutdown is running
701 if error: 706 try:
702 logger.error("Unable to cleanly shutdown: %s" % error) 707 _, error = server.runCommand(["stateShutdown"])
708 if error:
709 logger.error("Unable to cleanly shutdown: %s" % error)
710 except KeyboardInterrupt:
711 state_force_shutdown()
712
703 main.shutdown = main.shutdown + 1 713 main.shutdown = main.shutdown + 1
704 pass 714 pass
705 except Exception as e: 715 except Exception as e: