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 |
