summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/data_smart.py19
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
24import logging 24import logging
25import hashlib 25import hashlib
26import bb, bb.codeparser 26import bb, bb.codeparser
27import bb.filter
27from bb import utils 28from bb import utils
28from bb.COW import COWDictBase 29from 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']: