diff --git a/bitbake/lib/bb/event.py b/bitbake/lib/bb/event.py index a12adbc937..b29f0a5568 100644 --- a/bitbake/lib/bb/event.py +++ b/bitbake/lib/bb/event.py @@ -431,6 +431,16 @@ class RecipeEvent(Event): self.fn = fn Event.__init__(self) +class RecipePreDeferredInherits(RecipeEvent): + """ + Called before deferred inherits are processed so code can snoop on class extensions for example + Limitations: It won't see inherits of inherited classes and the data is unexpanded + """ + def __init__(self, fn, inherits): + self.fn = fn + self.inherits = inherits + Event.__init__(self) + class RecipePreFinalise(RecipeEvent): """ Recipe Parsing Complete but not yet finalised""" diff --git a/bitbake/lib/bb/parse/ast.py b/bitbake/lib/bb/parse/ast.py index f9998798d8..5a086b4e95 100644 --- a/bitbake/lib/bb/parse/ast.py +++ b/bitbake/lib/bb/parse/ast.py @@ -471,6 +471,9 @@ def finalize(fn, d, variant = None): if d.getVar("_FAILPARSINGERRORHANDLED", False) == True: raise bb.BBHandledException() + inherits = [x[0] for x in (d.getVar('__BBDEFINHERITS', False) or [('',)])] + bb.event.fire(bb.event.RecipePreDeferredInherits(fn, inherits), d) + while True: inherits = d.getVar('__BBDEFINHERITS', False) or [] if not inherits: