From: Chris Larson Date: Tue, 24 Aug 2010 21:06:01 +0000 (-0700) Subject: oe.utils: add oe_run convenience function X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=013d632d46ef474086db46158c74f2ae158ae9ff;p=openembedded.git 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 --- 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.