diff options
Diffstat (limited to 'bitbake/lib/bb/data_smart.py')
-rw-r--r-- | bitbake/lib/bb/data_smart.py | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py index 9a42a17062..7bb7b4aae3 100644 --- a/bitbake/lib/bb/data_smart.py +++ b/bitbake/lib/bb/data_smart.py @@ -296,9 +296,14 @@ class VariableHistory(object): self.variables[var] = [] class DataSmart(MutableMapping): - def __init__(self, special = COWDictBase.copy(), seen = COWDictBase.copy() ): + def __init__(self, special = None, seen = None ): self.dict = {} + if special is None: + special = COWDictBase.copy() + if seen is None: + seen = COWDictBase.copy() + self.inchistory = IncludeHistory() self.varhistory = VariableHistory(self) self._tracking = False @@ -589,7 +594,7 @@ class DataSmart(MutableMapping): self._makeShadowCopy(var) self.dict[var][flag] = value - if flag == "defaultval" and '_' in var: + if flag == "_defaultval" and '_' in var: self._setvar_update_overrides(var) if flag == "unexport" or flag == "export": @@ -605,8 +610,8 @@ class DataSmart(MutableMapping): if local_var is not None: if flag in local_var: value = copy.copy(local_var[flag]) - elif flag == "_content" and "defaultval" in local_var and not noweakdefault: - value = copy.copy(local_var["defaultval"]) + elif flag == "_content" and "_defaultval" in local_var and not noweakdefault: + value = copy.copy(local_var["_defaultval"]) if expand and value: # Only getvar (flag == _content) hits the expand cache cachename = None @@ -616,7 +621,8 @@ class DataSmart(MutableMapping): cachename = var + "[" + flag + "]" value = self.expand(value, cachename) if value and flag == "_content" and local_var is not None and "_removeactive" in local_var: - removes = [self.expand(r) for r in local_var["_removeactive"]] + removes = [self.expand(r).split() for r in local_var["_removeactive"]] + removes = reduce(lambda a, b: a+b, removes, []) filtered = filter(lambda v: v not in removes, value.split()) value = " ".join(filtered) @@ -740,12 +746,16 @@ class DataSmart(MutableMapping): yield key def __iter__(self): + deleted = set() def keylist(d): klist = set() for key in d: if key == "_data": continue + if key in deleted: + continue if not d[key]: + deleted.add(key) continue klist.add(key) |