Re: [v3 1/1] kconfig: Terminate menu blocks with a comment in the generated config
From: Masahiro Yamada
Date: Sat May 18 2019 - 02:33:40 EST
On Sat, May 18, 2019 at 4:42 AM Alexander Popov <alex.popov@xxxxxxxxx> wrote:
>
> Currently menu blocks start with a pretty header but end with nothing in
> the generated config. So next config options stick together with the
> options from the menu block.
>
> Let's terminate menu blocks in the generated config with a comment and
> a newline if needed. Example:
>
> ...
> CONFIG_BPF_STREAM_PARSER=y
> CONFIG_NET_FLOW_LIMIT=y
>
> #
> # Network testing
> #
> CONFIG_NET_PKTGEN=y
> CONFIG_NET_DROP_MONITOR=y
> # end of Network testing
> # end of Networking options
>
> CONFIG_HAMRADIO=y
> ...
>
> Signed-off-by: Alexander Popov <alex.popov@xxxxxxxxx>
Applied to linux-kbuild. Thanks.
> ---
>
> v3 changes:
> - rebase onto the recent rc;
> - don't print the end comment for the rootmenu to avoid breaking
> 'make testconfig' (thanks to Masahiro Yamada).
>
> ---
> scripts/kconfig/confdata.c | 13 ++++++++++++-
> 1 file changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
> index 492ac34..6006154 100644
> --- a/scripts/kconfig/confdata.c
> +++ b/scripts/kconfig/confdata.c
> @@ -867,6 +867,7 @@ int conf_write(const char *name)
> const char *str;
> char tmpname[PATH_MAX + 1], oldname[PATH_MAX + 1];
> char *env;
> + bool need_newline = false;
>
> if (!name)
> name = conf_get_configname();
> @@ -912,12 +913,16 @@ int conf_write(const char *name)
> "#\n"
> "# %s\n"
> "#\n", str);
> + need_newline = false;
> } else if (!(sym->flags & SYMBOL_CHOICE)) {
> sym_calc_value(sym);
> if (!(sym->flags & SYMBOL_WRITE))
> goto next;
> + if (need_newline) {
> + fprintf(out, "\n");
> + need_newline = false;
> + }
> sym->flags &= ~SYMBOL_WRITE;
> -
> conf_write_symbol(out, sym, &kconfig_printer_cb, NULL);
> }
>
> @@ -929,6 +934,12 @@ int conf_write(const char *name)
> if (menu->next)
> menu = menu->next;
> else while ((menu = menu->parent)) {
> + if (!menu->sym && menu_is_visible(menu) &&
> + menu != &rootmenu) {
> + str = menu_get_prompt(menu);
> + fprintf(out, "# end of %s\n", str);
> + need_newline = true;
> + }
> if (menu->next) {
> menu = menu->next;
> break;
> --
> 2.7.4
>
--
Best Regards
Masahiro Yamada