Allow renaming of packages on a global basis to work, e.g.:

PACKAGE_GLOBAL_RENAMES[bash] = "busybox"

Note this happens at package creation time and build time dependencies
remain as written.

This does have the potential to replace the horrific VIRTUAL-RUNTIME*
variables, see the follow up patch.

Signed-off-by: Richard Purdie <[email protected]>
---
 meta/classes/image.bbclass             |  7 ++++---
 meta/classes/package.bbclass           | 16 ++++++++++------
 meta/classes/populate_sdk_base.bbclass |  9 +++++----
 3 files changed, 19 insertions(+), 13 deletions(-)

diff --git a/meta/classes/image.bbclass b/meta/classes/image.bbclass
index 2fa69a40d10..b3f5421697d 100644
--- a/meta/classes/image.bbclass
+++ b/meta/classes/image.bbclass
@@ -236,9 +236,10 @@ fakeroot python do_rootfs () {
     # otherwise, the multilib renaming could step in and squash any fixups that
     # may have occurred.
     pn = d.getVar('PN')
-    runtime_mapping_rename("PACKAGE_INSTALL", pn, d)
-    runtime_mapping_rename("PACKAGE_INSTALL_ATTEMPTONLY", pn, d)
-    runtime_mapping_rename("BAD_RECOMMENDATIONS", pn, d)
+    remaps = d.getVarFlags("PACKAGE_GLOBAL_RENAMES")
+    runtime_mapping_rename("PACKAGE_INSTALL", pn, remaps, d)
+    runtime_mapping_rename("PACKAGE_INSTALL_ATTEMPTONLY", pn, remaps, d)
+    runtime_mapping_rename("BAD_RECOMMENDATIONS", pn, remaps, d)
 
     # Generate the initial manifest
     create_manifest(d)
diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass
index 92eba988929..aad58ead977 100644
--- a/meta/classes/package.bbclass
+++ b/meta/classes/package.bbclass
@@ -612,9 +612,12 @@ def copydebugsources(debugsrcdir, sources, d):
 # Package data handling routines
 #
 
-def get_package_mapping (pkg, basepkg, d, depversions=None):
+def get_package_mapping(pkg, basepkg, remaps, d, depversions=None):
     import oe.packagedata
 
+    if pkg in remaps:
+        pkg = remaps[pkg]
+
     data = oe.packagedata.read_subpkgdata(pkg, d)
     key = "PKG:%s" % pkg
 
@@ -646,13 +649,13 @@ def get_package_additional_metadata (pkg_type, d):
         metadata_fields = [field.strip() for field in oe.data.typed_value(key, 
d)]
         return "\n".join(metadata_fields).strip()
 
-def runtime_mapping_rename (varname, pkg, d):
+def runtime_mapping_rename(varname, pkg, remaps, d):
     #bb.note("%s before: %s" % (varname, d.getVar(varname)))
 
     new_depends = {}
     deps = bb.utils.explode_dep_versions2(d.getVar(varname) or "")
     for depend, depversions in deps.items():
-        new_depend = get_package_mapping(depend, pkg, d, depversions)
+        new_depend = get_package_mapping(depend, pkg, remaps, d, depversions)
         if depend != new_depend:
             bb.note("package name mapping done: %s -> %s" % (depend, 
new_depend))
         new_depends[new_depend] = deps[depend]
@@ -2512,6 +2515,7 @@ def mapping_rename_hook(d):
     like debian.bbclass or manual PKG variable name changes
     """
     pkg = d.getVar("PKG")
-    runtime_mapping_rename("RDEPENDS", pkg, d)
-    runtime_mapping_rename("RRECOMMENDS", pkg, d)
-    runtime_mapping_rename("RSUGGESTS", pkg, d)
+    remaps = d.getVarFlags("PACKAGE_GLOBAL_RENAMES")
+    runtime_mapping_rename("RDEPENDS", pkg, remaps, d)
+    runtime_mapping_rename("RRECOMMENDS", pkg, remaps, d)
+    runtime_mapping_rename("RSUGGESTS", pkg, remaps, d)
diff --git a/meta/classes/populate_sdk_base.bbclass 
b/meta/classes/populate_sdk_base.bbclass
index fafdd96749c..55c36e1108d 100644
--- a/meta/classes/populate_sdk_base.bbclass
+++ b/meta/classes/populate_sdk_base.bbclass
@@ -152,13 +152,14 @@ def populate_sdk_common(d):
     d.setVar("PACKAGE_INSTALL_ATTEMPTONLY", ' '.join(inst_attempt_pkgs))
 
     pn = d.getVar('PN')
-    runtime_mapping_rename("TOOLCHAIN_TARGET_TASK", pn, d)
-    runtime_mapping_rename("TOOLCHAIN_TARGET_TASK_ATTEMPTONLY", pn, d)
+    remaps = d.getVarFlags("PACKAGE_GLOBAL_RENAMES")
+    runtime_mapping_rename("TOOLCHAIN_TARGET_TASK", pn, remaps, d)
+    runtime_mapping_rename("TOOLCHAIN_TARGET_TASK_ATTEMPTONLY", pn, remaps, d)
 
     ld = bb.data.createCopy(d)
     ld.setVar("PKGDATA_DIR", 
"${STAGING_DIR}/${SDK_ARCH}-${SDKPKGSUFFIX}${SDK_VENDOR}-${SDK_OS}/pkgdata")
-    runtime_mapping_rename("TOOLCHAIN_HOST_TASK", pn, ld)
-    runtime_mapping_rename("TOOLCHAIN_HOST_TASK_ATTEMPTONLY", pn, ld)
+    runtime_mapping_rename("TOOLCHAIN_HOST_TASK", pn, remaps, ld)
+    runtime_mapping_rename("TOOLCHAIN_HOST_TASK_ATTEMPTONLY", pn, remaps, ld)
     d.setVar("TOOLCHAIN_HOST_TASK", ld.getVar("TOOLCHAIN_HOST_TASK"))
     d.setVar("TOOLCHAIN_HOST_TASK_ATTEMPTONLY", 
ld.getVar("TOOLCHAIN_HOST_TASK_ATTEMPTONLY"))
     
-- 
2.32.0

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#157840): 
https://lists.openembedded.org/g/openembedded-core/message/157840
Mute This Topic: https://lists.openembedded.org/mt/86813103/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to