summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/data_smart.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/data_smart.py')
-rw-r--r--bitbake/lib/bb/data_smart.py20
1 files changed, 17 insertions, 3 deletions
diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py
index 1d8774ee5e..c46d3f0a08 100644
--- a/bitbake/lib/bb/data_smart.py
+++ b/bitbake/lib/bb/data_smart.py
@@ -17,7 +17,7 @@ BitBake build tools.
17# Based on functions from the base bb module, Copyright 2003 Holger Schurig 17# Based on functions from the base bb module, Copyright 2003 Holger Schurig
18 18
19import copy, re, sys, traceback 19import copy, re, sys, traceback
20from collections import MutableMapping 20from collections.abc import MutableMapping
21import logging 21import logging
22import hashlib 22import hashlib
23import bb, bb.codeparser 23import bb, bb.codeparser
@@ -28,7 +28,7 @@ logger = logging.getLogger("BitBake.Data")
28 28
29__setvar_keyword__ = ["_append", "_prepend", "_remove"] 29__setvar_keyword__ = ["_append", "_prepend", "_remove"]
30__setvar_regexp__ = re.compile(r'(?P<base>.*?)(?P<keyword>_append|_prepend|_remove)(_(?P<add>[^A-Z]*))?$') 30__setvar_regexp__ = re.compile(r'(?P<base>.*?)(?P<keyword>_append|_prepend|_remove)(_(?P<add>[^A-Z]*))?$')
31__expand_var_regexp__ = re.compile(r"\${[a-zA-Z0-9\-_+./~]+?}") 31__expand_var_regexp__ = re.compile(r"\${[a-zA-Z0-9\-_+./~:]+?}")
32__expand_python_regexp__ = re.compile(r"\${@.+?}") 32__expand_python_regexp__ = re.compile(r"\${@.+?}")
33__whitespace_split__ = re.compile(r'(\s)') 33__whitespace_split__ = re.compile(r'(\s)')
34__override_regexp__ = re.compile(r'[a-z0-9]+') 34__override_regexp__ = re.compile(r'[a-z0-9]+')
@@ -403,7 +403,7 @@ class DataSmart(MutableMapping):
403 s = __expand_python_regexp__.sub(varparse.python_sub, s) 403 s = __expand_python_regexp__.sub(varparse.python_sub, s)
404 except SyntaxError as e: 404 except SyntaxError as e:
405 # Likely unmatched brackets, just don't expand the expression 405 # Likely unmatched brackets, just don't expand the expression
406 if e.msg != "EOL while scanning string literal": 406 if e.msg != "EOL while scanning string literal" and not e.msg.startswith("unterminated string literal"):
407 raise 407 raise
408 if s == olds: 408 if s == olds:
409 break 409 break
@@ -411,6 +411,8 @@ class DataSmart(MutableMapping):
411 raise 411 raise
412 except bb.parse.SkipRecipe: 412 except bb.parse.SkipRecipe:
413 raise 413 raise
414 except bb.BBHandledException:
415 raise
414 except Exception as exc: 416 except Exception as exc:
415 tb = sys.exc_info()[2] 417 tb = sys.exc_info()[2]
416 raise ExpansionError(varname, s, exc).with_traceback(tb) from exc 418 raise ExpansionError(varname, s, exc).with_traceback(tb) from exc
@@ -481,6 +483,7 @@ class DataSmart(MutableMapping):
481 483
482 def setVar(self, var, value, **loginfo): 484 def setVar(self, var, value, **loginfo):
483 #print("var=" + str(var) + " val=" + str(value)) 485 #print("var=" + str(var) + " val=" + str(value))
486 var = var.replace(":", "_")
484 self.expand_cache = {} 487 self.expand_cache = {}
485 parsing=False 488 parsing=False
486 if 'parsing' in loginfo: 489 if 'parsing' in loginfo:
@@ -589,6 +592,8 @@ class DataSmart(MutableMapping):
589 """ 592 """
590 Rename the variable key to newkey 593 Rename the variable key to newkey
591 """ 594 """
595 key = key.replace(":", "_")
596 newkey = newkey.replace(":", "_")
592 if key == newkey: 597 if key == newkey:
593 bb.warn("Calling renameVar with equivalent keys (%s) is invalid" % key) 598 bb.warn("Calling renameVar with equivalent keys (%s) is invalid" % key)
594 return 599 return
@@ -637,6 +642,7 @@ class DataSmart(MutableMapping):
637 self.setVar(var + "_prepend", value, ignore=True, parsing=True) 642 self.setVar(var + "_prepend", value, ignore=True, parsing=True)
638 643
639 def delVar(self, var, **loginfo): 644 def delVar(self, var, **loginfo):
645 var = var.replace(":", "_")
640 self.expand_cache = {} 646 self.expand_cache = {}
641 647
642 loginfo['detail'] = "" 648 loginfo['detail'] = ""
@@ -664,6 +670,7 @@ class DataSmart(MutableMapping):
664 override = None 670 override = None
665 671
666 def setVarFlag(self, var, flag, value, **loginfo): 672 def setVarFlag(self, var, flag, value, **loginfo):
673 var = var.replace(":", "_")
667 self.expand_cache = {} 674 self.expand_cache = {}
668 675
669 if 'op' not in loginfo: 676 if 'op' not in loginfo:
@@ -687,6 +694,7 @@ class DataSmart(MutableMapping):
687 self.dict["__exportlist"]["_content"].add(var) 694 self.dict["__exportlist"]["_content"].add(var)
688 695
689 def getVarFlag(self, var, flag, expand=True, noweakdefault=False, parsing=False, retparser=False): 696 def getVarFlag(self, var, flag, expand=True, noweakdefault=False, parsing=False, retparser=False):
697 var = var.replace(":", "_")
690 if flag == "_content": 698 if flag == "_content":
691 cachename = var 699 cachename = var
692 else: 700 else:
@@ -814,6 +822,7 @@ class DataSmart(MutableMapping):
814 return value 822 return value
815 823
816 def delVarFlag(self, var, flag, **loginfo): 824 def delVarFlag(self, var, flag, **loginfo):
825 var = var.replace(":", "_")
817 self.expand_cache = {} 826 self.expand_cache = {}
818 827
819 local_var, _ = self._findVar(var) 828 local_var, _ = self._findVar(var)
@@ -831,6 +840,7 @@ class DataSmart(MutableMapping):
831 del self.dict[var][flag] 840 del self.dict[var][flag]
832 841
833 def appendVarFlag(self, var, flag, value, **loginfo): 842 def appendVarFlag(self, var, flag, value, **loginfo):
843 var = var.replace(":", "_")
834 loginfo['op'] = 'append' 844 loginfo['op'] = 'append'
835 loginfo['flag'] = flag 845 loginfo['flag'] = flag
836 self.varhistory.record(**loginfo) 846 self.varhistory.record(**loginfo)
@@ -838,6 +848,7 @@ class DataSmart(MutableMapping):
838 self.setVarFlag(var, flag, newvalue, ignore=True) 848 self.setVarFlag(var, flag, newvalue, ignore=True)
839 849
840 def prependVarFlag(self, var, flag, value, **loginfo): 850 def prependVarFlag(self, var, flag, value, **loginfo):
851 var = var.replace(":", "_")
841 loginfo['op'] = 'prepend' 852 loginfo['op'] = 'prepend'
842 loginfo['flag'] = flag 853 loginfo['flag'] = flag
843 self.varhistory.record(**loginfo) 854 self.varhistory.record(**loginfo)
@@ -845,6 +856,7 @@ class DataSmart(MutableMapping):
845 self.setVarFlag(var, flag, newvalue, ignore=True) 856 self.setVarFlag(var, flag, newvalue, ignore=True)
846 857
847 def setVarFlags(self, var, flags, **loginfo): 858 def setVarFlags(self, var, flags, **loginfo):
859 var = var.replace(":", "_")
848 self.expand_cache = {} 860 self.expand_cache = {}
849 infer_caller_details(loginfo) 861 infer_caller_details(loginfo)
850 if not var in self.dict: 862 if not var in self.dict:
@@ -859,6 +871,7 @@ class DataSmart(MutableMapping):
859 self.dict[var][i] = flags[i] 871 self.dict[var][i] = flags[i]
860 872
861 def getVarFlags(self, var, expand = False, internalflags=False): 873 def getVarFlags(self, var, expand = False, internalflags=False):
874 var = var.replace(":", "_")
862 local_var, _ = self._findVar(var) 875 local_var, _ = self._findVar(var)
863 flags = {} 876 flags = {}
864 877
@@ -875,6 +888,7 @@ class DataSmart(MutableMapping):
875 888
876 889
877 def delVarFlags(self, var, **loginfo): 890 def delVarFlags(self, var, **loginfo):
891 var = var.replace(":", "_")
878 self.expand_cache = {} 892 self.expand_cache = {}
879 if not var in self.dict: 893 if not var in self.dict:
880 self._makeShadowCopy(var) 894 self._makeShadowCopy(var)