[OE-core] base.bbclass: Ensure PREFERRED_PROVIDER and PREFERRED_VERSION values are set for multilibs
Richard Purdie
richard.purdie at linuxfoundation.org
Fri Aug 5 15:41:15 UTC 2011
When running multilib builds its not intuitive for the specificed
versions/providers to be build in one case and the higher version in the
other. This patch mirrors the options unless they're already set.
There shouldn't be any effect if the MULTILIBS variable isn't set.
[YOCTO #1339]
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>
---
diff --git a/meta/classes/base.bbclass b/meta/classes/base.bbclass
index ff960cd..4aee847 100644
--- a/meta/classes/base.bbclass
+++ b/meta/classes/base.bbclass
@@ -139,6 +139,46 @@ def pkgarch_mapping(d):
if d.getVar("TUNE_PKGARCH", True) == "armv7a-vfp-neon":
d.setVar("TUNE_PKGARCH", "armv7a")
+def preferred_ml_updates(d):
+ # If any PREFERRED_PROVIDER or PREFERRED_VERSIONS are set,
+ # we need to mirror these variables in the multilib case
+ multilibs = d.getVar('MULTILIBS', True) or ""
+ if not multilibs:
+ return
+
+ prefixes = []
+ for ext in multilibs.split():
+ eext = ext.split(':')
+ if len(eext) > 1 and eext[0] == 'multilib':
+ prefixes.append(eext[1])
+
+ versions = []
+ providers = []
+ for v in d.keys():
+ if v.startswith("PREFERRED_VERSION_"):
+ versions.append(v)
+ if v.startswith("PREFERRED_PROVIDER_"):
+ providers.append(v)
+
+ for v in versions:
+ val = d.getVar(v, False)
+ pkg = v.replace("PREFERRED_VERSION_", "")
+ for p in prefixes:
+ newname = "PREFERRED_VERSION_" + p + "-" + pkg
+ if not d.getVar(newname, False):
+ d.setVar(newname, val)
+
+ for prov in providers:
+ val = d.getVar(prov, False)
+ pkg = prov.replace("PREFERRED_PROVIDER_", "")
+ virt = ""
+ if pkg.startswith("virtual/"):
+ pkg = pkg.replace("virtual/", "")
+ virt = "virtual/"
+ for p in prefixes:
+ newname = "PREFERRED_PROVIDER_" + virt + p + "-" + pkg
+ if not d.getVar(newname, False):
+ d.setVar(newname, p + "-" + val)
addhandler base_eventhandler
python base_eventhandler() {
@@ -211,6 +251,7 @@ python base_eventhandler() {
if name == "ConfigParsed":
generate_git_config(e)
pkgarch_mapping(e.data)
+ preferred_ml_updates(e.data)
if not data in e.__dict__:
return
More information about the Openembedded-core
mailing list