diff options
Diffstat (limited to 'bitbake/lib/bb/parse/ast.py')
-rw-r--r-- | bitbake/lib/bb/parse/ast.py | 63 |
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 | ||
181 | class ExportFuncsNode(AstNode): | 181 | class 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 | ||
221 | class AddTaskNode(AstNode): | 212 | class 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) | |||
288 | def handleMethodFlags(statements, filename, lineno, key, m): | 279 | def handleMethodFlags(statements, filename, lineno, key, m): |
289 | statements.append(MethodFlagsNode(filename, lineno, key, m)) | 280 | statements.append(MethodFlagsNode(filename, lineno, key, m)) |
290 | 281 | ||
291 | def handleExportFuncs(statements, filename, lineno, m, classes): | 282 | def 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 | ||
294 | def handleAddTask(statements, filename, lineno, m): | 285 | def handleAddTask(statements, filename, lineno, m): |
295 | func = m.group("func") | 286 | func = m.group("func") |