[bitbake-devel] [PATCH 13/16] data_smart: Fix keys() missing overrides
Richard Purdie
richard.purdie at linuxfoundation.org
Wed Jul 8 14:59:07 UTC 2015
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 at linuxfoundation.org>
---
lib/bb/data_smart.py | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/lib/bb/data_smart.py b/lib/bb/data_smart.py
index 941c158..b9c5d1e 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))
--
2.1.0
More information about the bitbake-devel
mailing list