summaryrefslogtreecommitdiffstats
path: root/meta/lib/oe
diff options
context:
space:
mode:
authorTomasz Dziendzielski <tomasz.dziendzielski@gmail.com>2021-01-29 12:38:08 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2021-01-30 10:41:04 +0000
commit5e2450731c1f70fb72af0b8349905b359d3cd2b1 (patch)
tree9f27eecfe0311294ca8ca0a1c8af9898641f6dea /meta/lib/oe
parent86b42289bda5bc2a4eff221ab476f170dd3d3794 (diff)
downloadpoky-5e2450731c1f70fb72af0b8349905b359d3cd2b1.tar.gz
lib/oe/patch.py: Don't return command stderr from runcmd function
If a function returns any stderr it will be passed to extractPatches and used as path to patch. For example subprocess command output can be: | sh: warning: setlocale: LC_ALL: cannot change locale (en_US.UTF-8) | /tmp/oepatchhuqle8fj/0001-foo.patch | /tmp/oepatchhuqle8fj/0002-bar.patch that will result in: | FileNotFoundError: [Errno 2] No such file or directory: 'sh:' To fix this I separated output, made the function return stdout and print stderr only in case of command error. (From OE-Core rev: 482589e2cc7c3ddeefb0a0fb98d97a9cbb18c9ec) Signed-off-by: Tomasz Dziendzielski <tomasz.dziendzielski@gmail.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib/oe')
-rw-r--r--meta/lib/oe/patch.py14
1 files changed, 9 insertions, 5 deletions
diff --git a/meta/lib/oe/patch.py b/meta/lib/oe/patch.py
index 40755fbb03..8ad70f53f1 100644
--- a/meta/lib/oe/patch.py
+++ b/meta/lib/oe/patch.py
@@ -38,15 +38,19 @@ def runcmd(args, dir = None):
38 args = [ pipes.quote(str(arg)) for arg in args ] 38 args = [ pipes.quote(str(arg)) for arg in args ]
39 cmd = " ".join(args) 39 cmd = " ".join(args)
40 # print("cmd: %s" % cmd) 40 # print("cmd: %s" % cmd)
41 (exitstatus, output) = subprocess.getstatusoutput(cmd) 41 proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
42 stdout, stderr = proc.communicate()
43 stdout = stdout.decode('utf-8')
44 stderr = stderr.decode('utf-8')
45 exitstatus = proc.returncode
42 if exitstatus != 0: 46 if exitstatus != 0:
43 raise CmdError(cmd, exitstatus >> 8, output) 47 raise CmdError(cmd, exitstatus >> 8, "stdout: %s\nstderr: %s" % (stdout, stderr))
44 if " fuzz " in output and "Hunk " in output: 48 if " fuzz " in stdout and "Hunk " in stdout:
45 # Drop patch fuzz info with header and footer to log file so 49 # Drop patch fuzz info with header and footer to log file so
46 # insane.bbclass can handle to throw error/warning 50 # insane.bbclass can handle to throw error/warning
47 bb.note("--- Patch fuzz start ---\n%s\n--- Patch fuzz end ---" % format(output)) 51 bb.note("--- Patch fuzz start ---\n%s\n--- Patch fuzz end ---" % format(stdout))
48 52
49 return output 53 return stdout
50 54
51 finally: 55 finally:
52 if dir: 56 if dir: