diff options
author | Tomasz Dziendzielski <tomasz.dziendzielski@gmail.com> | 2021-01-29 12:38:08 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2021-01-30 10:41:04 +0000 |
commit | 5e2450731c1f70fb72af0b8349905b359d3cd2b1 (patch) | |
tree | 9f27eecfe0311294ca8ca0a1c8af9898641f6dea /meta/lib/oe | |
parent | 86b42289bda5bc2a4eff221ab476f170dd3d3794 (diff) | |
download | poky-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.py | 14 |
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: |