diff options
Diffstat (limited to 'bitbake/lib/bb/data_smart.py')
-rw-r--r-- | bitbake/lib/bb/data_smart.py | 20 |
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 | ||
19 | import copy, re, sys, traceback | 19 | import copy, re, sys, traceback |
20 | from collections import MutableMapping | 20 | from collections.abc import MutableMapping |
21 | import logging | 21 | import logging |
22 | import hashlib | 22 | import hashlib |
23 | import bb, bb.codeparser | 23 | import 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) |