diff options
Diffstat (limited to 'classes/utils.bbclass')
-rw-r--r-- | classes/utils.bbclass | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/classes/utils.bbclass b/classes/utils.bbclass index 4840c4f233..0a7a045cc4 100644 --- a/classes/utils.bbclass +++ b/classes/utils.bbclass @@ -63,6 +63,24 @@ def subprocess_setup(): # non-Python subprocesses expect. signal.signal(signal.SIGPIPE, signal.SIG_DFL) +def oe_run(d, cmd, **kwargs): + """Convenience function to run a command and return its output, raising an + exception when the command fails""" + from subprocess import PIPE + + options = { + "stdout": PIPE, + "stderr": PIPE, + "shell": True, + } + options.update(kwargs) + pipe = oe_popen(d, cmd, **options) + stdout, stderr = pipe.communicate() + if pipe.returncode != 0: + raise RuntimeError("Execution of '%s' failed with '%s':\n%s" % + (cmd, pipe.returncode, stderr)) + return stdout + def oe_popen(d, cmd, **kwargs): """ Convenience function to call out processes with our exported variables in the environment. |