support/testing/infra: improve run_cmd_on_host() to show stdout/stderr
When run_cmd_on_host() runs a command that fails, we only get an exception with no details to debug what happened. Let's improve that by catching the exception, and printing the command output. This requires redirecting stderr to stdout (instead of /dev/null) and asking to get the output in text format. Signed-off-by: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Julien Olivain <ju.o@free.fr>
This commit is contained in:
committed by
Julien Olivain
parent
8913d7c810
commit
01dc13adfb
@@ -59,11 +59,20 @@ def download(dldir, filename):
|
||||
|
||||
def run_cmd_on_host(builddir, cmd):
|
||||
"""Call subprocess.check_output and return the text output."""
|
||||
out = subprocess.check_output(cmd,
|
||||
stderr=open(os.devnull, "w"),
|
||||
cwd=builddir,
|
||||
env={"LANG": "C"},
|
||||
universal_newlines=True)
|
||||
try:
|
||||
out = subprocess.check_output(cmd,
|
||||
cwd=builddir,
|
||||
env={"LANG": "C"},
|
||||
stderr=subprocess.STDOUT,
|
||||
text=True,
|
||||
universal_newlines=True)
|
||||
except subprocess.CalledProcessError as e:
|
||||
print(f"Command failed with return code {e.returncode}")
|
||||
print("=== STDOUT/STDERR ===")
|
||||
print(e.output)
|
||||
print("=====================")
|
||||
raise
|
||||
|
||||
return out
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user