bitbake: data_smart: Move getVar expand cache handing to fix _remove operations

DISTRO_FEATURES_remove = "opengl" wasn't working as expected. The reason
turned out the be the indirect reference to opengl and the fact _remove was
operating on unexpanded data.

This patch rearranges some code to ensure we operate on expanded data
by moving the expand cache handing into getVarFlags instead of getVar.

(Bitbake rev: 181899bd9665f74f8d1b22d2453616ad30d26d9e)

Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Richard Purdie 2013-09-06 20:14:25 +00:00
parent ed3ef0823f
commit e92b2dbfcd
1 changed files with 6 additions and 7 deletions

View File

@ -505,12 +505,7 @@ class DataSmart(MutableMapping):
self._seen_overrides[override].add( var )
def getVar(self, var, expand=False, noweakdefault=False):
value = self.getVarFlag(var, "_content", False, noweakdefault)
# Call expand() separately to make use of the expand cache
if expand and value:
return self.expand(value, var)
return value
return self.getVarFlag(var, "_content", expand, noweakdefault)
def renameVar(self, key, newkey, **loginfo):
"""
@ -587,7 +582,11 @@ class DataSmart(MutableMapping):
elif flag == "_content" and "defaultval" in local_var and not noweakdefault:
value = copy.copy(local_var["defaultval"])
if expand and value:
value = self.expand(value, None)
# Only getvar (flag == _content) hits the expand cache
cachename = None
if flag == "_content":
cachename = var
value = self.expand(value, cachename)
if value and flag == "_content" and local_var and "_removeactive" in local_var:
filtered = filter(lambda v: v not in local_var["_removeactive"],
value.split(" "))