summaryrefslogtreecommitdiffstats
path: root/lib/bb/data_smart.py
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2015-05-29 10:29:28 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2015-07-12 22:50:27 +0100
commit77fc57c610d7f65f7e328ad555f525b2f8bdf1d7 (patch)
tree1ac83a23802a11833e8a2f168e0a2fc3eb51b0de /lib/bb/data_smart.py
parentdb9a4eedcf78969ec50bf0e4a8defba8ff0daa4a (diff)
downloadopenembedded-core-contrib-77fc57c610d7f65f7e328ad555f525b2f8bdf1d7.tar.gz
data_smart: Fix keys() missing overrides
d.keys() was not returning items which had no base content but the variable came into existance through overrides. We have to process self.overridedata to find these other variables. Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'lib/bb/data_smart.py')
-rw-r--r--lib/bb/data_smart.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/bb/data_smart.py b/lib/bb/data_smart.py
index 941c158f7d..b9c5d1e5b7 100644
--- a/lib/bb/data_smart.py
+++ b/lib/bb/data_smart.py
@@ -809,6 +809,7 @@ class DataSmart(MutableMapping):
def __iter__(self):
deleted = set()
+ overrides = set()
def keylist(d):
klist = set()
for key in d:
@@ -816,6 +817,8 @@ class DataSmart(MutableMapping):
continue
if key in deleted:
continue
+ if key in overrides:
+ continue
if not d[key]:
deleted.add(key)
continue
@@ -826,9 +829,21 @@ class DataSmart(MutableMapping):
return klist
+ self.need_overrides()
+ for var in self.overridedata:
+ for (r, o) in self.overridedata[var]:
+ if o in self.overridesset:
+ overrides.add(var)
+ elif "_" in o:
+ if set(o.split("_")).issubset(self.overridesset):
+ overrides.add(var)
+
for k in keylist(self.dict):
yield k
+ for k in overrides:
+ yield k
+
def __len__(self):
return len(frozenset(self))