From 013d632d46ef474086db46158c74f2ae158ae9ff Mon Sep 17 00:00:00 2001 From: Chris Larson Date: Tue, 24 Aug 2010 14:06:01 -0700 Subject: [PATCH] oe.utils: add oe_run convenience function This one is intended to be used from python snippets in variables. It returns the stdout of the subprocess and raises an exception if the exit code isn't 0. Signed-off-by: Chris Larson --- classes/utils.bbclass | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) 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. -- 2.39.5