From: Sumanth Gavini <sumanth.gavini@windriver.com>
To: openembedded-core@lists.openembedded.org
Cc: alex.kanavin@gmail.com, mathieu.dubois-briand@bootlin.com,
mattware@cisco.com, esparlin@cisco.com, peter.marko@siemens.com,
randy.macleod@windriver.com
Subject: [PATCH v10 1/8] package_rpm.bbclass: Drop external dependency generator to support rpm 6
Date: Mon, 27 Jul 2026 15:55:53 -0700 [thread overview]
Message-ID: <20260727225602.342005-2-sumanth.gavini@windriver.com> (raw)
In-Reply-To: <20260727225602.342005-1-sumanth.gavini@windriver.com>
The rpm 6 doesn't support external dependency generator. Oe-core used it for
per file dependency which was saved into pn.requires and pn.provides,but that
hasn't been used any more since 2012 (rev:
be40f6d0bb80274366af00461112af65687a4de8), and there were no complains or
updates in the past 13 years, so just drop it to support rpm 6.
Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
Signed-off-by: Sumanth Gavini <sumanth.gavini@windriver.com>
---
meta/classes-global/package_rpm.bbclass | 84 +------------------------
1 file changed, 3 insertions(+), 81 deletions(-)
diff --git a/meta/classes-global/package_rpm.bbclass b/meta/classes-global/package_rpm.bbclass
index 9eacd91cbc..f286d3a0e2 100644
--- a/meta/classes-global/package_rpm.bbclass
+++ b/meta/classes-global/package_rpm.bbclass
@@ -14,10 +14,6 @@ RPMBUILD_COMPMODE ?= "${@'w%dT%d.zstdio' % (int(d.getVar('ZSTD_COMPRESSION_LEVEL
PKGWRITEDIRRPM = "${WORKDIR}/deploy-rpms"
-# Maintaining the perfile dependencies has significant overhead when writing the
-# packages. When set, this value merges them for efficiency.
-MERGEPERFILEDEPS = "1"
-
# Filter dependencies based on a provided function.
def filter_deps(var, f):
import collections
@@ -36,67 +32,6 @@ def filter_nativesdk_deps(srcname, var):
var = filter_deps(var, lambda dep: not dep.startswith('/') and dep != 'perl' and not dep.startswith('perl('))
return var
-# Construct per file dependencies file
-def write_rpm_perfiledata(srcname, d):
- import oe.package
- workdir = d.getVar('WORKDIR')
- packages = d.getVar('PACKAGES')
- pkgd = d.getVar('PKGD')
-
- def dump_filerdeps(varname, outfile, d):
- outfile.write("#!/usr/bin/env python3\n\n")
- outfile.write("# Dependency table\n")
- outfile.write('deps = {\n')
- for pkg in packages.split():
- dependsflist_key = 'FILE' + varname + 'FLIST' + ":" + pkg
- dependsflist = (d.getVar(dependsflist_key) or "")
- for dfile in dependsflist.split():
- key = "FILE" + varname + ":" + dfile + ":" + pkg
- deps = filter_nativesdk_deps(srcname, d.getVar(key) or "")
- depends_dict = bb.utils.explode_dep_versions(deps)
- file = oe.package.file_reverse_translate(dfile)
- outfile.write('"' + pkgd + file + '" : "')
- for dep in depends_dict:
- ver = depends_dict[dep]
- if dep and ver:
- ver = ver.replace("(", "")
- ver = ver.replace(")", "")
- outfile.write(dep + " " + ver + " ")
- else:
- outfile.write(dep + " ")
- outfile.write('",\n')
- outfile.write('}\n\n')
- outfile.write("import sys\n")
- outfile.write("while 1:\n")
- outfile.write("\tline = sys.stdin.readline().strip()\n")
- outfile.write("\tif not line:\n")
- outfile.write("\t\tsys.exit(0)\n")
- outfile.write("\tif line in deps:\n")
- outfile.write("\t\tprint(deps[line] + '\\n')\n")
-
- # OE-core dependencies a.k.a. RPM requires
- outdepends = workdir + "/" + srcname + ".requires"
-
- dependsfile = open(outdepends, 'w')
-
- dump_filerdeps('RDEPENDS', dependsfile, d)
-
- dependsfile.close()
- os.chmod(outdepends, 0o755)
-
- # OE-core / RPM Provides
- outprovides = workdir + "/" + srcname + ".provides"
-
- providesfile = open(outprovides, 'w')
-
- dump_filerdeps('RPROVIDES', providesfile, d)
-
- providesfile.close()
- os.chmod(outprovides, 0o755)
-
- return (outdepends, outprovides)
-
-
python write_specfile () {
import oe.packagedata
import os,pwd,grp,stat
@@ -311,7 +246,6 @@ python write_specfile () {
spec_files_top = []
spec_files_bottom = []
- perfiledeps = (d.getVar("MERGEPERFILEDEPS") or "0") == "0"
extra_pkgdata = (d.getVar("RPM_EXTRA_PKGDATA") or "0") == "1"
for pkg in packages.split():
@@ -365,10 +299,9 @@ python write_specfile () {
splitrpostrm = localdata.getVar('pkg_postrm')
- if not perfiledeps:
- # Add in summary of per file dependencies
- splitrdepends = splitrdepends + " " + get_perfile('RDEPENDS', pkg, d)
- splitrprovides = splitrprovides + " " + get_perfile('RPROVIDES', pkg, d)
+ # Add in summary of per file dependencies
+ splitrdepends = splitrdepends + " " + get_perfile('RDEPENDS', pkg, d)
+ splitrprovides = splitrprovides + " " + get_perfile('RPROVIDES', pkg, d)
splitrdepends = filter_nativesdk_deps(srcname, splitrdepends)
@@ -630,10 +563,6 @@ python do_package_rpm () {
d.setVar('OUTSPECFILE', outspecfile)
bb.build.exec_func('write_specfile', d)
- perfiledeps = (d.getVar("MERGEPERFILEDEPS") or "0") == "0"
- if perfiledeps:
- outdepends, outprovides = write_rpm_perfiledata(srcname, d)
-
# Setup the rpmbuild arguments...
rpmbuild = d.getVar('RPMBUILD')
rpmbuild_compmode = d.getVar('RPMBUILD_COMPMODE')
@@ -658,7 +587,6 @@ python do_package_rpm () {
cmd = cmd + " --define '_topdir " + workdir + "' --define '_rpmdir " + pkgwritedir + "'"
cmd = cmd + " --define '_builddir " + d.getVar('B') + "'"
cmd = cmd + " --define '_build_name_fmt %%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm'"
- cmd = cmd + " --define '_use_internal_dependency_generator 0'"
cmd = cmd + " --define '_binaries_in_noarch_packages_terminate_build 0'"
cmd = cmd + " --define '_build_id_links none'"
cmd = cmd + " --define '_smp_ncpus_max 4'"
@@ -668,12 +596,6 @@ python do_package_rpm () {
cmd = cmd + " --define 'use_source_date_epoch_as_buildtime 1'"
cmd = cmd + " --define '_buildhost reproducible'"
cmd = cmd + " --define '__font_provides %{nil}'"
- if perfiledeps:
- cmd = cmd + " --define '__find_requires " + outdepends + "'"
- cmd = cmd + " --define '__find_provides " + outprovides + "'"
- else:
- cmd = cmd + " --define '__find_requires %{nil}'"
- cmd = cmd + " --define '__find_provides %{nil}'"
cmd = cmd + " --define '_unpackaged_files_terminate_build 0'"
cmd = cmd + " --define 'debug_package %{nil}'"
cmd = cmd + " --define '_tmppath " + workdir + "'"
next prev parent reply other threads:[~2026-07-27 22:56 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-27 22:55 [PATCH v10 0/8] rpm: 4.20.1 -> 6.0.2 Sumanth Gavini
2026-07-27 22:55 ` Sumanth Gavini [this message]
2026-07-27 22:55 ` [PATCH v10 2/8] package_rpm.bbclass: Define _lib and _libdir for rpmbuild Sumanth Gavini
2026-07-27 22:55 ` [PATCH v10 3/8] lib/oe/package.py: Don't add ldconfig_postinst_fragment for glibc or musl Sumanth Gavini
2026-07-27 22:55 ` [PATCH v10 4/8] lib/oe/package.py: Filter out /usr/bin/pkg-config file dependency Sumanth Gavini
2026-07-27 22:55 ` [PATCH v10 5/8] lib/oe/package.py: Don't redirect stderr Sumanth Gavini
2026-07-27 22:55 ` [PATCH v10 6/8] target-sdk-provides-dummy: Add pkg-config to DUMMYPROVIDES Sumanth Gavini
2026-07-27 22:55 ` [PATCH v10 7/8] rpm: 4.20.1 -> 6.0.2 Sumanth Gavini
2026-07-27 22:56 ` [PATCH v10 8/8] libarchive: Make it work with rpm 6 Sumanth Gavini
2026-07-28 15:18 ` [PATCH v10 0/8] rpm: 4.20.1 -> 6.0.2 Mathieu Dubois-Briand
2026-07-28 19:33 ` [OE-core] " Gavini, Sumanth
[not found] ` <18C68B13D5EABE33.1674579@lists.openembedded.org>
2026-07-29 1:25 ` Gavini, Sumanth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260727225602.342005-2-sumanth.gavini@windriver.com \
--to=sumanth.gavini@windriver.com \
--cc=alex.kanavin@gmail.com \
--cc=esparlin@cisco.com \
--cc=mathieu.dubois-briand@bootlin.com \
--cc=mattware@cisco.com \
--cc=openembedded-core@lists.openembedded.org \
--cc=peter.marko@siemens.com \
--cc=randy.macleod@windriver.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox