diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-06-12 23:01:34 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2017-06-12 23:01:34 +0100 |
commit | 592ef8966295008c96c2a2b4138b16345a7c05b1 (patch) | |
tree | 3841497303e3240ac1bbde74db9a2b5563602079 | |
parent | aea90e9ee6f34e7c1c08307080b1e29646668df6 (diff) | |
download | openembedded-core-592ef8966295008c96c2a2b4138b16345a7c05b1.tar.gz openembedded-core-592ef8966295008c96c2a2b4138b16345a7c05b1.tar.bz2 openembedded-core-592ef8966295008c96c2a2b4138b16345a7c05b1.zip |
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.bbclass | 5 | ||||
-rw-r--r-- | meta/lib/oe/package.py | 47 |
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)) |