diff options
Diffstat (limited to 'bitbake/lib/bb/data_smart.py')
-rw-r--r-- | bitbake/lib/bb/data_smart.py | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py index 4ad0567c9a..8c4c6a9a32 100644 --- a/bitbake/lib/bb/data_smart.py +++ b/bitbake/lib/bb/data_smart.py | |||
@@ -805,7 +805,7 @@ class DataSmart(MutableMapping): | |||
805 | value = parser.value | 805 | value = parser.value |
806 | 806 | ||
807 | if value and flag == "_content" and local_var is not None and "_remove" in local_var and not parsing: | 807 | if value and flag == "_content" and local_var is not None and "_remove" in local_var and not parsing: |
808 | removes = [] | 808 | removes = {} |
809 | self.need_overrides() | 809 | self.need_overrides() |
810 | for (r, o) in local_var["_remove"]: | 810 | for (r, o) in local_var["_remove"]: |
811 | match = True | 811 | match = True |
@@ -814,14 +814,23 @@ class DataSmart(MutableMapping): | |||
814 | if not o2 in self.overrides: | 814 | if not o2 in self.overrides: |
815 | match = False | 815 | match = False |
816 | if match: | 816 | if match: |
817 | removes.extend(self.expand(r).split()) | 817 | removes[r] = self.expand(r).split() |
818 | 818 | ||
819 | if removes: | 819 | if removes and parser: |
820 | filtered = filter(lambda v: v not in removes, | 820 | parser.removes = set() |
821 | __whitespace_split__.split(value)) | 821 | val = "" |
822 | value = "".join(filtered) | 822 | for v in __whitespace_split__.split(parser.value): |
823 | if parser: | 823 | skip = False |
824 | parser.value = value | 824 | for r in removes: |
825 | if v in removes[r]: | ||
826 | parser.removes.add(r) | ||
827 | skip = True | ||
828 | if skip: | ||
829 | continue | ||
830 | val = val + v | ||
831 | parser.value = val | ||
832 | if expand: | ||
833 | value = parser.value | ||
825 | 834 | ||
826 | if parser: | 835 | if parser: |
827 | self.expand_cache[cachename] = parser | 836 | self.expand_cache[cachename] = parser |