[poky] [PATCH 1/2] bitbake: Make setVar a special case of setVarFlag
Dongxiao Xu
dongxiao.xu at intel.com
Mon Dec 13 06:50:48 PST 2010
Move logic in setVar into setVarFlag, and make setVar a special case
of setVarFlag.
This can fix the bug that, if we assign foo_OVERA[bar] = "x" and foo
is never set as a variable directly, the override is never expanded
in original code.
Signed-off-by: Dongxiao Xu <dongxiao.xu at intel.com>
---
bitbake/lib/bb/data_smart.py | 60 +++++++++++++++++++----------------------
1 files changed, 28 insertions(+), 32 deletions(-)
diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py
index c8cd8f8..a8b179f 100644
--- a/bitbake/lib/bb/data_smart.py
+++ b/bitbake/lib/bb/data_smart.py
@@ -205,38 +205,7 @@ class DataSmart:
self.initVar(var)
def setVar(self, var, value):
- self.expand_cache = {}
- match = __setvar_regexp__.match(var)
- if match and match.group("keyword") in __setvar_keyword__:
- base = match.group('base')
- keyword = match.group("keyword")
- override = match.group('add')
- l = self.getVarFlag(base, keyword) or []
- l.append([value, override])
- self.setVarFlag(base, keyword, l)
-
- # todo make sure keyword is not __doc__ or __module__
- # pay the cookie monster
- try:
- self._special_values[keyword].add( base )
- except KeyError:
- self._special_values[keyword] = set()
- self._special_values[keyword].add( base )
-
- return
-
- if not var in self.dict:
- self._makeShadowCopy(var)
-
- # more cookies for the cookie monster
- if '_' in var:
- override = var[var.rfind('_')+1:]
- if override not in self._seen_overrides:
- self._seen_overrides[override] = set()
- self._seen_overrides[override].add( var )
-
- # setting var
- self.dict[var]["content"] = value
+ self.setVarFlag(var, "content", value)
def getVar(self, var, exp):
value = self.getVarFlag(var, "content")
@@ -273,6 +242,33 @@ class DataSmart:
self.dict[var] = {}
def setVarFlag(self, var, flag, flagvalue):
+ self.expand_cache = {}
+ match = __setvar_regexp__.match(var)
+ if match and match.group("keyword") in __setvar_keyword__:
+ base = match.group('base')
+ keyword = match.group("keyword")
+ # todo make sure keyword is not __doc__ or __module__
+ # pay the cookie monster
+ try:
+ self._special_values[keyword].add( base )
+ except KeyError:
+ self._special_values[keyword] = set()
+ self._special_values[keyword].add( base )
+
+ if flag == "content":
+ override = match.group('add')
+ l = self.getVarFlag(base, keyword) or []
+ l.append([flagvalue, override])
+ self.setVarFlag(base, keyword, l)
+ return
+
+ # more cookies for the cookie monster
+ elif '_' in var:
+ override = var[var.rfind('_')+1:]
+ if override not in self._seen_overrides:
+ self._seen_overrides[override] = set()
+ self._seen_overrides[override].add( var )
+
if not var in self.dict:
self._makeShadowCopy(var)
self.dict[var][flag] = flagvalue
--
1.6.3.3
More information about the poky
mailing list