diff options
author | Charlie Davies <charles.davies@whitetree.xyz> | 2021-02-18 20:52:21 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2021-03-15 14:37:42 +0000 |
commit | 05ba2df8e565589cf7b0b7cedcb96c7fdf97298b (patch) | |
tree | 263985d1267816805accef74cfb6c251e58e5353 /meta/classes | |
parent | 305c954a1d8aaeda3240523e4705c1b06e2c8590 (diff) | |
download | openembedded-core-contrib-05ba2df8e565589cf7b0b7cedcb96c7fdf97298b.tar.gz |
multilib_global: handle REQUIRED_VERSION
Add logic to multilib_global.bbclass to handle new REQUIRED_VERSION
variable.
Fixes [YOCTO #10096]
Signed-off-by: Charlie Davies <charles.davies@whitetree.xyz>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/classes')
-rw-r--r-- | meta/classes/multilib_global.bbclass | 67 |
1 files changed, 38 insertions, 29 deletions
diff --git a/meta/classes/multilib_global.bbclass b/meta/classes/multilib_global.bbclass index 98f65c8aae..96257de5ca 100644 --- a/meta/classes/multilib_global.bbclass +++ b/meta/classes/multilib_global.bbclass @@ -1,6 +1,7 @@ def preferred_ml_updates(d): - # If any PREFERRED_PROVIDER or PREFERRED_VERSION are set, - # we need to mirror these variables in the multilib case; + # If any of PREFERRED_PROVIDER, PREFERRED_RPROVIDER, REQUIRED_VERSION + # or PREFERRED_VERSION are set, we need to mirror these variables in + # the multilib case; multilibs = d.getVar('MULTILIBS') or "" if not multilibs: return @@ -11,43 +12,51 @@ def preferred_ml_updates(d): if len(eext) > 1 and eext[0] == 'multilib': prefixes.append(eext[1]) - versions = [] + required_versions = [] + preferred_versions = [] providers = [] rproviders = [] for v in d.keys(): + if v.startswith("REQUIRED_VERSION_"): + required_versions.append(v) if v.startswith("PREFERRED_VERSION_"): - versions.append(v) + preferred_versions.append(v) if v.startswith("PREFERRED_PROVIDER_"): providers.append(v) if v.startswith("PREFERRED_RPROVIDER_"): rproviders.append(v) - for v in versions: - val = d.getVar(v, False) - pkg = v.replace("PREFERRED_VERSION_", "") - if pkg.endswith("-native") or "-crosssdk-" in pkg or pkg.startswith(("nativesdk-", "virtual/nativesdk-")): - continue - if '-cross-' in pkg and '${' in pkg: + def sort_versions(versions, keyword): + version_str = "_".join([keyword, "VERSION", ""]) + for v in versions: + val = d.getVar(v, False) + pkg = v.replace(version_str, "") + if pkg.endswith("-native") or "-crosssdk-" in pkg or pkg.startswith(("nativesdk-", "virtual/nativesdk-")): + continue + if '-cross-' in pkg and '${' in pkg: + for p in prefixes: + localdata = bb.data.createCopy(d) + override = ":virtclass-multilib-" + p + localdata.setVar("OVERRIDES", localdata.getVar("OVERRIDES", False) + override) + if "-canadian-" in pkg: + newname = localdata.expand(v) + else: + newname = localdata.expand(v).replace(version_str, version_str + p + '-') + if newname != v: + newval = localdata.expand(val) + d.setVar(newname, newval) + # Avoid future variable key expansion + vexp = d.expand(v) + if v != vexp and d.getVar(v, False): + d.renameVar(v, vexp) + continue for p in prefixes: - localdata = bb.data.createCopy(d) - override = ":virtclass-multilib-" + p - localdata.setVar("OVERRIDES", localdata.getVar("OVERRIDES", False) + override) - if "-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) - # Avoid future variable key expansion - vexp = d.expand(v) - if v != vexp and d.getVar(v, False): - d.renameVar(v, vexp) - continue - for p in prefixes: - newname = "PREFERRED_VERSION_" + p + "-" + pkg - if not d.getVar(newname, False): - d.setVar(newname, val) + newname = version_str + p + "-" + pkg + if not d.getVar(newname, False): + d.setVar(newname, val) + + sort_versions(required_versions, "REQUIRED") + sort_versions(preferred_versions, "PREFERRED") for prov in providers: val = d.getVar(prov, False) |