diff options
Diffstat (limited to 'bitbake/lib/bb/data_smart.py')
-rw-r--r-- | bitbake/lib/bb/data_smart.py | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py index 8e7dd98384..2e0d308588 100644 --- a/bitbake/lib/bb/data_smart.py +++ b/bitbake/lib/bb/data_smart.py | |||
@@ -24,6 +24,7 @@ from collections.abc import MutableMapping | |||
24 | import logging | 24 | import logging |
25 | import hashlib | 25 | import hashlib |
26 | import bb, bb.codeparser | 26 | import bb, bb.codeparser |
27 | import bb.filter | ||
27 | from bb import utils | 28 | from bb import utils |
28 | from bb.COW import COWDictBase | 29 | from bb.COW import COWDictBase |
29 | 30 | ||
@@ -427,6 +428,7 @@ class DataSmart(MutableMapping): | |||
427 | 428 | ||
428 | self.inchistory = IncludeHistory() | 429 | self.inchistory = IncludeHistory() |
429 | self.varhistory = VariableHistory(self) | 430 | self.varhistory = VariableHistory(self) |
431 | self.filters = {} | ||
430 | self._tracking = False | 432 | self._tracking = False |
431 | self._var_renames = {} | 433 | self._var_renames = {} |
432 | self._var_renames.update(bitbake_renamed_vars) | 434 | self._var_renames.update(bitbake_renamed_vars) |
@@ -678,6 +680,7 @@ class DataSmart(MutableMapping): | |||
678 | 680 | ||
679 | srcflags = self.getVarFlags(key, False, True) or {} | 681 | srcflags = self.getVarFlags(key, False, True) or {} |
680 | for i in srcflags: | 682 | for i in srcflags: |
683 | |||
681 | if i not in (__setvar_keyword__): | 684 | if i not in (__setvar_keyword__): |
682 | continue | 685 | continue |
683 | src = srcflags[i] | 686 | src = srcflags[i] |
@@ -895,6 +898,12 @@ class DataSmart(MutableMapping): | |||
895 | if expand: | 898 | if expand: |
896 | value = parser.value | 899 | value = parser.value |
897 | 900 | ||
901 | if value and expand and flag == "_content": | ||
902 | basevar = var.split(":")[0] | ||
903 | if basevar in self.filters: | ||
904 | value = bb.filter.apply_filters(value, [self.filters[basevar],]) | ||
905 | parser.value = value | ||
906 | |||
898 | if parser: | 907 | if parser: |
899 | self.expand_cache[cachename] = parser | 908 | self.expand_cache[cachename] = parser |
900 | 909 | ||
@@ -1000,6 +1009,7 @@ class DataSmart(MutableMapping): | |||
1000 | data.varhistory = self.varhistory.copy() | 1009 | data.varhistory = self.varhistory.copy() |
1001 | data.varhistory.dataroot = data | 1010 | data.varhistory.dataroot = data |
1002 | data.inchistory = self.inchistory.copy() | 1011 | data.inchistory = self.inchistory.copy() |
1012 | data.filters = self.filters.copy() | ||
1003 | 1013 | ||
1004 | data._tracking = self._tracking | 1014 | data._tracking = self._tracking |
1005 | data._var_renames = self._var_renames | 1015 | data._var_renames = self._var_renames |
@@ -1028,6 +1038,15 @@ class DataSmart(MutableMapping): | |||
1028 | if referrervalue and isinstance(referrervalue, str) and ref in referrervalue: | 1038 | if referrervalue and isinstance(referrervalue, str) and ref in referrervalue: |
1029 | self.setVar(key, referrervalue.replace(ref, value)) | 1039 | self.setVar(key, referrervalue.replace(ref, value)) |
1030 | 1040 | ||
1041 | def setVarFilter(self, var, filter): | ||
1042 | if filter: | ||
1043 | self.filters[var] = filter | ||
1044 | else: | ||
1045 | try: | ||
1046 | del self.filters[var] | ||
1047 | except KeyError: | ||
1048 | pass | ||
1049 | |||
1031 | def localkeys(self): | 1050 | def localkeys(self): |
1032 | for key in self.dict: | 1051 | for key in self.dict: |
1033 | if key not in ['_data']: | 1052 | if key not in ['_data']: |