]> code.ossystems Code Review - openembedded-core.git/commitdiff
bitbake/BBHandler: Save python functions into the dictonary
authorRichard Purdie <rpurdie@linux.intel.com>
Thu, 26 Aug 2010 17:06:30 +0000 (18:06 +0100)
committerRichard Purdie <rpurdie@linux.intel.com>
Tue, 31 Aug 2010 11:08:51 +0000 (12:08 +0100)
Signed-off-by: Richard Purdie <rpurdie@linux.intel.com>
bitbake/lib/bb/parse/ast.py
bitbake/lib/bb/parse/parse_py/BBHandler.py

index eb24e0ddd4aa2858f56993d7277f5956d685cce9..8763362cdf0ff54cf1dbfdbe0f46b547dae572bc 100644 (file)
@@ -137,7 +137,8 @@ class MethodNode:
             bb.data.setVar(self.func_name, '\n'.join(self.body), data)
 
 class PythonMethodNode(AstNode):
-    def __init__(self, root, body, fn):
+    def __init__(self, funcname, root, body, fn):
+        self.func_name = funcname
         self.root = root
         self.body = body
         self.fn = fn
@@ -149,6 +150,9 @@ class PythonMethodNode(AstNode):
         if not bb.methodpool.parsed_module(self.root):
             text = '\n'.join(self.body)
             bb.methodpool.insert_method(self.root, text, self.fn)
+            bb.data.setVarFlag(self.func_name, "func", 1, data)
+            bb.data.setVarFlag(self.func_name, "python", 1, data)
+            bb.data.setVar(self.func_name, text, data)
 
 class MethodFlagsNode(AstNode):
     def __init__(self, key, m):
@@ -270,8 +274,8 @@ def handleData(statements, groupd):
 def handleMethod(statements, func_name, lineno, fn, body):
     statements.append(MethodNode(func_name, body, lineno, fn))
 
-def handlePythonMethod(statements, root, body, fn):
-    statements.append(PythonMethodNode(root, body, fn))
+def handlePythonMethod(statements, funcname, root, body, fn):
+    statements.append(PythonMethodNode(funcname, root, body, fn))
 
 def handleMethodFlags(statements, key, m):
     statements.append(MethodFlagsNode(key, m))
index bb561748816f9c4d67b6333b62a69f44141f624a..51ad10fb92fef02f45d1e23397b1e58bfbe2b45e 100644 (file)
@@ -183,7 +183,7 @@ def feeder(lineno, s, fn, root, statements):
             __body__.append(s)
             return
         else:
-            ast.handlePythonMethod(statements, root, __body__, fn)
+            ast.handlePythonMethod(statements, __inpython__, root, __body__, fn)
             __body__ = []
             __inpython__ = False
 
@@ -210,7 +210,8 @@ def feeder(lineno, s, fn, root, statements):
     m = __def_regexp__.match(s)
     if m:
         __body__.append(s)
-        __inpython__ = True
+        __inpython__ = m.group(1)
+
         return
 
     m = __export_func_regexp__.match(s)