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>
This commit is contained in:
Richard Purdie
2011-07-05 11:02:04 +01:00
parent c6dac094ac
commit 56e46f0bc4
2 changed files with 6 additions and 10 deletions

View File

@@ -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)

View File

@@ -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