aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobert Yang <liezhi.yang@windriver.com>2015-07-03 01:03:18 -0700
committerRobert Yang <liezhi.yang@windriver.com>2015-07-03 01:39:44 -0700
commit1f153bbbdc6b7db05529fda3b36464f646f8fcb8 (patch)
tree20b3f3a3e18492f76b017c03667d8056dd28c360
parentdd09fab685de2eaf04aa5ab60f8220b89c1deae9 (diff)
downloadopenembedded-core-contrib-rbt/cross.tar.gz
openembedded-core-contrib-rbt/cross.tar.bz2
openembedded-core-contrib-rbt/cross.zip
multilib_global.bbclass: fix PREFERRED_VERSION for cross-canadianrbt/cross
Fixed: When both gcc 4.9 and 5.1 are in the layer, and set these in local.conf: GCCVERSION = "4.9%" MACHINE = "qemux86-64" require conf/multilib.conf MULTILIBS = "multilib:lib32" DEFAULTTUNE_virtclass-multilib-lib32 = "x86" $ bitbake gcc-cross-canadian-i586 Then gcc 5.1 would be built rather than 4.9, it is because multilib_virtclass_handler() doesn't reset PN such as gcc-cross-canadian to lib32-gcc-cross-canadian, but preferred_ml_updates() rename PREFERRED_VERSION_gcc-cross-canadian to PREFERRED_VERSION_lib32-gcc-cross-canadian, so it can't get the required value PREFERRED_VERSION_gcc-cross-canadian, and then gcc 5.1 would be used, don't reset it in preferred_ml_updates() will fix the problem. [YOCTO #7950] Signed-off-by: Robert Yang <liezhi.yang@windriver.com>
-rw-r--r--meta/classes/multilib_global.bbclass15
1 files changed, 12 insertions, 3 deletions
diff --git a/meta/classes/multilib_global.bbclass b/meta/classes/multilib_global.bbclass
index 67bd70d293..a9c0efc37a 100644
--- a/meta/classes/multilib_global.bbclass
+++ b/meta/classes/multilib_global.bbclass
@@ -30,7 +30,16 @@ def preferred_ml_updates(d):
override = ":virtclass-multilib-" + p
localdata.setVar("OVERRIDES", localdata.getVar("OVERRIDES", False) + override)
bb.data.update_data(localdata)
- newname = localdata.expand(v).replace("PREFERRED_VERSION_", "PREFERRED_VERSION_" + p + '-')
+ # Because multilib_virtclass_handler() doesn't reset PN such as
+ # gcc-cross-canadian to lib32-gcc-cross-canadian, so don't
+ # reset PREFERRED_VERSION_gcc-cross-canadian to
+ # PREFERRED_VERSION_lib32-gcc-cross-canadian, just expand v
+ # (need expand TRANSLATED_TARGET_ARCH) and set
+ # PREFERRED_VERSION_gcc-cross-canadian again.
+ if '-cross-canadian-' in pkg:
+ newname = localdata.expand(v)
+ else:
+ newname = localdata.expand(v).replace("PREFERRED_VERSION_", "PREFERRED_VERSION_" + p + '-')
if newname != v:
newval = localdata.expand(val)
d.setVar(newname, newval)
@@ -49,7 +58,7 @@ def preferred_ml_updates(d):
pkg = prov.replace("PREFERRED_PROVIDER_", "")
if pkg.endswith("-native") or "-crosssdk-" in pkg or pkg.startswith(("nativesdk-", "virtual/nativesdk-")):
continue
- if 'cross-canadian' in pkg:
+ if '-cross-canadian-' in pkg:
for p in prefixes:
localdata = bb.data.createCopy(d)
override = ":virtclass-multilib-" + p
@@ -94,7 +103,7 @@ def preferred_ml_updates(d):
mp = (d.getVar("MULTI_PROVIDER_WHITELIST", True) or "").split()
extramp = []
for p in mp:
- if p.endswith("-native") or "-crosssdk-" in p or p.startswith(("nativesdk-", "virtual/nativesdk-")) or 'cross-canadian' in p:
+ if p.endswith("-native") or "-crosssdk-" in p or p.startswith(("nativesdk-", "virtual/nativesdk-")) or '-cross-canadian-' in p:
continue
virt = ""
if p.startswith("virtual/"):