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>
This commit is contained in:
Richard Purdie
2015-05-29 10:29:28 +00:00
parent 816acb6ee8
commit a259968611

View File

@@ -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))