mirror of
https://git.yoctoproject.org/poky
synced 2026-04-27 03:32:12 +02:00
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. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
@@ -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)
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
Reference in New Issue
Block a user