From patchwork Tue Feb 10 07:10:36 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Robert Yang X-Patchwork-Id: 80823 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9BC93EA3F14 for ; Tue, 10 Feb 2026 07:10:52 +0000 (UTC) Received: from mx0a-0064b401.pphosted.com (mx0a-0064b401.pphosted.com [205.220.166.238]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.15025.1770707444504062240 for ; Mon, 09 Feb 2026 23:10:44 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@windriver.com header.s=PPS06212021 header.b=TdYWd/cC; spf=permerror, err=parse error for token &{10 18 %{ir}.%{v}.%{d}.spf.has.pphosted.com}: invalid domain name (domain: windriver.com, ip: 205.220.166.238, mailfrom: prvs=6501c5c083=liezhi.yang@windriver.com) Received: from pps.filterd (m0250809.ppops.net [127.0.0.1]) by mx0a-0064b401.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 61A6dUMa1796014 for ; Mon, 9 Feb 2026 23:10:44 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=windriver.com; h=content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=PPS06212021; bh=8RXKORjS16A6rqM/WdlkhWUh4a/NZDmONxlcN58mhAE=; b=TdYWd/cCtCnu qN26YRgdREb20GnDkTRKxO05ewd6Yo6UW6Axce/Mo20ID/TwSN8PYFyaweKLZOFj 2ByGsxLpS5uUnwCDolcYq+G61Nfjp8PFoMyLZDYujCTXPf3p5Do30yOLxrRVpdZa hJwg/qPfVrGP+k+rx6Sjjg5gM90kIXEMIEDLS906yrAJ3uk20wFY431dcTddCxMb 1N9oay2C4rcwTVV1aixip7NgWqnGscGM7xDYoibtrjFZe9YbIYp5eB9iL0eEa1VR au5jFLIR7IuHMddboTg3qogbBk8lW7UFjrVIXPXaKZOQGk+40piP/0gmf6Ys2OIa 7nMkg/UuHw== Received: from ala-exchng01.corp.ad.wrs.com (ala-exchng01.wrs.com [128.224.246.36]) by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 4c65sj2m0n-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NOT) for ; Mon, 09 Feb 2026 23:10:44 -0800 (PST) Received: from ala-exchng01.corp.ad.wrs.com (10.11.224.121) by ala-exchng01.corp.ad.wrs.com (10.11.224.121) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.61; Mon, 9 Feb 2026 23:10:43 -0800 Received: from ala-lpggp3.wrs.com (10.11.232.110) by ala-exchng01.corp.ad.wrs.com (10.11.224.121) with Microsoft SMTP Server id 15.1.2507.61 via Frontend Transport; Mon, 9 Feb 2026 23:10:43 -0800 From: To: Subject: [PATCH v4 1/7] package_rpm.bbclass: Drop external dependency generator to support rpm 6 Date: Mon, 9 Feb 2026 23:10:36 -0800 Message-ID: X-Mailer: git-send-email 2.49.1 In-Reply-To: References: MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: k3oWTY7PUfhHR7j5w18uJkND3FNDug0F X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMjEwMDA1OSBTYWx0ZWRfX3morhg4Td7Kl IZJQaeQ+iArBbXiVXYX48laLChmbxGqu4YY8ZQH66K3P8WRDkWhGCZlY7nlHVOwEeZtqwvDU7cF u4NeGk873B8WyIv9twlQH7q/ETU1EYPV2mLjP9udytEawuxxLSinW2hRTXo3bC/pVETZBGrq/hX 9zANfuqNG+7vMM6mbUs0KjXfMUiBxR8ULDDLHoNeL9Da5673RmBRyp9o+LfEI5blW0mnmP8c0Bs 8nb74pAfTxwIOPdAnw/DEYSFWbRFAcka7Hgt5kJlW5VRVTFGAaJMLoH7nLCFM3UDXmq6CHj+OHI oPo/xuB13/YT2gCEUyAdSULnWs5RSwRgayZP2GHeXfzr7bA3DHkEvCw3yTPGls49AidWBnzS7RT /hdz2E8f4XSxIeucny5XuwpPtfpH0JYsR+jobnOCq9Ffh2d4oHueq8guSPo5uftIi1CbStADlOC ZqS95i9w3ihLnoChF0Q== X-Proofpoint-GUID: k3oWTY7PUfhHR7j5w18uJkND3FNDug0F X-Authority-Analysis: v=2.4 cv=Cpyys34D c=1 sm=1 tr=0 ts=698ad9f4 cx=c_pps a=AbJuCvi4Y3V6hpbCNWx0WA==:117 a=AbJuCvi4Y3V6hpbCNWx0WA==:17 a=HzLeVaNsDn8A:10 a=VkNPw1HP01LnGYTKEx00:22 a=Mpw57Om8IfrbqaoTuvik:22 a=GgsMoib0sEa3-_RKJdDe:22 a=t7CeM3EgAAAA:8 a=NIgqSAyxxZKqxsHT_JkA:9 a=FdTzh2GWekK77mhwV6Dw:22 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-02-09_01,2026-02-09_04,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 lowpriorityscore=0 bulkscore=0 clxscore=1015 impostorscore=0 priorityscore=1501 phishscore=0 suspectscore=0 adultscore=0 malwarescore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2601150000 definitions=main-2602100059 List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Tue, 10 Feb 2026 07:10:52 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/230852 From: Robert Yang 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 --- 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 f383ed140e..bb3b8f830a 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 @@ -339,7 +274,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(): @@ -393,10 +327,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) @@ -665,10 +598,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') @@ -693,7 +622,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'" @@ -703,12 +631,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 + "'"