[OE-core] [PATCH 1/3] lib/oe/package: Improve filedeprunner subprocess handling

Peter Kjellerstedt peter.kjellerstedt at axis.com
Fri Sep 1 16:32:24 UTC 2017


> -----Original Message-----
> From: openembedded-core-bounces at lists.openembedded.org
> [mailto:openembedded-core-bounces at lists.openembedded.org] On Behalf Of
> Richard Purdie
> Sent: den 1 september 2017 16:21
> To: openembedded-core at lists.openembedded.org
> Subject: [OE-core] [PATCH 1/3] 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.
> 
> Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
> ---
>  meta/lib/oe/package.py | 11 +++--------
>  1 file changed, 3 insertions(+), 8 deletions(-)
> 
> diff --git a/meta/lib/oe/package.py b/meta/lib/oe/package.py
> index fcee389..1e5c3aa 100644
> --- a/meta/lib/oe/package.py
> +++ b/meta/lib/oe/package.py
> @@ -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)
> 
> --
> 2.7.4

Even with these changes applied, I still see texinfo succeed to build 
even when it should not (i.e., without having applied the patch to 
package_deb.bbclass that I just sent).

//Peter




More information about the Openembedded-core mailing list