diff options
Diffstat (limited to 'bitbake/lib/bb/data_smart.py')
| -rw-r--r-- | bitbake/lib/bb/data_smart.py | 15 |
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): | |||
| 809 | 809 | ||
| 810 | def __iter__(self): | 810 | def __iter__(self): |
| 811 | deleted = set() | 811 | deleted = set() |
| 812 | overrides = set() | ||
| 812 | def keylist(d): | 813 | def keylist(d): |
| 813 | klist = set() | 814 | klist = set() |
| 814 | for key in d: | 815 | for key in d: |
| @@ -816,6 +817,8 @@ class DataSmart(MutableMapping): | |||
| 816 | continue | 817 | continue |
| 817 | if key in deleted: | 818 | if key in deleted: |
| 818 | continue | 819 | continue |
| 820 | if key in overrides: | ||
| 821 | continue | ||
| 819 | if not d[key]: | 822 | if not d[key]: |
| 820 | deleted.add(key) | 823 | deleted.add(key) |
| 821 | continue | 824 | continue |
| @@ -826,9 +829,21 @@ class DataSmart(MutableMapping): | |||
| 826 | 829 | ||
| 827 | return klist | 830 | return klist |
| 828 | 831 | ||
| 832 | self.need_overrides() | ||
| 833 | for var in self.overridedata: | ||
| 834 | for (r, o) in self.overridedata[var]: | ||
| 835 | if o in self.overridesset: | ||
| 836 | overrides.add(var) | ||
| 837 | elif "_" in o: | ||
| 838 | if set(o.split("_")).issubset(self.overridesset): | ||
| 839 | overrides.add(var) | ||
| 840 | |||
| 829 | for k in keylist(self.dict): | 841 | for k in keylist(self.dict): |
| 830 | yield k | 842 | yield k |
| 831 | 843 | ||
| 844 | for k in overrides: | ||
| 845 | yield k | ||
| 846 | |||
| 832 | def __len__(self): | 847 | def __len__(self): |
| 833 | return len(frozenset(self)) | 848 | return len(frozenset(self)) |
| 834 | 849 | ||
