Re: [PATCH 2/2] kconfig: Make comments look different than menus in .config

From: Masahiro Yamada
Date: Sat Feb 19 2022 - 23:18:51 EST


On Sat, Feb 19, 2022 at 3:55 AM Ariel Marcovitch
<arielmarcovitch@xxxxxxxxx> wrote:
>
> On 18/01/2022 20:25, Masahiro Yamada wrote:
> > On Mon, Dec 13, 2021 at 7:01 PM Ariel Marcovitch
> > <arielmarcovitch@xxxxxxxxx> wrote:
> >> Currently, the same code that handles menus in the write to .config
> >> handles comments as well. That's why comments look exactly like menus in
> >> the .config except for the 'end of menu' comments that appear only for
> >> menus. This makes sense because sometimes comments are used as sort of
> >> submenus. However for the other cases, it looks kinda weird because one
> >> might attempt to look for the 'end of menu' for comments as well and be
> >> very confused.
> >>
> >> Make comments look different than menus. For the following:
> >> ```kconfig
> >> menu "Stuff"
> >>
> >> config FOO
> >> def_bool y
> >>
> >> comment "Some comment"
> >>
> >> config BAR
> >> def_bool n
> >>
> >> endmenu
> >> ```
> >>
> >> The .config will look like this:
> >> ```
> >> #
> >> # Stuff
> >> #
> >> CONFIG_FOO=y
> >>
> >> ### Some comment
> >> # CONFIG_BAR is not defined
> >> # end of Stuff
> >>
> >> ```
> >>
> >> Signed-off-by: Ariel Marcovitch <arielmarcovitch@xxxxxxxxx>
> >> ---
> >> scripts/kconfig/confdata.c | 14 ++++++++++----
> >> 1 file changed, 10 insertions(+), 4 deletions(-)
> >>
> >> diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
> >> index 9f2c22f46ee0..d3ec1ad67d92 100644
> >> --- a/scripts/kconfig/confdata.c
> >> +++ b/scripts/kconfig/confdata.c
> >> @@ -880,10 +880,16 @@ int conf_write(const char *name)
> >>
> >> if (type == P_MENU || type == P_COMMENT) {
> >> str = menu_get_prompt(menu);
> >> - fprintf(out, "\n"
> >> - "#\n"
> >> - "# %s\n"
> >> - "#\n", str);
> >> +
> >> + if (type == P_MENU)
> >> + fprintf(out, "\n"
> >> + "#\n"
> >> + "# %s\n"
> >> + "#\n", str);
> >> + else
> >> + fprintf(out, "\n"
> >> + "### %s\n", str);
> >> +
> >> need_newline = false;
> >> }
> >> }
> >> --
> >> 2.25.1
> >>
> >
> > Since "# CONFIG... is not set" looks like a comment,
> > I am not sure if this improves the visibility.
>
> I agree that adding another '#' signs to the real comments doesn't solve
> the real
> problem here, being that kconfig uses comments to save actual information
>
> I guess this is for being able to check for a config in shell script
> with [[ -n $CONFIG_FOO ]]?

Maybe.
Also "ifdef CONFIG_FOO" in Makefile.

In the old days, the .config was directly included.

These days, the .config is used for the purpose of
saving the configuration, and include/config/auto.conf



>
> Although if that's the case, leaving the config empty has the same
> effect, no? And then
> we can add a comment to the end of the definition stating that the
> config is unset.
> Something like this:
>
> CONFIG_FOO=y
> CONFIG_BAR= # is not set

The most natural expression is:

CONFIG_BAR=n







--
Best Regards
Masahiro Yamada