summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/parse/ast.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/parse/ast.py')
-rw-r--r--bitbake/lib/bb/parse/ast.py63
1 files changed, 27 insertions, 36 deletions
diff --git a/bitbake/lib/bb/parse/ast.py b/bitbake/lib/bb/parse/ast.py
index 4caa93e044..79e9f7e170 100644
--- a/bitbake/lib/bb/parse/ast.py
+++ b/bitbake/lib/bb/parse/ast.py
@@ -179,44 +179,35 @@ class MethodFlagsNode(AstNode):
179 data.delVarFlag(self.key, "fakeroot") 179 data.delVarFlag(self.key, "fakeroot")
180 180
181class ExportFuncsNode(AstNode): 181class ExportFuncsNode(AstNode):
182 def __init__(self, filename, lineno, fns, classes): 182 def __init__(self, filename, lineno, fns, classname):
183 AstNode.__init__(self, filename, lineno) 183 AstNode.__init__(self, filename, lineno)
184 self.n = fns.split() 184 self.n = fns.split()
185 self.classes = classes 185 self.classname = classname
186 186
187 def eval(self, data): 187 def eval(self, data):
188 for f in self.n: 188
189 allvars = [] 189 for func in self.n:
190 allvars.append(f) 190 calledfunc = self.classname + "_" + func
191 allvars.append(self.classes[-1] + "_" + f) 191
192 192 if data.getVar(func) and not data.getVarFlag(func, 'export_func'):
193 vars = [[ allvars[0], allvars[1] ]] 193 continue
194 if len(self.classes) > 1 and self.classes[-2] is not None: 194
195 allvars.append(self.classes[-2] + "_" + f) 195 if data.getVar(func):
196 vars = [] 196 data.setVarFlag(func, 'python', None)
197 vars.append([allvars[2], allvars[1]]) 197 data.setVarFlag(func, 'func', None)
198 vars.append([allvars[0], allvars[2]]) 198
199 199 for flag in [ "func", "python" ]:
200 for (var, calledvar) in vars: 200 if data.getVarFlag(calledfunc, flag):
201 if data.getVar(var) and not data.getVarFlag(var, 'export_func'): 201 data.setVarFlag(func, flag, data.getVarFlag(calledfunc, flag))
202 continue 202 for flag in [ "dirs" ]:
203 203 if data.getVarFlag(func, flag):
204 if data.getVar(var): 204 data.setVarFlag(calledfunc, flag, data.getVarFlag(func, flag))
205 data.setVarFlag(var, 'python', None) 205
206 data.setVarFlag(var, 'func', None) 206 if data.getVarFlag(calledfunc, "python"):
207 207 data.setVar(func, " bb.build.exec_func('" + calledfunc + "', d)\n")
208 for flag in [ "func", "python" ]: 208 else:
209 if data.getVarFlag(calledvar, flag): 209 data.setVar(func, " " + calledfunc + "\n")
210 data.setVarFlag(var, flag, data.getVarFlag(calledvar, flag)) 210 data.setVarFlag(func, 'export_func', '1')
211 for flag in [ "dirs" ]:
212 if data.getVarFlag(var, flag):
213 data.setVarFlag(calledvar, flag, data.getVarFlag(var, flag))
214
215 if data.getVarFlag(calledvar, "python"):
216 data.setVar(var, " bb.build.exec_func('" + calledvar + "', d)\n")
217 else:
218 data.setVar(var, " " + calledvar + "\n")
219 data.setVarFlag(var, 'export_func', '1')
220 211
221class AddTaskNode(AstNode): 212class AddTaskNode(AstNode):
222 def __init__(self, filename, lineno, func, before, after): 213 def __init__(self, filename, lineno, func, before, after):
@@ -288,8 +279,8 @@ def handlePythonMethod(statements, filename, lineno, funcname, modulename, body)
288def handleMethodFlags(statements, filename, lineno, key, m): 279def handleMethodFlags(statements, filename, lineno, key, m):
289 statements.append(MethodFlagsNode(filename, lineno, key, m)) 280 statements.append(MethodFlagsNode(filename, lineno, key, m))
290 281
291def handleExportFuncs(statements, filename, lineno, m, classes): 282def handleExportFuncs(statements, filename, lineno, m, classname):
292 statements.append(ExportFuncsNode(filename, lineno, m.group(1), classes)) 283 statements.append(ExportFuncsNode(filename, lineno, m.group(1), classname))
293 284
294def handleAddTask(statements, filename, lineno, m): 285def handleAddTask(statements, filename, lineno, m):
295 func = m.group("func") 286 func = m.group("func")