diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-09-06 20:14:25 +0000 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-09-06 22:17:04 +0100 |
commit | 181899bd9665f74f8d1b22d2453616ad30d26d9e (patch) | |
tree | 441e022e0079568db9fcf2a25c54c6c4255700eb /lib/bb/data_smart.py | |
parent | 8757f962b92e7668f40d2d8bd9e762b152f91f7b (diff) | |
download | bitbake-181899bd9665f74f8d1b22d2453616ad30d26d9e.tar.gz |
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.
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib/bb/data_smart.py')
-rw-r--r-- | lib/bb/data_smart.py | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/lib/bb/data_smart.py b/lib/bb/data_smart.py index d32501821..20e33a487 100644 --- a/lib/bb/data_smart.py +++ b/lib/bb/data_smart.py @@ -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(" ")) |