diff --git a/site_scons/gem5_scons/util.py b/site_scons/gem5_scons/util.py index be0a5a5880..cca39a7af3 100644 --- a/site_scons/gem5_scons/util.py +++ b/site_scons/gem5_scons/util.py @@ -82,14 +82,18 @@ def readCommand(cmd, **kwargs): kwargs.setdefault("stdout", PIPE) kwargs.setdefault("stderr", STDOUT) kwargs.setdefault("close_fds", True) - try: - subp = Popen(cmd, **kwargs) - except Exception as e: - if no_exception: - return -1, exception - raise - output = subp.communicate()[0].decode("utf-8") + p = Popen(cmd, **kwargs) + return_code = p.wait() + output = p.communicate()[0].decode("utf-8") + + if return_code != 0: + if no_exception: + return return_code, None + raise Exception( + f"Command '{cmd}' failed with return code {return_code}:\n{output}" + ) + return output