From 952e04cd581672ccaa3c9b58227af5b45bd1f870 Mon Sep 17 00:00:00 2001 From: Ross Burton Date: Tue, 26 Apr 2022 13:33:58 +0100 Subject: [PATCH] runfvp: propagate the exit code correctly runfvp could encounter an error but the exit code remained as 0. Signed-off-by: Ross Burton Signed-off-by: Jon Mason --- scripts/runfvp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/scripts/runfvp b/scripts/runfvp index c20455fd..5cab0949 100755 --- a/scripts/runfvp +++ b/scripts/runfvp @@ -221,6 +221,9 @@ async def start_fvp(cli, console_cb): if await fvp_process.wait() != 0: logger.info(f"{cli[0]} quit with code {fvp_process.returncode}") + return fvp_process.returncode + else: + return 0 def runfvp(cli_args): args, fvp_args = parse_args(cli_args) @@ -234,7 +237,7 @@ def runfvp(cli_args): expected_terminal = config["console"] if not expected_terminal: logger.error("--console used but FVP_CONSOLE not set in machine configuration") - sys.exit(1) + return 1 else: expected_terminal = None @@ -252,9 +255,10 @@ def runfvp(cli_args): # When we can assume Py3.7+, this can simply be asyncio.run() loop = asyncio.get_event_loop() console_cb = expected_terminal and console_started or None - loop.run_until_complete(asyncio.gather(start_fvp(cli, console_cb=console_cb))) + return loop.run_until_complete(start_fvp(cli, console_cb=console_cb)) except asyncio.CancelledError: - pass + # This means telnet exited, which isn't an error + return 0 if __name__ == "__main__": try: @@ -264,6 +268,6 @@ if __name__ == "__main__": if sys.stdin.isatty(): signal.signal(signal.SIGTTOU, signal.SIG_IGN) os.tcsetpgrp(sys.stdin.fileno(), os.getpgrp()) - runfvp(sys.argv[1:]) + sys.exit(runfvp(sys.argv[1:])) except KeyboardInterrupt: pass