diff options
author | Robert Yang <liezhi.yang@windriver.com> | 2015-07-03 01:03:18 -0700 |
---|---|---|
committer | Robert Yang <liezhi.yang@windriver.com> | 2015-07-03 01:39:44 -0700 |
commit | 1f153bbbdc6b7db05529fda3b36464f646f8fcb8 (patch) | |
tree | 20b3f3a3e18492f76b017c03667d8056dd28c360 | |
parent | dd09fab685de2eaf04aa5ab60f8220b89c1deae9 (diff) | |
download | openembedded-core-contrib-rbt/cross.tar.gz |
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.bbclass | 15 |
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/"): |