summaryrefslogtreecommitdiffstats
path: root/meta/lib
diff options
context:
space:
mode:
authorMartin Jansa <martin.jansa@gmail.com>2014-02-23 11:44:22 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2014-03-07 14:58:46 +0000
commitff8d8fbc9e49bf9a6e7499a9550b343f5bf4942a (patch)
treec235668fd864faa63597d1a2295ceb9705d380b7 /meta/lib
parentd31d2e85cfab8b85988047facd60438539467813 (diff)
downloadpoky-ff8d8fbc9e49bf9a6e7499a9550b343f5bf4942a.tar.gz
package.py: use subprocess.Popen for rpmdeps call
* I've noticed errors like this in log.do_package: DEBUG: Executing python function package_do_filedeps sh: 1: Syntax error: "(" unexpected sh: 1: Syntax error: "(" unexpected DEBUG: Python function package_do_filedeps finished which are actually caused by some filenames included in package containing '()' characters Maybe we should change meta/classes/package.bbclass to fail when some filedeprunner call fails like this and fix filedeprunner to escape '()' and other possibly dangerous chars it's called like this: processed = list(pool.imap(oe.package.filedeprunner, pkglist)) * don't use shell=True * show the command when it fails and let do_package task to fail (From OE-Core rev: 148c04c1bf39ca0d21288fdce61c51dc8e1c3226) Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com> Signed-off-by: Saul Wold <sgw@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/lib')
-rw-r--r--meta/lib/oe/package.py11
1 files changed, 7 insertions, 4 deletions
diff --git a/meta/lib/oe/package.py b/meta/lib/oe/package.py
index 9a0ddb8536..f8b532220a 100644
--- a/meta/lib/oe/package.py
+++ b/meta/lib/oe/package.py
@@ -54,7 +54,7 @@ def file_translate(file):
54 return ft 54 return ft
55 55
56def filedeprunner(arg): 56def filedeprunner(arg):
57 import re 57 import re, subprocess, shlex
58 58
59 (pkg, pkgfiles, rpmdeps, pkgdest) = arg 59 (pkg, pkgfiles, rpmdeps, pkgdest) = arg
60 provides = {} 60 provides = {}
@@ -89,8 +89,11 @@ def filedeprunner(arg):
89 89
90 return provides, requires 90 return provides, requires
91 91
92 dep_pipe = os.popen(rpmdeps + " " + " ".join(pkgfiles)) 92 try:
93 93 dep_popen = subprocess.Popen(shlex.split(rpmdeps) + pkgfiles, stdout=subprocess.PIPE)
94 provides, requires = process_deps(dep_pipe, pkg, pkgdest, provides, requires) 94 provides, requires = process_deps(dep_popen.stdout, pkg, pkgdest, provides, requires)
95 except OSError as e:
96 bb.error("rpmdeps: '%s' command failed, '%s'" % (shlex.split(rpmdeps) + pkgfiles, e))
97 raise e
95 98
96 return (pkg, provides, requires) 99 return (pkg, provides, requires)