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.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/bitbake/lib/bb/parse/ast.py b/bitbake/lib/bb/parse/ast.py
index d30b688965..7581d003fd 100644
--- a/bitbake/lib/bb/parse/ast.py
+++ b/bitbake/lib/bb/parse/ast.py
@@ -314,6 +314,16 @@ class InheritNode(AstNode):
314 def eval(self, data): 314 def eval(self, data):
315 bb.parse.BBHandler.inherit(self.classes, self.filename, self.lineno, data) 315 bb.parse.BBHandler.inherit(self.classes, self.filename, self.lineno, data)
316 316
317class InheritDeferredNode(AstNode):
318 def __init__(self, filename, lineno, classes):
319 AstNode.__init__(self, filename, lineno)
320 self.inherit = (classes, filename, lineno)
321
322 def eval(self, data):
323 inherits = data.getVar('__BBDEFINHERITS', False) or []
324 inherits.append(self.inherit)
325 data.setVar('__BBDEFINHERITS', inherits)
326
317def handleInclude(statements, filename, lineno, m, force): 327def handleInclude(statements, filename, lineno, m, force):
318 statements.append(IncludeNode(filename, lineno, m.group(1), force)) 328 statements.append(IncludeNode(filename, lineno, m.group(1), force))
319 329
@@ -364,6 +374,10 @@ def handleInherit(statements, filename, lineno, m):
364 classes = m.group(1) 374 classes = m.group(1)
365 statements.append(InheritNode(filename, lineno, classes)) 375 statements.append(InheritNode(filename, lineno, classes))
366 376
377def handleInheritDeferred(statements, filename, lineno, m):
378 classes = m.group(1)
379 statements.append(InheritDeferredNode(filename, lineno, classes))
380
367def runAnonFuncs(d): 381def runAnonFuncs(d):
368 code = [] 382 code = []
369 for funcname in d.getVar("__BBANONFUNCS", False) or []: 383 for funcname in d.getVar("__BBANONFUNCS", False) or []:
@@ -430,6 +444,14 @@ def multi_finalize(fn, d):
430 logger.debug("Appending .bbappend file %s to %s", append, fn) 444 logger.debug("Appending .bbappend file %s to %s", append, fn)
431 bb.parse.BBHandler.handle(append, d, True) 445 bb.parse.BBHandler.handle(append, d, True)
432 446
447 while True:
448 inherits = d.getVar('__BBDEFINHERITS', False) or []
449 if not inherits:
450 break
451 inherit, filename, lineno = inherits.pop(0)
452 d.setVar('__BBDEFINHERITS', inherits)
453 bb.parse.BBHandler.inherit(inherit, filename, lineno, d, deferred=True)
454
433 onlyfinalise = d.getVar("__ONLYFINALISE", False) 455 onlyfinalise = d.getVar("__ONLYFINALISE", False)
434 456
435 safe_d = d 457 safe_d = d