[v2,1/1] kconfig: Terminate menu blocks with a comment in the generated config
diff mbox series

Message ID 1556107369-7655-1-git-send-email-alex.popov@linux.com
State New
Headers show
Series
  • [v2,1/1] kconfig: Terminate menu blocks with a comment in the generated config
Related show

Commit Message

Alexander Popov April 24, 2019, 12:02 p.m. UTC
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@linux.com>
---
 scripts/kconfig/confdata.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

Comments

Kees Cook April 24, 2019, 3:02 p.m. UTC | #1
On Wed, Apr 24, 2019 at 5:03 AM Alexander Popov <alex.popov@linux.com> 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@linux.com>

Reviewed-by: Kees Cook <keescook@chromium.org>

-Kees

> ---
>  scripts/kconfig/confdata.c | 12 +++++++++++-
>  1 file changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
> index 08ba146..486b4c7 100644
> --- a/scripts/kconfig/confdata.c
> +++ b/scripts/kconfig/confdata.c
> @@ -819,6 +819,7 @@ int conf_write(const char *name)
>         struct menu *menu;
>         const char *basename;
>         const char *str;
> +       bool need_newline = false;
>         char dirname[PATH_MAX+1], tmpname[PATH_MAX+22], newname[PATH_MAX+8];
>         char *env;
>
> @@ -871,12 +872,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);
>                 }
>
> @@ -888,6 +893,11 @@ int conf_write(const char *name)
>                 if (menu->next)
>                         menu = menu->next;
>                 else while ((menu = menu->parent)) {
> +                       if (!menu->sym && menu_is_visible(menu)) {
> +                               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
>
Alexander Popov May 1, 2019, 1:01 p.m. UTC | #2
On 24.04.2019 15:02, Alexander Popov 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@linux.com>

Hello!

Just a friendly ping.

Would you like to take this patch?
Can I improve anything?

Best regards,
Alexander
Masahiro Yamada May 7, 2019, 12:29 p.m. UTC | #3
On Wed, May 1, 2019 at 10:01 PM Alexander Popov <alex.popov@linux.com> wrote:
>
> On 24.04.2019 15:02, Alexander Popov 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@linux.com>
>
> Hello!
>
> Just a friendly ping.
>
> Would you like to take this patch?
> Can I improve anything?


This patch breaks "make testconfig".

Please get rid of the "endof" for the rootmenu
at the end of the .config file.

Thanks.




> Best regards,
> Alexander
Alexander Popov May 7, 2019, 7:44 p.m. UTC | #4
7 May 2019 15:29:26 GMT+03:00, Masahiro Yamada <yamada.masahiro@socionext.com> wrote:
>This patch breaks "make testconfig".
>
>Please get rid of the "endof" for the rootmenu
>at the end of the .config file.

Thanks a lot for having a look! 
I'll fix this issue, test it and return with the next version. 

Best regards, 
Alexander

Patch
diff mbox series

diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
index 08ba146..486b4c7 100644
--- a/scripts/kconfig/confdata.c
+++ b/scripts/kconfig/confdata.c
@@ -819,6 +819,7 @@  int conf_write(const char *name)
 	struct menu *menu;
 	const char *basename;
 	const char *str;
+	bool need_newline = false;
 	char dirname[PATH_MAX+1], tmpname[PATH_MAX+22], newname[PATH_MAX+8];
 	char *env;
 
@@ -871,12 +872,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);
 		}
 
@@ -888,6 +893,11 @@  int conf_write(const char *name)
 		if (menu->next)
 			menu = menu->next;
 		else while ((menu = menu->parent)) {
+			if (!menu->sym && menu_is_visible(menu)) {
+				str = menu_get_prompt(menu);
+				fprintf(out, "# end of %s\n", str);
+				need_newline = true;
+			}
 			if (menu->next) {
 				menu = menu->next;
 				break;