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.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/bitbake/lib/bb/data_smart.py b/bitbake/lib/bb/data_smart.py
index e76fbbf6ce..df9798ad58 100644
--- a/bitbake/lib/bb/data_smart.py
+++ b/bitbake/lib/bb/data_smart.py
@@ -90,6 +90,17 @@ class DataContext(dict):
90 else: 90 else:
91 return value 91 return value
92 92
93class ExpansionError(Exception):
94 def __init__(self, varname, expression, exception):
95 self.expression = expression
96 self.variablename = varname
97 self.exception = exception
98 self.msg = "Failure expanding variable %s, expression was %s which triggered exception %s: %s" % (varname, expression, type(exception).__name__, exception)
99 Exception.__init__(self, self.msg)
100 self.args = (varname, expression, exception)
101 def __str__(self):
102 return self.msg
103
93class DataSmart(MutableMapping): 104class DataSmart(MutableMapping):
94 def __init__(self, special = COWDictBase.copy(), seen = COWDictBase.copy() ): 105 def __init__(self, special = COWDictBase.copy(), seen = COWDictBase.copy() ):
95 self.dict = {} 106 self.dict = {}
@@ -117,9 +128,10 @@ class DataSmart(MutableMapping):
117 s = __expand_python_regexp__.sub(varparse.python_sub, s) 128 s = __expand_python_regexp__.sub(varparse.python_sub, s)
118 if s == olds: 129 if s == olds:
119 break 130 break
120 except Exception: 131 except ExpansionError:
121 logger.exception("Error evaluating '%s'", s)
122 raise 132 raise
133 except Exception as exc:
134 raise ExpansionError(varname, s, exc)
123 135
124 varparse.value = s 136 varparse.value = s
125 137