aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/bb/cooker.py2
-rw-r--r--lib/bb/methodpool.py42
-rw-r--r--lib/bb/parse/ast.py8
-rw-r--r--lib/bb/parse/parse_py/BBHandler.py4
4 files changed, 5 insertions, 51 deletions
diff --git a/lib/bb/cooker.py b/lib/bb/cooker.py
index daf37ebd4..eed489f5d 100644
--- a/lib/bb/cooker.py
+++ b/lib/bb/cooker.py
@@ -1454,6 +1454,7 @@ class Parser(multiprocessing.Process):
self.quit = quit
self.init = init
multiprocessing.Process.__init__(self)
+ self.context = bb.utils._context.copy()
def run(self):
if self.init:
@@ -1488,6 +1489,7 @@ class Parser(multiprocessing.Process):
def parse(self, filename, appends, caches_array):
try:
+ bb.utils._context = self.context.copy()
return True, bb.cache.Cache.parse(filename, appends, self.cfg, caches_array)
except Exception as exc:
tb = sys.exc_info()[2]
diff --git a/lib/bb/methodpool.py b/lib/bb/methodpool.py
index 8ad23c650..bf2e9f554 100644
--- a/lib/bb/methodpool.py
+++ b/lib/bb/methodpool.py
@@ -17,24 +17,7 @@
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-
-"""
- What is a method pool?
-
- BitBake has a global method scope where .bb, .inc and .bbclass
- files can install methods. These methods are parsed from strings.
- To avoid recompiling and executing these string we introduce
- a method pool to do this task.
-
- This pool will be used to compile and execute the functions. It
- will be smart enough to
-"""
-
from bb.utils import better_compile, better_exec
-from bb import error
-
-# A dict of function names we have seen
-_parsed_fns = { }
def insert_method(modulename, code, fn):
"""
@@ -44,28 +27,3 @@ def insert_method(modulename, code, fn):
comp = better_compile(code, modulename, fn )
better_exec(comp, None, code, fn)
- # now some instrumentation
- code = comp.co_names
- for name in code:
- if name in ['None', 'False']:
- continue
- elif name in _parsed_fns and not _parsed_fns[name] == modulename:
- bb.fatal("The function %s defined in %s was already declared in %s. BitBake has a global python function namespace so shared functions should be declared in a common include file rather than being duplicated, or if the functions are different, please use different function names." % (name, modulename, _parsed_fns[name]))
- else:
- _parsed_fns[name] = modulename
-
-# A dict of modules the parser has finished with
-_parsed_methods = {}
-
-def parsed_module(modulename):
- """
- Has module been parsed?
- """
- return modulename in _parsed_methods
-
-def set_parsed_module(modulename):
- """
- Set module as parsed
- """
- _parsed_methods[modulename] = True
-
diff --git a/lib/bb/parse/ast.py b/lib/bb/parse/ast.py
index b2657f804..713bef1cc 100644
--- a/lib/bb/parse/ast.py
+++ b/lib/bb/parse/ast.py
@@ -148,9 +148,8 @@ class MethodNode(AstNode):
text = '\n'.join(self.body)
if self.func_name == "__anonymous":
funcname = ("__anon_%s_%s" % (self.lineno, self.filename.translate(string.maketrans('/.+-', '____'))))
- if not funcname in bb.methodpool._parsed_fns:
- text = "def %s(d):\n" % (funcname) + text
- bb.methodpool.insert_method(funcname, text, self.filename)
+ text = "def %s(d):\n" % (funcname) + text
+ bb.methodpool.insert_method(funcname, text, self.filename)
anonfuncs = data.getVar('__BBANONFUNCS') or []
anonfuncs.append(funcname)
data.setVar('__BBANONFUNCS', anonfuncs)
@@ -171,8 +170,7 @@ class PythonMethodNode(AstNode):
# 'this' file. This means we will not parse methods from
# bb classes twice
text = '\n'.join(self.body)
- if not bb.methodpool.parsed_module(self.modulename):
- bb.methodpool.insert_method(self.modulename, text, self.filename)
+ bb.methodpool.insert_method(self.modulename, text, self.filename)
data.setVarFlag(self.function, "func", 1)
data.setVarFlag(self.function, "python", 1)
data.setVar(self.function, text)
diff --git a/lib/bb/parse/parse_py/BBHandler.py b/lib/bb/parse/parse_py/BBHandler.py
index 87a1530cb..01f22d3b2 100644
--- a/lib/bb/parse/parse_py/BBHandler.py
+++ b/lib/bb/parse/parse_py/BBHandler.py
@@ -167,10 +167,6 @@ def handle(fn, d, include):
if oldfile:
d.setVar("FILE", oldfile)
- # we have parsed the bb class now
- if ext == ".bbclass" or ext == ".inc":
- bb.methodpool.set_parsed_module(base_name)
-
return d
def feeder(lineno, s, fn, root, statements):