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): def __iter__(self):
deleted = set() deleted = set()
overrides = set()
def keylist(d): def keylist(d):
klist = set() klist = set()
for key in d: for key in d:
@@ -816,6 +817,8 @@ class DataSmart(MutableMapping):
continue continue
if key in deleted: if key in deleted:
continue continue
if key in overrides:
continue
if not d[key]: if not d[key]:
deleted.add(key) deleted.add(key)
continue continue
@@ -826,9 +829,21 @@ class DataSmart(MutableMapping):
return klist 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): for k in keylist(self.dict):
yield k yield k
for k in overrides:
yield k
def __len__(self): def __len__(self):
return len(frozenset(self)) return len(frozenset(self))