* [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