multilib_global: handle REQUIRED_VERSION

Add logic to multilib_global.bbclass to handle new REQUIRED_VERSION
variable.

Fixes [YOCTO #10096]

(From OE-Core rev: 05ba2df8e565589cf7b0b7cedcb96c7fdf97298b)

Signed-off-by: Charlie Davies <charles.davies@whitetree.xyz>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Charlie Davies 2021-02-18 20:52:21 +00:00 committed by Richard Purdie
parent 27a7f3a35c
commit 5ec16c88fc

View File

@ -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,20 +12,25 @@ 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)
def sort_versions(versions, keyword):
version_str = "_".join([keyword, "VERSION", ""])
for v in versions:
val = d.getVar(v, False)
pkg = v.replace("PREFERRED_VERSION_", "")
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:
@ -35,7 +41,7 @@ def preferred_ml_updates(d):
if "-canadian-" in pkg:
newname = localdata.expand(v)
else:
newname = localdata.expand(v).replace("PREFERRED_VERSION_", "PREFERRED_VERSION_" + p + '-')
newname = localdata.expand(v).replace(version_str, version_str + p + '-')
if newname != v:
newval = localdata.expand(val)
d.setVar(newname, newval)
@ -45,10 +51,13 @@ def preferred_ml_updates(d):
d.renameVar(v, vexp)
continue
for p in prefixes:
newname = "PREFERRED_VERSION_" + p + "-" + pkg
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)
pkg = prov.replace("PREFERRED_PROVIDER_", "")