summaryrefslogtreecommitdiffstats
path: root/bitbake/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:46 +0100
commita2599686112fca1c2a808fbea24bf10d5f89a74d (patch)
tree20bccd1a6c77f6ae6320ee22011821530610f010 /bitbake/lib/bb/data_smart.py
parent816acb6ee8ca8ac8791bf89c32aa45f808d5d52f (diff)
downloadopenembedded-core-contrib-a2599686112fca1c2a808fbea24bf10d5f89a74d.tar.gz
bitbake: 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. (Bitbake rev: 77fc57c610d7f65f7e328ad555f525b2f8bdf1d7) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/data_smart.py')
-rw-r--r--bitbake/lib/bb/data_smart.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py
index 941c158f7d..b9c5d1e5b7 100644
--- a/bitbake/lib/bb/data_smart.py
+++ b/bitbake/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))