mirror of
git://git.yoctoproject.org/poky.git
synced 2025-07-19 12:59:02 +02:00
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:
parent
27a7f3a35c
commit
5ec16c88fc
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue
Block a user