1
0
mirror of https://git.yoctoproject.org/poky synced 2026-06-07 03:04:04 +00:00

lib/oe/package: Improve filedeprunner subprocess handling

Currently the exit code of the spawned program isn't checked so it can
fail and the do_package task will continue merrily upon its way.

Use subprocess.check_output() to ensure we check the exit code and
redirect stderr to stdout so if it fails, we see the error output.

We can then drop the existing exception handling as the subprocess
exception gives a much better error.

(From OE-Core rev: ce11cb449222bc47fea4f6d66ff1cc7cdc529ab9)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie
2017-09-01 14:08:08 +01:00
parent d69a876652
commit 55f0493e26
+3 -8
View File
@@ -176,8 +176,7 @@ def filedeprunner(arg):
def process_deps(pipe, pkg, pkgdest, provides, requires):
file = None
for line in pipe:
line = line.decode("utf-8")
for line in pipe.split("\n"):
m = file_re.match(line)
if m:
@@ -226,12 +225,8 @@ def filedeprunner(arg):
return provides, requires
try:
dep_popen = subprocess.Popen(shlex.split(rpmdeps) + pkgfiles, stdout=subprocess.PIPE)
provides, requires = process_deps(dep_popen.stdout, pkg, pkgdest, provides, requires)
except OSError as e:
bb.error("rpmdeps: '%s' command failed, '%s'" % (shlex.split(rpmdeps) + pkgfiles, e))
raise e
output = subprocess.check_output(shlex.split(rpmdeps) + pkgfiles, stderr=subprocess.STDOUT).decode("utf-8")
provides, requires = process_deps(output, pkg, pkgdest, provides, requires)
return (pkg, provides, requires)