aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2017-06-12 23:01:34 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2017-06-12 23:01:34 +0100
commit592ef8966295008c96c2a2b4138b16345a7c05b1 (patch)
tree3841497303e3240ac1bbde74db9a2b5563602079
parentaea90e9ee6f34e7c1c08307080b1e29646668df6 (diff)
downloadopenembedded-core-contrib-592ef8966295008c96c2a2b4138b16345a7c05b1.tar.gz
Revert "package.bbclass: Restore functionality to detect RPM dependencies"
This reverts commit aea90e9ee6f34e7c1c08307080b1e29646668df6. RP hadn't meant to merge this yet and its causing problems so delay it until its ready.
-rw-r--r--meta/classes/package.bbclass5
-rw-r--r--meta/lib/oe/package.py47
2 files changed, 23 insertions, 29 deletions
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index 65cf5fac5f..cc466bd1b2 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -1434,7 +1434,7 @@ if [ x"$D" = "x" ]; then
fi
}
-RPMDEPS = "${STAGING_LIBDIR_NATIVE}/rpm/rpmdeps --alldeps"
+RPMDEPS = "${STAGING_LIBDIR_NATIVE}/rpm/rpmdeps --rcfile ${STAGING_LIBDIR_NATIVE}/rpm/rpmrc --macros ${STAGING_LIBDIR_NATIVE}/rpm/macros --define '_rpmconfigdir ${STAGING_LIBDIR_NATIVE}/rpm/'"
# Collect perfile run-time dependency metadata
# Output:
@@ -1451,6 +1451,7 @@ python package_do_filedeps() {
pkgdest = d.getVar('PKGDEST')
packages = d.getVar('PACKAGES')
rpmdeps = d.getVar('RPMDEPS')
+ magic = d.expand("${STAGING_DIR_NATIVE}${datadir_native}/misc/magic.mgc")
def chunks(files, n):
return [files[i:i+n] for i in range(0, len(files), n)]
@@ -1462,7 +1463,7 @@ python package_do_filedeps() {
if pkg.endswith('-dbg') or pkg.endswith('-doc') or pkg.find('-locale-') != -1 or pkg.find('-localedata-') != -1 or pkg.find('-gconv-') != -1 or pkg.find('-charmap-') != -1 or pkg.startswith('kernel-module-'):
continue
for files in chunks(pkgfiles[pkg], 100):
- pkglist.append((pkg, files, rpmdeps, pkgdest))
+ pkglist.append((pkg, files, rpmdeps, pkgdest, magic))
processed = oe.utils.multiprocess_exec( pkglist, oe.package.filedeprunner)
diff --git a/meta/lib/oe/package.py b/meta/lib/oe/package.py
index 811d27964b..52c5f16cf8 100644
--- a/meta/lib/oe/package.py
+++ b/meta/lib/oe/package.py
@@ -57,51 +57,44 @@ def file_translate(file):
def filedeprunner(arg):
import re, subprocess, shlex
- (pkg, pkgfiles, rpmdeps, pkgdest) = arg
+ (pkg, pkgfiles, rpmdeps, pkgdest, magic) = arg
provides = {}
requires = {}
- file_re = re.compile(r'\s+\d+\s(.*)')
- dep_re = re.compile(r'\s+(\S)\s+(.*)')
- r = re.compile(r'[<>=]+\s+\S*')
+ r = re.compile(r'[<>=]+ +[^ ]*')
def process_deps(pipe, pkg, pkgdest, provides, requires):
- file = None
for line in pipe:
- line = line.decode("utf-8")
+ f = line.decode("utf-8").split(" ", 1)[0].strip()
+ line = line.decode("utf-8").split(" ", 1)[1].strip()
- m = file_re.match(line)
- if m:
- file = m.group(1)
- file = file.replace(pkgdest + "/" + pkg, "")
- file = file_translate(file)
- continue
-
- m = dep_re.match(line)
- if not m or not file:
- continue
-
- type, dep = m.groups()
-
- if type == 'R':
+ if line.startswith("Requires:"):
i = requires
- elif type == 'P':
+ elif line.startswith("Provides:"):
i = provides
else:
- continue
-
- if dep.startswith("python("):
continue
- dep = r.sub(r'(\g<0>)',dep)
+ file = f.replace(pkgdest + "/" + pkg, "")
+ file = file_translate(file)
+ value = line.split(":", 1)[1].strip()
+ value = r.sub(r'(\g<0>)', value)
+
+ if value.startswith("rpmlib("):
+ continue
+ if value == "python":
+ continue
if file not in i:
i[file] = []
- i[file].append(dep)
+ i[file].append(value)
return provides, requires
+ env = os.environ.copy()
+ env["MAGIC"] = magic
+
try:
- dep_popen = subprocess.Popen(shlex.split(rpmdeps) + pkgfiles, stdout=subprocess.PIPE)
+ dep_popen = subprocess.Popen(shlex.split(rpmdeps) + pkgfiles, stdout=subprocess.PIPE, env=env)
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))