From 56e46f0bc41013f6857fdb85c82c0ebf75d822f9 Mon Sep 17 00:00:00 2001 From: Richard Purdie Date: Tue, 5 Jul 2011 11:02:04 +0100 Subject: 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 --- bitbake/lib/bb/data_smart.py | 12 ++++-------- 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 8f67227bd6..301f9e3729 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 e41bb74f40..2301abd12b 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 -- cgit v1.2.3-54-g00ecf