]> code.ossystems Code Review - openembedded-core.git/commitdiff
combo-layer: runcmd() enhancements
authorPatrick Ohly <patrick.ohly@intel.com>
Mon, 2 May 2016 13:27:27 +0000 (15:27 +0200)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 9 May 2016 07:03:59 +0000 (08:03 +0100)
Allow setting the environment. Due to a subprocess quirk, it must
always be set explicitly (reuses the one from the previous call if not
set, instead of falling back to os.environ).

Embedding nul characters will be useful for parsing git output more
reliably; support dumping such output a bit better.

Signed-off-by: Patrick Ohly <patrick.ohly@intel.com>
Signed-off-by: Ross Burton <ross.burton@intel.com>
scripts/combo-layer

index 41d69f8ddba034cdf1117810e50bec3452f888d5..9297d5973d481ff1e7028a09e54b546280158777 100755 (executable)
@@ -174,7 +174,7 @@ class Configuration(object):
             logger.error("ERROR: patchutils package is missing, please install it (e.g. # apt-get install patchutils)")
             sys.exit(1)
 
-def runcmd(cmd,destdir=None,printerr=True,out=None):
+def runcmd(cmd,destdir=None,printerr=True,out=None,env=None):
     """
         execute command, raise CalledProcessError if fail
         return output if succeed
@@ -186,7 +186,7 @@ def runcmd(cmd,destdir=None,printerr=True,out=None):
     else:
         err = os.tmpfile()
     try:
-        subprocess.check_call(cmd, stdout=out, stderr=err, cwd=destdir, shell=isinstance(cmd, str))
+        subprocess.check_call(cmd, stdout=out, stderr=err, cwd=destdir, shell=isinstance(cmd, str), env=env or os.environ)
     except subprocess.CalledProcessError,e:
         err.seek(0)
         if printerr:
@@ -195,7 +195,7 @@ def runcmd(cmd,destdir=None,printerr=True,out=None):
 
     err.seek(0)
     output = err.read()
-    logger.debug("output: %s" % output )
+    logger.debug("output: %s" % output.replace(chr(0), '\\0'))
     return output
 
 def action_init(conf, args):