diff options
author | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-05-23 10:47:10 +0100 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-05-24 10:34:52 +0100 |
commit | 8bef99d3c85f48ff409eaebb964b1c45b203bdcf (patch) | |
tree | 45663874832e85f9c80d6df9d521357a4e5dcb77 /bitbake/lib/bb/parse | |
parent | 3c5b9cf15f2034b704f571a75ad102cc57f9a3b6 (diff) | |
download | poky-8bef99d3c85f48ff409eaebb964b1c45b203bdcf.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: 4d50690489ee8dc329a9b0c7bc4ceb29b71e95e9)
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/bb/parse')
-rw-r--r-- | bitbake/lib/bb/parse/ast.py | 8 | ||||
-rw-r--r-- | bitbake/lib/bb/parse/parse_py/BBHandler.py | 4 |
2 files changed, 3 insertions, 9 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) |
diff --git a/bitbake/lib/bb/parse/parse_py/BBHandler.py b/bitbake/lib/bb/parse/parse_py/BBHandler.py index 87a1530cb5..01f22d3b24 100644 --- a/bitbake/lib/bb/parse/parse_py/BBHandler.py +++ b/bitbake/lib/bb/parse/parse_py/BBHandler.py | |||
@@ -167,10 +167,6 @@ def handle(fn, d, include): | |||
167 | if oldfile: | 167 | if oldfile: |
168 | d.setVar("FILE", oldfile) | 168 | d.setVar("FILE", oldfile) |
169 | 169 | ||
170 | # we have parsed the bb class now | ||
171 | if ext == ".bbclass" or ext == ".inc": | ||
172 | bb.methodpool.set_parsed_module(base_name) | ||
173 | |||
174 | return d | 170 | return d |
175 | 171 | ||
176 | def feeder(lineno, s, fn, root, statements): | 172 | def feeder(lineno, s, fn, root, statements): |