summaryrefslogtreecommitdiffstats
path: root/classes/utils.bbclass
diff options
context:
space:
mode:
Diffstat (limited to 'classes/utils.bbclass')
-rw-r--r--classes/utils.bbclass18
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.