summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/parse/ast.py
diff options
context:
space:
mode:
authorRichard Purdie <richard.purdie@linuxfoundation.org>2013-09-10 12:33:27 -0400
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-09-11 17:58:33 +0100
commit560fa9ad8dd46f23cff7a2e88a3492c363314b29 (patch)
tree546aaaea213e9b82587747ccd9535226de27f6da /bitbake/lib/bb/parse/ast.py
parentd734ab491a30078d43dee5440c03acce2d251425 (diff)
downloadpoky-560fa9ad8dd46f23cff7a2e88a3492c363314b29.tar.gz
bitbake: methodpool: Retire it, remove global method scope
Having a global method scope confuses users and with the introduction of parallel parsing, its not even possible to correctly detect conflicting functions. Rather than try and fix that, its simpler to retire the global method scope and restrict functions to those locations they're defined within. This is more what users actually expect too. If we remove the global function scope, the need for methodpool is reduced to the point we may as well retire it. There is some small loss of caching of parsed functions but timing measurements so the impact to be neglibile in the overall parsing time. (Bitbake rev: bbb4fa427739912ff3b87379bf629066f6662458) Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org> Tested-by: Denys Dmytriyenko <denys@ti.com>
Diffstat (limited to 'bitbake/lib/bb/parse/ast.py')
-rw-r--r--bitbake/lib/bb/parse/ast.py8
1 files changed, 3 insertions, 5 deletions
diff --git a/bitbake/lib/bb/parse/ast.py b/bitbake/lib/bb/parse/ast.py
index b2657f8044..713bef1cc2 100644
--- a/bitbake/lib/bb/parse/ast.py
+++ b/bitbake/lib/bb/parse/ast.py
@@ -148,9 +148,8 @@ class MethodNode(AstNode):
148 text = '\n'.join(self.body) 148 text = '\n'.join(self.body)
149 if self.func_name == "__anonymous": 149 if self.func_name == "__anonymous":
150 funcname = ("__anon_%s_%s" % (self.lineno, self.filename.translate(string.maketrans('/.+-', '____')))) 150 funcname = ("__anon_%s_%s" % (self.lineno, self.filename.translate(string.maketrans('/.+-', '____'))))
151 if not funcname in bb.methodpool._parsed_fns: 151 text = "def %s(d):\n" % (funcname) + text
152 text = "def %s(d):\n" % (funcname) + text 152 bb.methodpool.insert_method(funcname, text, self.filename)
153 bb.methodpool.insert_method(funcname, text, self.filename)
154 anonfuncs = data.getVar('__BBANONFUNCS') or [] 153 anonfuncs = data.getVar('__BBANONFUNCS') or []
155 anonfuncs.append(funcname) 154 anonfuncs.append(funcname)
156 data.setVar('__BBANONFUNCS', anonfuncs) 155 data.setVar('__BBANONFUNCS', anonfuncs)
@@ -171,8 +170,7 @@ class PythonMethodNode(AstNode):
171 # 'this' file. This means we will not parse methods from 170 # 'this' file. This means we will not parse methods from
172 # bb classes twice 171 # bb classes twice
173 text = '\n'.join(self.body) 172 text = '\n'.join(self.body)
174 if not bb.methodpool.parsed_module(self.modulename): 173 bb.methodpool.insert_method(self.modulename, text, self.filename)
175 bb.methodpool.insert_method(self.modulename, text, self.filename)
176 data.setVarFlag(self.function, "func", 1) 174 data.setVarFlag(self.function, "func", 1)
177 data.setVarFlag(self.function, "python", 1) 175 data.setVarFlag(self.function, "python", 1)
178 data.setVar(self.function, text) 176 data.setVar(self.function, text)