diff options
| -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']: |
