diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-07-05 11:02:04 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2011-07-05 11:39:05 +0100 |
commit | 56e46f0bc41013f6857fdb85c82c0ebf75d822f9 (patch) | |
tree | 76e9b0856abf5941d7d47217d10b4fd0a1783337 | |
parent | c6dac094ac79f6eae6998527e025417e16b46eed (diff) | |
download | ast2050-yocto-poky-56e46f0bc41013f6857fdb85c82c0ebf75d822f9.zip ast2050-yocto-poky-56e46f0bc41013f6857fdb85c82c0ebf75d822f9.tar.gz |
bitbake/ast: Fix ??= vs. ?= handling
As the code stands, setting a variable with ??= could result in a ?=
variable not overriding it. This patch fixes the issue by allowing
the ast to make lookups that ignore any ??= set variables.
(Bitbake rev: 32fee2e650dfdd3aa9a7572dad1251e0c24ca34b)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | bitbake/lib/bb/data_smart.py | 12 | ||||
-rw-r--r-- | bitbake/lib/bb/parse/ast.py | 4 |
2 files changed, 6 insertions, 10 deletions
diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py index 8f67227..301f9e3 100644 --- a/bitbake/lib/bb/data_smart.py +++ b/bitbake/lib/bb/data_smart.py @@ -267,12 +267,8 @@ class DataSmart(MutableMapping): # setting var self.dict[var]["content"] = value - def getVar(self, var, exp): - value = self.getVarFlag(var, "content") - - if exp and value: - return self.expand(value, var) - return value + def getVar(self, var, expand=False, noweakdefault=False): + return self.getVarFlag(var, "content", expand, noweakdefault) def renameVar(self, key, newkey): """ @@ -310,13 +306,13 @@ class DataSmart(MutableMapping): self._makeShadowCopy(var) self.dict[var][flag] = flagvalue - def getVarFlag(self, var, flag, expand=False): + def getVarFlag(self, var, flag, expand=False, noweakdefault=False): local_var = self._findVar(var) value = None if local_var: if flag in local_var: value = copy.copy(local_var[flag]) - elif flag == "content" and "defaultval" in local_var: + 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) diff --git a/bitbake/lib/bb/parse/ast.py b/bitbake/lib/bb/parse/ast.py index e41bb74..2301abd 100644 --- a/bitbake/lib/bb/parse/ast.py +++ b/bitbake/lib/bb/parse/ast.py @@ -84,9 +84,9 @@ class DataNode(AstNode): def getFunc(self, key, data): if 'flag' in self.groupd and self.groupd['flag'] != None: - return bb.data.getVarFlag(key, self.groupd['flag'], data) + return data.getVarFlag(key, self.groupd['flag'], noweakdefault=True) else: - return bb.data.getVar(key, data) + return data.getVar(key, noweakdefault=True) def eval(self, data): groupd = self.groupd |