]> code.ossystems Code Review - openembedded-core.git/commitdiff
Revert "package.bbclass: Restore functionality to detect RPM dependencies"
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 12 Jun 2017 22:01:34 +0000 (23:01 +0100)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 12 Jun 2017 22:01:34 +0000 (23:01 +0100)
This reverts commit aea90e9ee6f34e7c1c08307080b1e29646668df6.

RP hadn't meant to merge this yet and its causing problems so delay it until its
ready.

meta/classes/package.bbclass
meta/lib/oe/package.py

index 65cf5fac5ff6b33df5d7fb0d3777151101232804..cc466bd1b25925957914b883c93bcab100e24096 100644 (file)
@@ -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)
 
index 811d27964bc7e730def3fbaab27a70d0afe7b2cd..52c5f16cf8e2576c82c1e35b1d5031d35e13ed1f 100644 (file)
@@ -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))