mirror of
https://git.yoctoproject.org/poky
synced 2026-05-30 00:20:08 +00:00
package: Fix various rpmdeps relocation issues
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). (From OE-Core rev: 806e37264d7102ae982867350ad8363ed3e5f475) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -1433,7 +1433,7 @@ if [ x"$D" = "x" ]; then
|
|||||||
fi
|
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
|
# Collect perfile run-time dependency metadata
|
||||||
# Output:
|
# Output:
|
||||||
@@ -1450,6 +1450,7 @@ python package_do_filedeps() {
|
|||||||
pkgdest = d.getVar('PKGDEST')
|
pkgdest = d.getVar('PKGDEST')
|
||||||
packages = d.getVar('PACKAGES')
|
packages = d.getVar('PACKAGES')
|
||||||
rpmdeps = d.getVar('RPMDEPS')
|
rpmdeps = d.getVar('RPMDEPS')
|
||||||
|
magic = d.expand("${STAGING_DIR_NATIVE}${datadir_native}/misc/magic.mgc")
|
||||||
|
|
||||||
def chunks(files, n):
|
def chunks(files, n):
|
||||||
return [files[i:i+n] for i in range(0, len(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-'):
|
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
|
continue
|
||||||
for files in chunks(pkgfiles[pkg], 100):
|
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)
|
processed = oe.utils.multiprocess_exec( pkglist, oe.package.filedeprunner)
|
||||||
|
|
||||||
|
|||||||
@@ -57,7 +57,7 @@ def file_translate(file):
|
|||||||
def filedeprunner(arg):
|
def filedeprunner(arg):
|
||||||
import re, subprocess, shlex
|
import re, subprocess, shlex
|
||||||
|
|
||||||
(pkg, pkgfiles, rpmdeps, pkgdest) = arg
|
(pkg, pkgfiles, rpmdeps, pkgdest, magic) = arg
|
||||||
provides = {}
|
provides = {}
|
||||||
requires = {}
|
requires = {}
|
||||||
|
|
||||||
@@ -90,8 +90,11 @@ def filedeprunner(arg):
|
|||||||
|
|
||||||
return provides, requires
|
return provides, requires
|
||||||
|
|
||||||
|
env = os.environ.copy()
|
||||||
|
env["MAGIC"] = magic
|
||||||
|
|
||||||
try:
|
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)
|
provides, requires = process_deps(dep_popen.stdout, pkg, pkgdest, provides, requires)
|
||||||
except OSError as e:
|
except OSError as e:
|
||||||
bb.error("rpmdeps: '%s' command failed, '%s'" % (shlex.split(rpmdeps) + pkgfiles, e))
|
bb.error("rpmdeps: '%s' command failed, '%s'" % (shlex.split(rpmdeps) + pkgfiles, e))
|
||||||
|
|||||||
Reference in New Issue
Block a user