linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH RESEND 0/2] kconfig: fence choices and menuconfigs with comments in .config too
@ 2021-03-19 19:37 Alexander Lobakin
  2021-03-19 19:37 ` [PATCH RESEND 1/2] " Alexander Lobakin
  2021-03-19 19:37 ` [PATCH RESEND 2/2] kconfig: mention submenu type in comment blocks in .config Alexander Lobakin
  0 siblings, 2 replies; 3+ messages in thread
From: Alexander Lobakin @ 2021-03-19 19:37 UTC (permalink / raw)
  To: Masahiro Yamada; +Cc: Alexander Lobakin, linux-kbuild, linux-kernel

Comment blocks for menus are great for dotconfig readability, but
currently it's the only type (beside plain comments) of submenus
for which these block are generated.
This series expands the code to also generate such blocks for choices
and menuconfigs and additionally expands the comments themselves a
bit to let know if they belong to choice or menu{,config} block.

Alexander Lobakin (2):
  kconfig: fence choices and menuconfigs with comments in .config too
  kconfig: mention submenu type in comment blocks in .config

 scripts/kconfig/confdata.c | 43 +++++++++++++++++++++++++-------------
 1 file changed, 29 insertions(+), 14 deletions(-)

--
2.31.0



^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH RESEND 1/2] kconfig: fence choices and menuconfigs with comments in .config too
  2021-03-19 19:37 [PATCH RESEND 0/2] kconfig: fence choices and menuconfigs with comments in .config too Alexander Lobakin
@ 2021-03-19 19:37 ` Alexander Lobakin
  2021-03-19 19:37 ` [PATCH RESEND 2/2] kconfig: mention submenu type in comment blocks in .config Alexander Lobakin
  1 sibling, 0 replies; 3+ messages in thread
From: Alexander Lobakin @ 2021-03-19 19:37 UTC (permalink / raw)
  To: Masahiro Yamada; +Cc: Alexander Lobakin, linux-kbuild, linux-kernel

Comment blocks are now generated in .config only for menus. Provide
them for choices and menuconfigs too to greatly improve dotconfig
readability.

Choices before:

x CONFIG_BOOT_CONFIG is not set
CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
x CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_HAVE_LD_DEAD_CODE_DATA_ELIMINATION=y

Choices after:

x CONFIG_BOOT_CONFIG is not set

x
x Compiler optimization level
x
CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y
x CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
x end of Compiler optimization level

CONFIG_HAVE_LD_DEAD_CODE_DATA_ELIMINATION=y

Menuconfigs before:

x CONFIG_IPACK_BUS is not set
CONFIG_RESET_CONTROLLER=y
x CONFIG_RESET_BRCMSTB_RESCAL is not set
x CONFIG_RESET_INTEL_GW is not set
x CONFIG_RESET_TI_SYSCON is not set

Menuconfigs after:

x
x IndustryPack bus support
x
x CONFIG_IPACK_BUS is not set
x end of IndustryPack bus support

x
x Reset Controller Support
x
CONFIG_RESET_CONTROLLER=y
x CONFIG_RESET_BRCMSTB_RESCAL is not set
x CONFIG_RESET_INTEL_GW is not set
x CONFIG_RESET_TI_SYSCON is not set
x end of Reset Controller Support

Signed-off-by: Alexander Lobakin <alobakin@pm.me>
---
 scripts/kconfig/confdata.c | 25 ++++++++++++++-----------
 1 file changed, 14 insertions(+), 11 deletions(-)

diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
index 2568dbe16ed6..e4f0a21fd469 100644
--- a/scripts/kconfig/confdata.c
+++ b/scripts/kconfig/confdata.c
@@ -869,17 +869,20 @@ int conf_write(const char *name)
 	menu = rootmenu.list;
 	while (menu) {
 		sym = menu->sym;
-		if (!sym) {
-			if (!menu_is_visible(menu))
-				goto next;
+
+		if ((!sym || (sym->flags & SYMBOL_CHOICE) ||
+		     (menu->prompt && menu->prompt->type == P_MENU)) &&
+		    menu_is_visible(menu)) {
 			str = menu_get_prompt(menu);
 			fprintf(out, "\n"
 				     "#\n"
 				     "# %s\n"
 				     "#\n", str);
 			need_newline = false;
-		} else if (!(sym->flags & SYMBOL_CHOICE) &&
-			   !(sym->flags & SYMBOL_WRITTEN)) {
+		}
+
+		if (sym && !(sym->flags & SYMBOL_CHOICE) &&
+		    !(sym->flags & SYMBOL_WRITTEN)) {
 			sym_calc_value(sym);
 			if (!(sym->flags & SYMBOL_WRITE))
 				goto next;
@@ -896,11 +899,11 @@ int conf_write(const char *name)
 			menu = menu->list;
 			continue;
 		}
-		if (menu->next)
-			menu = menu->next;
-		else while ((menu = menu->parent)) {
-			if (!menu->sym && menu_is_visible(menu) &&
-			    menu != &rootmenu) {
+
+		do {
+			if (((menu->sym && menu->sym->flags & SYMBOL_CHOICE) ||
+			     (menu->prompt && menu->prompt->type == P_MENU)) &&
+			    menu_is_visible(menu) && menu != &rootmenu) {
 				str = menu_get_prompt(menu);
 				fprintf(out, "# end of %s\n", str);
 				need_newline = true;
@@ -909,7 +912,7 @@ int conf_write(const char *name)
 				menu = menu->next;
 				break;
 			}
-		}
+		} while ((menu = menu->parent));
 	}
 	fclose(out);

--
2.31.0



^ permalink raw reply related	[flat|nested] 3+ messages in thread

* [PATCH RESEND 2/2] kconfig: mention submenu type in comment blocks in .config
  2021-03-19 19:37 [PATCH RESEND 0/2] kconfig: fence choices and menuconfigs with comments in .config too Alexander Lobakin
  2021-03-19 19:37 ` [PATCH RESEND 1/2] " Alexander Lobakin
@ 2021-03-19 19:37 ` Alexander Lobakin
  1 sibling, 0 replies; 3+ messages in thread
From: Alexander Lobakin @ 2021-03-19 19:37 UTC (permalink / raw)
  To: Masahiro Yamada; +Cc: Alexander Lobakin, linux-kbuild, linux-kernel

To have a better understanding of the dotconfig blocks, mention if
a particular block-commented section is a choice or a menu{,config}.

Before:

x
x Timers subsystem
x
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ_COMMON=y

x
x Timer tick handling
x
x CONFIG_HZ_PERIODIC is not set
CONFIG_NO_HZ_IDLE=y
x end of Timer tick handling

x CONFIG_NO_HZ is not set
CONFIG_HIGH_RES_TIMERS=y
x end of Timers subsystem

After:

x
x Timers subsystem menu
x
CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ_COMMON=y

x
x Timer tick handling choice
x
x CONFIG_HZ_PERIODIC is not set
CONFIG_NO_HZ_IDLE=y
x end of Timer tick handling choice

x CONFIG_NO_HZ is not set
CONFIG_HIGH_RES_TIMERS=y
x end of Timers subsystem menu

Signed-off-by: Alexander Lobakin <alobakin@pm.me>
---
 scripts/kconfig/confdata.c | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/scripts/kconfig/confdata.c b/scripts/kconfig/confdata.c
index e4f0a21fd469..3f50d8b82a54 100644
--- a/scripts/kconfig/confdata.c
+++ b/scripts/kconfig/confdata.c
@@ -822,6 +822,17 @@ int conf_write_defconfig(const char *filename)
 	return 0;
 }

+static const char *menu_type_string(const struct menu *menu)
+{
+	if (menu->sym && (menu->sym->flags & SYMBOL_CHOICE))
+		return " choice";
+
+	if (menu->prompt && menu->prompt->type == P_MENU)
+		return " menu";
+
+	return "";
+}
+
 int conf_write(const char *name)
 {
 	FILE *out;
@@ -876,8 +887,8 @@ int conf_write(const char *name)
 			str = menu_get_prompt(menu);
 			fprintf(out, "\n"
 				     "#\n"
-				     "# %s\n"
-				     "#\n", str);
+				     "# %s%s\n"
+				     "#\n", str, menu_type_string(menu));
 			need_newline = false;
 		}

@@ -905,7 +916,8 @@ int conf_write(const char *name)
 			     (menu->prompt && menu->prompt->type == P_MENU)) &&
 			    menu_is_visible(menu) && menu != &rootmenu) {
 				str = menu_get_prompt(menu);
-				fprintf(out, "# end of %s\n", str);
+				fprintf(out, "# end of %s%s\n", str,
+					menu_type_string(menu));
 				need_newline = true;
 			}
 			if (menu->next) {
--
2.31.0



^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-03-19 19:38 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-19 19:37 [PATCH RESEND 0/2] kconfig: fence choices and menuconfigs with comments in .config too Alexander Lobakin
2021-03-19 19:37 ` [PATCH RESEND 1/2] " Alexander Lobakin
2021-03-19 19:37 ` [PATCH RESEND 2/2] kconfig: mention submenu type in comment blocks in .config Alexander Lobakin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).