Re: [docs] [PATCH v4] doc: bitbake-user-manual-metadata: document inherit_defer limitations

"Antonin Godard" <[email protected]> Fri, 22 May 2026 17:39:34 +0200
Newsgroups org.openembedded.lists.bitbake-devel,org.yoctoproject.lists.docs
Message-ID <[email protected]>
On Sat May 16, 2026 at 9:11 PM CEST, Dawid Bijak via lists.yoctoproject.org wrote:
> Add a warning explaining that anonymous Python functions cannot be
> used to influence inherit_defer, since they run after the directive has
> already been resolved.
>
> Also rename VARNAME to VARIABLE for consistency throughout the
> documentation.
>
> Suggested-by: Quentin Schulz <[email protected]>
> Signed-off-by: Dawid Bijak <[email protected]>
> ---
>  .../bitbake-user-manual-metadata.rst           | 18 +++++++++++++-----
>  1 file changed, 13 insertions(+), 5 deletions(-)
>
> diff --git a/doc/bitbake-user-manual/bitbake-user-manual-metadata.rst b/doc/bitbake-user-manual/bitbake-user-manual-metadata.rst
> index 0c7c3ff99..134cf8ff1 100644
> --- a/doc/bitbake-user-manual/bitbake-user-manual-metadata.rst
> +++ b/doc/bitbake-user-manual/bitbake-user-manual-metadata.rst
> @@ -827,17 +827,17 @@ the variable after the line is parsed will take effect. With the :ref:`inherit
>  
>  Here is an example::
>  
> -   inherit_defer ${VARNAME}
> +   inherit_defer ${VARIABLE}
>  
>  One way to achieve a conditional inherit in this case is to use
>  overrides::
>  
> -   VARNAME = ""
> -   VARNAME:someoverride = "myclass"
> +   VARIABLE = ""
> +   VARIABLE:someoverride = "myclass"
>  
>  :ref:`inherit_defer <ref-bitbake-user-manual-metadata-inherit-defer>`
> -defers the evaluation of ``${VARNAME}`` until the end of
> -parsing. Assuming ``someoverride`` is in :term:`OVERRIDES`, ``${VARNAME}``
> +defers the evaluation of ``${VARIABLE}`` until the end of
> +parsing. Assuming ``someoverride`` is in :term:`OVERRIDES`, ``${VARIABLE}``
>  expands to ``myclass``, which is then inherited.
>  
>  Alternatively, you could use an inline Python expression in the
> @@ -853,6 +853,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 runs after the directive has been resolved.
> +
>  See also :term:`BB_DEFER_BBCLASSES` for automatically promoting classes
>  ``inherit`` calls to ``inherit_defer``.
>  

Reviewed-by: Antonin Godard <[email protected]>

Thanks!
Antonin