utils: Add all_multilib_tune_list function

Its useful to be able to query a list of variables to obtain the values
in each multilib context. This adds such a function which works even
if called in the non-default recipe context.

(From OE-Core rev: 4202a09dece07c0d3f654c2b1ae504a031b4ee90)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2016-09-26 17:22:24 +01:00
parent de4fffe558
commit 153da94000
1 changed files with 37 additions and 0 deletions

View File

@ -382,3 +382,40 @@ def all_multilib_tune_values(d, var, unique = True, need_split = True, delim = '
else:
ret = values
return " ".join(ret)
def all_multilib_tune_list(vars, d):
"""
Return a list of ${VAR} for each variable VAR in vars from each
multilib tune configuration.
Is safe to be called from a multilib recipe/context as it can
figure out the original tune and remove the multilib overrides.
"""
values = {}
for v in vars:
values[v] = []
localdata = bb.data.createCopy(d)
overrides = localdata.getVar("OVERRIDES", False).split(":")
newoverrides = []
for o in overrides:
if not o.startswith("virtclass-multilib-"):
newoverrides.append(o)
localdata.setVar("OVERRIDES", ":".join(newoverrides))
localdata.setVar("MLPREFIX", "")
origdefault = localdata.getVar("DEFAULTTUNE_MULTILIB_ORIGINAL", True)
if origdefault:
localdata.setVar("DEFAULTTUNE", origdefault)
bb.data.update_data(localdata)
values['ml'] = ['']
for v in vars:
values[v].append(localdata.getVar(v, True))
variants = d.getVar("MULTILIB_VARIANTS", True) or ""
for item in variants.split():
localdata = bb.data.createCopy(d)
overrides = localdata.getVar("OVERRIDES", False) + ":virtclass-multilib-" + item
localdata.setVar("OVERRIDES", overrides)
localdata.setVar("MLPREFIX", item + "-")
bb.data.update_data(localdata)
values[v].append(localdata.getVar(v, True))
values['ml'].append(item)
return values