@@ -835,17 +835,6 @@ overrides::
VARIABLE = ""
VARIABLE:someoverride = "myclass"
-Another method is by using :ref:`anonymous Python
-<bitbake-user-manual/bitbake-user-manual-metadata:Anonymous Python Functions>`.
-Here is an example::
-
- python () {
- if condition == value:
- d.setVar('VARIABLE', 'myclass')
- else:
- d.setVar('VARIABLE', '')
- }
-
Alternatively, you could use an inline Python expression in the
following form::
@@ -859,6 +848,14 @@ In all cases, if the expression evaluates to an
empty string, the statement does not trigger a syntax error because it
becomes a no-op.
+.. warning::
+
+ Setting or modifying variables within an :ref:`anonymous Python function
+ <bitbake-user-manual/bitbake-user-manual-metadata:Anonymous Python Functions>`
+ will have no impact on the value of that variable in an
+ :ref:`inherit_defer <ref-bitbake-user-manual-metadata-inherit-defer>` directive
+ as the function is run after the directive is resolved.
+
See also :term:`BB_DEFER_BBCLASSES` for automatically promoting classes
``inherit`` calls to ``inherit_defer``.
The documentation for inherit_defer suggested that conditional inheritance can be achieved by setting a variable inside an anonymous python function and then referencing it from inherit_defer. This does not work: inherit_defer is resolved before the anonymous Python functions run. Replace the example with a warning explaining that anonymous Python functions cannot be used to drive inherit_defer, since they run after the directive has already been resolved. Suggested-by: Quentin Schulz <quentin.schulz@cherry.de> Signed-off-by: Dawid Bijak <bijak.dawid@gmail.com> --- .../bitbake-user-manual-metadata.rst | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-)