Re: [PATCH 2/3] kconfig: doc: document behavior of 'select' and 'imply' followed by 'if'

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On 6/3/24 9:19 AM, Masahiro Yamada wrote:
> Documentation/kbuild/kconfig-language.rst explains the behavior of
> 'select' as follows:
> 
>   reverse dependencies can be used to force a lower limit of
>   another symbol. The value of the current menu symbol is used as the
>   minimal value <symbol> can be set to.
> 
> This is not true when the 'select' property is followed by 'if'.
> 
> [Test Code]
> 
>     config MODULES
>             def_bool y
>             modules
> 
>     config A
>             def_tristate y
>             select C if B
> 
>     config B
>             def_tristate m
> 
>     config C
>             tristate
> 
> [Result]
> 
>     CONFIG_MODULES=y
>     CONFIG_A=y
>     CONFIG_B=m
>     CONFIG_C=m
> 
> If "the value of A is used as the minimal value C can be set to",
> C must be 'y'.
> 
> The actual behavior is "C is selected by (A && B)". The lower limit of
> C is downgraded due to B being 'm'.
> 
> I have always thought this behavior was odd, and this ha arisen several

                                                        has

> times in the mailing list.
> 
> I do not know whether it is a bug or intended behavior. Anyway, it is
> not feasible to change it now because many Kconfig files rely on this
> behavior. The same applies to 'imply'.
> 
> Document this (but reserve the possibility for a future change).
> 
> Signed-off-by: Masahiro Yamada <masahiroy@xxxxxxxxxx>

Reviewed-by: Randy Dunlap <rdunlap@xxxxxxxxxxxxx>

Thanks.

> ---
> 
>  Documentation/kbuild/kconfig-language.rst | 10 ++++++++++
>  1 file changed, 10 insertions(+)
> 
> diff --git a/Documentation/kbuild/kconfig-language.rst b/Documentation/kbuild/kconfig-language.rst
> index 86be5b857cc4..1fb3f5e6193c 100644
> --- a/Documentation/kbuild/kconfig-language.rst
> +++ b/Documentation/kbuild/kconfig-language.rst
> @@ -150,6 +150,12 @@ applicable everywhere (see syntax).
>  	That will limit the usefulness but on the other hand avoid
>  	the illegal configurations all over.
>  
> +	If "select" <symbol> is followed by "if" <expr>, <symbol> will be
> +	selected by the logical AND of the value of the current menu symbol
> +	and <expr>. This means, the lower limit can be downgraded due to the
> +	presence of "if" <expr>. This behavior may seem weird, but we rely on
> +	it. (The future of this behavior is undecided.)
> +
>  - weak reverse dependencies: "imply" <symbol> ["if" <expr>]
>  
>    This is similar to "select" as it enforces a lower limit on another
> @@ -202,6 +208,10 @@ applicable everywhere (see syntax).
>  	imply BAR
>  	imply BAZ
>  
> +  Note: If "imply" <symbol> is followed by "if" <expr>, the default of <symbol>
> +  will be the logical AND of the value of the current menu symbol and <expr>.
> +  (The future of this behavior is undecided.)
> +
>  - limiting menu display: "visible if" <expr>
>  
>    This attribute is only applicable to menu blocks, if the condition is

-- 
#Randy
https://people.kernel.org/tglx/notes-about-netiquette
https://subspace.kernel.org/etiquette.html




[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux