kconfig: update to Linux 5.9-rc2
PATCH 1/1 kconfig: update to Linux 5.9-rc2
The previous sync was Linux 5.7-rc2. Resync scripts/kconfig/ and scripts/Kconfig.include with Linux 5.9-rc2.
Highlights:
- fix and improve 'make xconfig'
- remove '---help---' keyword
- forbid nested 'choice' blocks
Signed-off-by Masahiro Yamada <[email protected]>
---
scripts/Kconfig.include | 5 +- scripts/kconfig/.gitignore | 2 +- scripts/kconfig/Makefile | 24 +- scripts/kconfig/images.c | 30 +- scripts/kconfig/images.h | 30 +- scripts/kconfig/lexer.l | 4 +- scripts/kconfig/menu.c | 3 +- scripts/kconfig/parser.y | 30 +- scripts/kconfig/qconf.cc | 629 +++++++++--------- scripts/kconfig/qconf.h | 89 +-- scripts/kconfig/streamline_config.pl | 21 + scripts/kconfig/symbol.c | 16 +- .../kconfig/tests/rand_nested_choice/Kconfig | 35 - .../tests/rand_nested_choice/__init__.py | 17 - .../tests/rand_nested_choice/expected_stdout0 | 2 - .../tests/rand_nested_choice/expected_stdout1 | 4 - .../tests/rand_nested_choice/expected_stdout2 | 5 - 17 files changed, 458 insertions(+), 488 deletions(-) delete mode 100644 scripts/kconfig/tests/rand_nested_choice/Kconfig delete mode 100644 scripts/kconfig/tests/rand_nested_choice/__init__.py delete mode 100644 scripts/kconfig/tests/rand_nested_choice/expected_stdout0 delete mode 100644 scripts/kconfig/tests/rand_nested_choice/expected_stdout1 delete mode 100644 scripts/kconfig/tests/rand_nested_choice/expected_stdout2
scripts/Kconfig.include +1 -4
@@ -25,7 +25,7 @@ failure = $(if-success,$(1),n,y) # $(cc-option,<flag>) # Return y if the compiler supports <flag>, n otherwise -cc-option = $(success,$(CC) -Werror $(CLANG_FLAGS) $(1) -S -x c /dev/null -o /dev/null) +cc-option = $(success,mkdir .tmp_$$$$; trap "rm -rf .tmp_$$$$" EXIT; $(CC) -Werror $(CLANG_FLAGS) $(1) -c -x c /dev/null -o .tmp_$$$$/tmp.o) # $(ld-option,<flag>) # Return y if the linker supports <flag>, n otherwise
@@ -42,9 +42,6 @@ $(error-if,$(failure,command -v $(LD)),linker '$(LD)' not found) # Fail if the linker is gold as it's not capable of linking the kernel proper $(error-if,$(success, $(LD) -v | grep -q gold), gold linker '$(LD)' not supported) -# gcc version including patch level -gcc-version := $(shell,$(srctree)/scripts/gcc-version.sh $(CC)) - # machine bit flags # $(m32-flag): -m32 if the compiler supports it, or an empty string otherwise. # $(m64-flag): -m64 if the compiler supports it, or an empty string otherwise.
scripts/kconfig/.gitignore +1 -1
@@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-2.0-only -*.moc +/qconf-moc.cc *conf-cfg #
scripts/kconfig/Makefile +14 -10
@@ -96,11 +96,13 @@ configfiles=$(wildcard $(srctree)/kernel/configs/$@ $(srctree)/arch/$(SRCARCH)/c PHONY += kvmconfig kvmconfig: kvm_guest.config - @: + @echo >&2 "WARNING: 'make $@' will be removed after Linux 5.10" + @echo >&2 " Please use 'make $<' instead." PHONY += xenconfig xenconfig: xen.config - @: + @echo >&2 "WARNING: 'make $@' will be removed after Linux 5.10" + @echo >&2 " Please use 'make $<' instead." PHONY += tinyconfig tinyconfig:
@@ -123,7 +125,9 @@ help: @echo ' gconfig - Update current config utilising a GTK+ based front-end' @echo ' oldconfig - Update current config utilising a provided .config as base' @echo ' localmodconfig - Update current config disabling modules not loaded' + @echo ' except those preserved by LMC_KEEP environment variable' @echo ' localyesconfig - Update current config converting local mods to core' + @echo ' except those preserved by LMC_KEEP environment variable' @echo ' defconfig - New config with default from ARCH supplied defconfig' @echo ' savedefconfig - Save current config as ./defconfig (minimal config)' @echo ' allnoconfig - New config where all options are answered with no'
@@ -137,9 +141,6 @@ help: @echo ' helpnewconfig - List new options and help text' @echo ' olddefconfig - Same as oldconfig but sets new symbols to their' @echo ' default value without prompting' - @echo ' kvmconfig - Enable additional options for kvm guest kernel support' - @echo ' xenconfig - Enable additional options for xen dom0 and guest kernel' - @echo ' support' @echo ' tinyconfig - Configure the tiniest possible kernel' @echo ' testconfig - Run Kconfig unit tests (requires python3 and pytest)'
@@ -180,19 +181,22 @@ $(addprefix $(obj)/, mconf.o $(lxdialog)): $(obj)/mconf-cfg # qconf: Used for the xconfig target based on Qt hostprogs += qconf -qconf-cxxobjs := qconf.o +qconf-cxxobjs := qconf.o qconf-moc.o qconf-objs := images.o $(common-objs) HOSTLDLIBS_qconf = $(shell . $(obj)/qconf-cfg && echo $$libs) HOSTCXXFLAGS_qconf.o = $(shell . $(obj)/qconf-cfg && echo $$cflags) +HOSTCXXFLAGS_qconf-moc.o = $(shell . $(obj)/qconf-cfg && echo $$cflags) -$(obj)/qconf.o: $(obj)/qconf-cfg $(obj)/qconf.moc +$(obj)/qconf.o: $(obj)/qconf-cfg quiet_cmd_moc = MOC $@ - cmd_moc = $(shell . $(obj)/qconf-cfg && echo $$moc) -i $< -o $@ + cmd_moc = $(shell . $(obj)/qconf-cfg && echo $$moc) $< -o $@ -$(obj)/%.moc: $(src)/%.h $(obj)/qconf-cfg - $(call cmd,moc) +$(obj)/qconf-moc.cc: $(src)/qconf.h $(obj)/qconf-cfg FORCE + $(call if_changed,moc) + +targets += qconf-moc.cc # gconf: Used for the gconfig target based on GTK+ hostprogs += gconf
scripts/kconfig/images.c +15 -15
@@ -5,7 +5,7 @@#include "images.h" -const char *xpm_load[] = { +const char *const xpm_load[] = {"22 22 5 1" ,". c None" ,"# c #000000" ,
@@ -35,7 +35,7 @@ const char *xpm_load[] = {"###############......." , "......................"}; -const char *xpm_save[] = { +const char *const xpm_save[] = {"22 22 5 1" ,". c None" , "# c #000000",
@@ -65,7 +65,7 @@ const char *xpm_save[] = {"..##################.." , "......................"}; -const char *xpm_back[] = { +const char *const xpm_back[] = {"22 22 3 1" ,". c None" , "# c #000083",
@@ -93,7 +93,7 @@ const char *xpm_back[] = {"......................" , "......................"}; -const char *xpm_tree_view[] = { +const char *const xpm_tree_view[] = {"22 22 2 1" ,". c None" , "# c #000000",
@@ -120,7 +120,7 @@ const char *xpm_tree_view[] = {"......................" , "......................"}; -const char *xpm_single_view[] = { +const char *const xpm_single_view[] = {"22 22 2 1" ,". c None" , "# c #000000",
@@ -147,7 +147,7 @@ const char *xpm_single_view[] = {"......................" , "......................"}; -const char *xpm_split_view[] = { +const char *const xpm_split_view[] = {"22 22 2 1" ,". c None" , "# c #000000",
@@ -174,7 +174,7 @@ const char *xpm_split_view[] = {"......................" , "......................"}; -const char *xpm_symbol_no[] = { +const char *const xpm_symbol_no[] = {"12 12 2 1" ," c white" , ". c black",
@@ -191,7 +191,7 @@ const char *xpm_symbol_no[] = {" .......... " , " "}; -const char *xpm_symbol_mod[] = { +const char *const xpm_symbol_mod[] = {"12 12 2 1" ," c white" , ". c black",
@@ -208,7 +208,7 @@ const char *xpm_symbol_mod[] = {" .......... " , " "}; -const char *xpm_symbol_yes[] = { +const char *const xpm_symbol_yes[] = {"12 12 2 1" ," c white" , ". c black",
@@ -225,7 +225,7 @@ const char *xpm_symbol_yes[] = {" .......... " , " "}; -const char *xpm_choice_no[] = { +const char *const xpm_choice_no[] = {"12 12 2 1" ," c white" , ". c black",
@@ -242,7 +242,7 @@ const char *xpm_choice_no[] = {" .... " , " "}; -const char *xpm_choice_yes[] = { +const char *const xpm_choice_yes[] = {"12 12 2 1" ," c white" , ". c black",
@@ -259,7 +259,7 @@ const char *xpm_choice_yes[] = {" .... " , " "}; -const char *xpm_menu[] = { +const char *const xpm_menu[] = {"12 12 2 1" ," c white" , ". c black",
@@ -276,7 +276,7 @@ const char *xpm_menu[] = {" .......... " , " "}; -const char *xpm_menu_inv[] = { +const char *const xpm_menu_inv[] = {"12 12 2 1" ," c white" , ". c black",
@@ -293,7 +293,7 @@ const char *xpm_menu_inv[] = {" .......... " , " "}; -const char *xpm_menuback[] = { +const char *const xpm_menuback[] = {"12 12 2 1" ," c white" , ". c black",
@@ -310,7 +310,7 @@ const char *xpm_menuback[] = {" .......... " , " "}; -const char *xpm_void[] = { +const char *const xpm_void[] = {"12 12 2 1" ," c white" , ". c black",
scripts/kconfig/images.h +15 -15
@@ -10,21 +10,21 @@extern "C" {#endif -extern const char *xpm_load[]; -extern const char *xpm_save[]; -extern const char *xpm_back[]; -extern const char *xpm_tree_view[]; -extern const char *xpm_single_view[]; -extern const char *xpm_split_view[]; -extern const char *xpm_symbol_no[]; -extern const char *xpm_symbol_mod[]; -extern const char *xpm_symbol_yes[]; -extern const char *xpm_choice_no[]; -extern const char *xpm_choice_yes[]; -extern const char *xpm_menu[]; -extern const char *xpm_menu_inv[]; -extern const char *xpm_menuback[]; -extern const char *xpm_void[]; +extern const char *const xpm_load[]; +extern const char *const xpm_save[]; +extern const char *const xpm_back[]; +extern const char *const xpm_tree_view[]; +extern const char *const xpm_single_view[]; +extern const char *const xpm_split_view[]; +extern const char *const xpm_symbol_no[]; +extern const char *const xpm_symbol_mod[]; +extern const char *const xpm_symbol_yes[]; +extern const char *const xpm_choice_no[]; +extern const char *const xpm_choice_yes[]; +extern const char *const xpm_menu[]; +extern const char *const xpm_menu_inv[]; +extern const char *const xpm_menuback[]; +extern const char *const xpm_void[]; #ifdef __cplusplus }
scripts/kconfig/lexer.l +2 -2
@@ -36,7 +36,7 @@ struct buffer { YY_BUFFER_STATE state; }; -struct buffer *current_buf; +static struct buffer *current_buf; static int last_ts, first_ts;
@@ -105,7 +105,7 @@ n [A-Za-z0-9_-] "endchoice" return T_ENDCHOICE; "endif" return T_ENDIF; "endmenu" return T_ENDMENU; -"help"|"---help---" return T_HELP; +"help" return T_HELP; "hex" return T_HEX; "if" return T_IF; "imply" return T_IMPLY;
scripts/kconfig/menu.c +2 -1
@@ -65,7 +65,8 @@ void menu_add_entry(struct symbol *sym)struct menu *menu_add_menu (void ) { last_entry_ptr = ¤t_entry->list; -return current_menu = current_entry; + current_menu = current_entry; +return current_menu; }void menu_end_menu (void )
scripts/kconfig/parser.y +16 -14
@@ -119,20 +119,24 @@ mainmenu_stmt: T_MAINMENU T_WORD_QUOTE T_EOL stmt_list: /* empty */ - | stmt_list common_stmt + | stmt_list assignment_stmt | stmt_list choice_stmt + | stmt_list comment_stmt + | stmt_list config_stmt + | stmt_list if_stmt | stmt_list menu_stmt + | stmt_list menuconfig_stmt + | stmt_list source_stmt | stmt_list T_WORD error T_EOL { zconf_error("unknown statement \"%s\"", $2); } | stmt_list error T_EOL { zconf_error("invalid statement"); } ; -common_stmt: - if_stmt - | comment_stmt - | config_stmt - | menuconfig_stmt - | source_stmt - | assignment_stmt +stmt_list_in_choice: + /* empty */ + | stmt_list_in_choice comment_stmt + | stmt_list_in_choice config_stmt + | stmt_list_in_choice if_stmt_in_choice + | stmt_list_in_choice error T_EOL { zconf_error("invalid statement"); } ; /* config/menuconfig entry */
@@ -254,7 +258,7 @@ choice_end: end } }; -choice_stmt: choice_entry choice_block choice_end +choice_stmt: choice_entry stmt_list_in_choice choice_end ; choice_option_list:
@@ -305,11 +309,6 @@ default: | T_DEF_BOOL { $$ = S_BOOLEAN; } | T_DEF_TRISTATE { $$ = S_TRISTATE; } -choice_block: - /* empty */ - | choice_block common_stmt -; - /* if entry */ if_entry: T_IF expr T_EOL
@@ -331,6 +330,9 @@ if_end: end if_stmt: if_entry stmt_list if_end ; +if_stmt_in_choice: if_entry stmt_list_in_choice if_end +; + /* menu entry */ menu: T_MENU T_WORD_QUOTE T_EOL
scripts/kconfig/qconf.cc +329 -300
1,110 lines not on this page · raw message
scripts/kconfig/qconf.h +31 -58
207 lines not on this page · raw message
scripts/kconfig/streamline_config.pl +21 -0
@@ -143,6 +143,7 @@ my %depends; my %selects; my %prompts; my %objects; +my %config2kfile; my $var; my $iflevel = 0; my @ifdeps;
@@ -201,6 +202,7 @@ sub read_kconfig { if (/^\s*(menu)?config\s+(\S+)\s*$/) { $state = "NEW"; $config = $2; + $config2kfile{"CONFIG_$config"} = $kconfig; # Add depends for 'if' nesting for (my $i = 0; $i < $iflevel; $i++) {
@@ -591,6 +593,20 @@ while ($repeat) { } my %setconfigs; +my @preserved_kconfigs = split(/:/,$ENV{LMC_KEEP}); + +sub in_preserved_kconfigs { + my $kconfig = $config2kfile{$_[0]}; + if (!defined($kconfig)) { + return 0; + } + foreach my $excl (@preserved_kconfigs) { + if($kconfig =~ /^$excl/) { + return 1; + } + } + return 0; +} # Finally, read the .config file and turn off any module enabled that # we could not find a reason to keep enabled.
@@ -644,6 +660,11 @@ foreach my $line (@config_file) { } if (/^(CONFIG.*)=(m|y)/) { + if (in_preserved_kconfigs($1)) { + dprint "Preserve config $1"; + print; + next; + } if (defined($configs{$1})) { if ($localyesconfig) { $setconfigs{$1} = 'y';
scripts/kconfig/symbol.c +11 -5
@@ -15,15 +15,21 @@ struct symbol symbol_yes = { .name = "y", .curr = { "y", yes }, .flags = SYMBOL_CONST|SYMBOL_VALID, -}, symbol_mod = { +}; + +struct symbol symbol_mod = { .name ="m" , .curr = {"m" , mod }, .flags =SYMBOL_CONST |SYMBOL_VALID , -}, symbol_no = { +}; + +struct symbol symbol_no = { .name ="n" , .curr = {"n" , no }, .flags =SYMBOL_CONST |SYMBOL_VALID , -}, symbol_empty = { +}; + +static struct symbol symbol_empty = { .name ="" , .curr = {"" , no }, .flags = SYMBOL_VALID,
@@ -31,7 +37,7 @@ struct symbol symbol_yes = {struct symbol *sym_defconfig_list;struct symbol *modules_sym; -tristate modules_val; +static tristate modules_val;enum symbol_type sym_get_type (struct symbol *sym) {
@@ -831,7 +837,7 @@ struct symbol *sym_lookup(const char *name, int flags)memset (symbol,0 ,sizeof (*symbol)); symbol->name = new_name; symbol->type =S_UNKNOWN ; - symbol->flags |= flags; + symbol->flags = flags; symbol->next = symbol_hash[hash]; symbol_hash[hash] = symbol;
scripts/kconfig/tests/rand_nested_choice/Kconfig deleted +0 -35
@@ -1,35 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 - -choice - prompt "choice" - -config A - bool "A" - -config B - bool "B" - -if B -choice - prompt "sub choice" - -config C - bool "C" - -config D - bool "D" - -if D -choice - prompt "subsub choice" - -config E - bool "E" - -endchoice -endif # D - -endchoice -endif # B - -endchoice
scripts/kconfig/tests/rand_nested_choice/__init__.py deleted +0 -17
@@ -1,17 +0,0 @@ -# SPDX-License-Identifier: GPL-2.0 -""" -Set random values recursively in nested choices. - -Kconfig can create a choice-in-choice structure by using 'if' statement. -randconfig should correctly set random choice values. - -Related Linux commit: 3b9a19e08960e5cdad5253998637653e592a3c29 -""" - - -def test(conf): - for i in range(20): - assert conf.randconfig() == 0 - assert (conf.config_contains('expected_stdout0') or - conf.config_contains('expected_stdout1') or - conf.config_contains('expected_stdout2'))
scripts/kconfig/tests/rand_nested_choice/expected_stdout0 deleted +0 -2
@@ -1,2 +0,0 @@ -CONFIG_A=y -# CONFIG_B is not set
scripts/kconfig/tests/rand_nested_choice/expected_stdout1 deleted +0 -4
@@ -1,4 +0,0 @@ -# CONFIG_A is not set -CONFIG_B=y -CONFIG_C=y -# CONFIG_D is not set
scripts/kconfig/tests/rand_nested_choice/expected_stdout2 deleted +0 -5
@@ -1,5 +0,0 @@ -# CONFIG_A is not set -CONFIG_B=y -# CONFIG_C is not set -CONFIG_D=y -CONFIG_E=y
Signature · 7 lines
2.25.1 _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox
Sascha Hauer
AppliedQuoted 5 lines · Masahiro Yamada
The previous sync was Linux 5.7-rc2. Resync
scripts/kconfig/andscripts/Kconfig.includewith Linux 5.9-rc2.Highlights:
Quoted 8 lines
- fix and improve 'make xconfig'
- remove '---help---' keyword
- forbid nested 'choice' blocks
Signed-off-by Masahiro Yamada <[email protected]>---
Applied, thanks
Sascha
Signature · 9 lines
Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | _______________________________________________ barebox mailing list [email protected] http://lists.infradead.org/mailman/listinfo/barebox