]> code.ossystems Code Review - openembedded-core.git/commitdiff
package: Fix various rpmdeps relocation issues
authorRichard Purdie <richard.purdie@linuxfoundation.org>
Mon, 13 Mar 2017 22:46:18 +0000 (22:46 +0000)
committerRichard Purdie <richard.purdie@linuxfoundation.org>
Tue, 14 Mar 2017 14:19:02 +0000 (14:19 +0000)
There are several issues with rpmdeps after the rpm v5 -> v4 transition:
 * _rpmfc_magic_path  is an invalid option for rpm4
 * --rpmpopt is an invalid option for rpm4
 * we need to use the path to rpmrc since otherwise it poitns at the
   original build path
 * we need to set MAGIC in the environment so libmagic can find its
   files.

This patch addresses those and ensures rpmdeps works in relocated builds
from sstate (or with rm_work).

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
meta/classes/package.bbclass
meta/lib/oe/package.py

index 48fef97251bbaa86ad2c6785ed0af308c07f3b62..871263f086fc25460fa96da3681497f0c33cf4b3 100644 (file)
@@ -1433,7 +1433,7 @@ if [ x"$D" = "x" ]; then
 fi
 }
 
-RPMDEPS = "${STAGING_LIBDIR_NATIVE}/rpm/rpmdeps --macros ${STAGING_LIBDIR_NATIVE}/rpm/macros --define '_rpmfc_magic_path ${STAGING_DIR_NATIVE}${datadir_native}/misc/magic.mgc' --rpmpopt ${STAGING_LIBDIR_NATIVE}/rpm/rpmpopt"
+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:
@@ -1450,6 +1450,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)]
@@ -1461,7 +1462,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 0ca41aa91c0f81e370160175c95b68d3cedd8aa8..52c5f16cf8e2576c82c1e35b1d5031d35e13ed1f 100644 (file)
@@ -57,7 +57,7 @@ def file_translate(file):
 def filedeprunner(arg):
     import re, subprocess, shlex
 
-    (pkg, pkgfiles, rpmdeps, pkgdest) = arg
+    (pkg, pkgfiles, rpmdeps, pkgdest, magic) = arg
     provides = {}
     requires = {}
 
@@ -90,8 +90,11 @@ def filedeprunner(arg):
 
         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))