Hi Eugeniu,

Thanks for your great job!

Almost looks good to me except one missed re-sync.
See below.


2018-05-12 8:40 GMT+09:00 Eugeniu Rosca <ero...@de.adit-jv.com>:
> Align Kconfig to Linux 4.17-rc4 with minimal impact on non-kconfig files.
>
> Previous Kconfig sync was done by commit bf7ab1e70fd762 ("kconfig:
> re-sync with Linux 4.10") and it achieved almost perfect alignment with
> a few (intended) exceptions, caused by below U-boot commits:
>
> [A] v2015.04 5f9eb2207500 ("kbuild: remove scripts/multiconfig.sh")
> [B] v2015.07 20c20826efab ("Kconfig: Enable usage of escape char '\' in 
> string values")
> [C] v2016.01 da58dec86616 ("Various Makefiles: Add SPDX-License-Identifier 
> tags")
> [D] v2016.03 5b8031ccb4ed ("Add more SPDX-License-Identifier tags")
> [E] v2016.03 192bc6948b02 ("Fix GCC format-security errors and convert 
> sprintfs.")
>
> Here is the list of Kconfig commits which followed the v4.10 alignment:
>
> [F] v2018.01 0931ed3c0d0f ("kconfig/symbol.c: use correct pointer type 
> argument for sizeof")
> [G] v2018.03 1414e09b4f25 ("kconfig: revert change that was not needed for 
> -Wformat-security")
> [H] v2018.05 83d290c56fab ("SPDX: Convert all of our single license tags to 
> Linux Kernel style")
>
> Commit [F] was subsequently applied to Linux kernel as commit [I]
> with the same patch id, so it won't contribute to further misalignment.
>
> [I] v4.15-rc1 88127dae6ed9 ("kconfig/symbol.c: use correct pointer type 
> argument for sizeof")
>
> Commit [G] is a Kconfig-specific revert of commit [E].
> Commit [H] relocated and reformatted the license doing no functional change.
>
> In summary, the only functional change that makes U-boot Kconfig
> diverge from Linux Kconfig is commit [B]. After a brief analysis,
> the purpose of [B] seems to be placing "\n" literals in string symbols
> like CONFIG_AUTOBOOT_PROMPT="autoboot in %d seconds\n" in order to pass
> them directly to printf and expect correct output at runtime. Currently,
> Linux doesn't seem to have this requirement, so for the moment [B] looks
> like a U-boot specific feature/fix. From point of view of further Kconfig
> alignment and backporting efforts, it is highly desired that commits
> like [B] are propagated to Linux and any Kconfig fixes/features are
> contributed to Linux kernel first. This specific Kconfig re-sync just
> keeps [B] in place.
>
> Contrary to 4.10 Kconfig re-sync (which achieves zero non-kconfig
> changes), 4.17-rc4 re-sync does some amount of updates in Kbuild
> (striving to keep them at minimum), due to a number of reasons:
> * Kbuild is affected by the removal of Kconfig "*shipped" files and now
>   requires flex and bison pre-installed on the host.
> * PYTHON{2,3} variables are defined in top-level Makefile as
>   prerequisite for running the newly developed Kconfig unit tests.
> * silentoldconfig becomes an "internal implementation detail" deprecated
>   for external use, being renamed to syncconfig.
>
> The exact non-kconfig files touched by this commit are:
>
> $ git show --format="" --stat -- ':!scripts/kconfig'
>  .gitignore             |  2 ++
>  Makefile               |  9 +++++++--
>  scripts/Makefile.build | 11 +++++++++++
>  scripts/Makefile.lib   | 41 ++++++++++++-----------------------------
>
> The imported Linux commits touching the above files are:
>
> c054be10ffdbd5   ("remove gperf left-overs from build system")
> 73a4f6dbe70a1b   ("kbuild: add LEX and YACC variables")
> 033dba2ec06c47   ("kbuild: prepare to remove C files pre-generated by flex 
> and bison")
> eea199b445f64c   ("kbuild: remove unnecessary LEX_PREFIX and YACC_PREFIX")
> e71de5ee08dcb0   ("kbuild: remove remaining use of undefined YACC_PREFIX")
> d59fbbd09d5d6b   ("kbuild: replace hardcoded bison in cmd_bison_h with 
> $(YACC)")
> 911a91c39cabcb H ("kconfig: rename silentoldconfig to syncconfig")
> 59889300274569   (".gitignore: move *.lex.c *.tab.[ch] patterns to the 
> top-level .gitignore")
> 9a8dfb394c0467   ("kbuild: clean up *.lex.c and *.tab.[ch] patterns from 
> top-level Makefile")
> 833e622459432e H ("genksyms: generate lexer and parser during build instead 
> of shipping")
> b23d1a241f4eb4 H ("kbuild: add %.lex.c and %.tab.[ch] to 'targets' 
> automatically")
> e9781b52d4e0e3 H ("kbuild: add PYTHON2 and PYTHON3 variables")
>
> The commits marked with 'H' are assessed as "hard" (build will fail)
> prerequisites and the rest of them are assessed as "soft" prerequisites
> for the re-sync. In spite of relatively high number of non-H commits,
> they belong to this Kconfig update topic-wise and decrease the number of
> cherry pick conflicts for many commits in this series. Additional effort
> can be put in eliminating the soft prerequisites, if really needed.
>
> The commits which contributed to this Kconfig re-sync are listed below.
> Whenever a conflict resolution has been performed (mostly by hand, but
> sometimes automatically by git), it is revealed by the '!' sign in the
> second column, which means a patch id mismatch between Linux and U-boot
> commits:
>
> 9be3213b14d44f   ("gconfig: remove misleading parentheses around a condition")
> ff85a1a80e0034   ("kconfig: Check for libncurses before menuconfig")
> ad8181060788c8   ("kconfig: fix sparse warnings in nconfig")
> cb77f0d623ff33 ! ("scripts: Switch to more portable Perl shebang")
> bb3290d91695bb ! ("Remove gperf usage from toolchain")
> c054be10ffdbd5   ("remove gperf left-overs from build system")
> b24413180f5600 ! ("License cleanup: add SPDX GPL-2.0 license identifier to 
> files with no license")
> 9059a3493efea6 ! ("kconfig: fix relational operators for bool and tristate 
> symbols")
> 2c37e08464a850   ("kconfig: Warn if choice default is not in choice")
> 33ca1a24866373   ("kconfig: Document the 'menu' struct")
> 52aede4ba5efd1   ("kconfig: Document the 'symbol' struct")
> c873443430ebd1   ("kconfig: Sync zconf.y with zconf.tab.c_shipped")
> 9a826842ff2fbd   ("kconfig: Rename menu_check_dep() to rewrite_m()")
> fa8cedaef814ce   ("kconfig: Clarify expression rewriting")
> f77850d3fe0c96   ("kconfig: Clean up modules handling and fix crash")
> e3b03bf29d6b99   ("kconfig: display recursive dependency resolution hint just 
> once")
> 73a4f6dbe70a1b ! ("kbuild: add LEX and YACC variables")
> 033dba2ec06c47 ! ("kbuild: prepare to remove C files pre-generated by flex 
> and bison")
> 29c833061c1d8c   ("kconfig: generate lexer and parser during build instead of 
> shipping")
> 26e47a3c11a25c   ("kconfig: Don't leak symbol names during parsing")
> 24161a6711c945   ("kconfig: Don't leak 'source' filenames during parsing")
> bc28fe1d5ede88   ("kconfig: Don't leak 'option' arguments during parsing")
> 0724a7c32a54e3   ("kconfig: Don't leak main menus during parsing")
> ae7440ef0c8013   ("kconfig: Fix automatic menu creation mem leak")
> 5b1374b3b3c2fc   ("kconfig: Fix expr_free() E_NOT leak")
> 7cf33f88e29410   ("kconfig: Fix choice symbol expression leak")
> 05cccce580456d   ("kconfig: Document automatic submenu creation code")
> 0735f7e5def2ab   ("kconfig: Document important expression functions")
> df60f4b92d3d0b   ("kconfig: Remove menu_end_entry()")
> b92d804a51796b   ("kconfig: drop 'boolean' keyword")
> 6479f327dea60d   ("kconfig: Warn if there is more than one help text")
> 52e58a3caeba5d   ("kconfig: make input_mode static")
> 5a3dc717b3c785   ("kconfig: make xfgets() really static")
> 84dd95d4f87a0d   ("kconfig: make conf_unsaved a local variable of 
> conf_read()")
> 765f4cdef6f80d   ("kconfig: use default 'yy' prefix for lexer and parser")
> eea199b445f64c   ("kbuild: remove unnecessary LEX_PREFIX and YACC_PREFIX")
> e71de5ee08dcb0   ("kbuild: remove remaining use of undefined YACC_PREFIX")
> d59fbbd09d5d6b ! ("kbuild: replace hardcoded bison in cmd_bison_h with 
> $(YACC)")
> 3e41ba05b6d60c   ("kconfig: Document SYMBOL_OPTIONAL logic")
> d3465af60f4471   ("kconfig: Clarify choice dependency propagation")
> 9d1a9e8bc18bea   ("kconfig: Document 'if' flattening logic")
> b53688014e3325   ("kconfig: Clarify menu and 'if' dependency propagation")
> d0fd0428ecf04b   ("kconfig: fix make xconfig when gettext is missing")
> 312ee68752faaa   ("kconfig: announce removal of oldnoconfig if used")
> 1ccb27143360bd   ("kconfig: make "Selected by:" and "Implied by:" readable")
> cedd55d49dee94 ! ("kconfig: Remove silentoldconfig from help and docs; fix 
> kconfig/conf's help")
> 1b9eda2e4892cb   ("kconfig: Warn if help text is blank")
> cb67ab2cd2b8ab   ("kconfig: do not write choice values when their dependency 
> becomes n")
> 4f208f392103e8   ("kconfig: show '?' prompt even if no help text is 
> available")
> cd58a91def2acc   ("kconfig: remove 'config*' pattern from .gitignnore")
> d2a04648a5dbc3   ("kconfig: remove check_stdin()")
> f3ff6fb5db68bc   ("kconfig: echo stdin to stdout if either is redirected")
> 9e3e10c725360b   ("kconfig: send error messages to stderr")
> d717f24d8c6808   ("kconfig: add xrealloc() helper")
> 523ca58b7db2e3   ("kconfig: remove const qualifier from 
> sym_expand_string_value()")
> cd81fc82b93fa4   ("kconfig: add xstrdup() helper")
> f4bc1eefc1608e   ("kconfig: set SYMBOL_AUTO to the symbol marked with 
> defconfig_list")
> bf0bbdcf100322   ("kconfig: Don't leak choice names during parsing")
> 1a90ce36c6eff6   ("kconfig: Update ncurses package names for menuconfig")
> 5ae6fcc4bb82bd   ("kconfig: fix line number in recursive inclusion error 
> message")
> 07a422bb213adb ! ("kbuild: restore autoksyms.h touch to the top Makefile")
> 9a47ceec543bfb   ("kconfig: clean-up reverse dependency help implementation")
> d9119b5925a03b   ("kconfig: Print reverse dependencies in groups")
> f467c5640c29ad   ("kconfig: only write '# CONFIG_FOO is not set' for visible 
> symbols")
> 59a80b5e892dde   ("kconfig: do not call check_conf() for olddefconfig")
> 4bb3a5b085cd6f   ("kconfig: remove unneeded input_mode test in conf()")
> 99f0b6578bab44   ("kconfig: remove redundant input_mode test for check_conf() 
> loop")
> 2aad9b89621386   ("kconfig: hide irrelevant sub-menus for oldconfig")
> 81d2bc2273052e   ("kconfig: invoke oldconfig instead of silentoldconfig from 
> local*config")
> 911a91c39cabcb ! ("kconfig: rename silentoldconfig to syncconfig")
> 2a61625835c7c8 ! ("kconfig: remove redundant streamline_config.pl 
> prerequisite")
> 022a4bf6b59dfd   ("kconfig: tests: add framework for Kconfig unit testing")
> 1903c511905984   ("kconfig: tests: add basic choice tests")
> 49ac3c0c3aa3b7   ("kconfig: tests: test automatic submenu creation")
> b76960c0f6b25d   ("kconfig: tests: test if new symbols in choice are asked")
> 930c429a656fdb   ("kconfig: tests: check unneeded "is not set" with unmet 
> dependency")
> ee236610653ede   ("kconfig: tests: check visibility of tristate choice values 
> in y choice")
> beaaddb625400e   ("kconfig: tests: test defconfig when two choices interact")
> 3e4888c2e3d77d   ("kconfig: tests: test randconfig for choice in choice")
> 29c434f367ea7b   ("kconfig: tests: test if recursive dependencies are 
> detected")
> e2c75e7667c737   ("kconfig: tests: test if recursive inclusion is detected")
> f622f827958162   ("kconfig: warn unmet direct dependency of tristate symbols 
> selected by y")
> f8f69dc0b4e070   ("kconfig: make unmet dependency warnings readable")
> 26561514cc9def   ("kconfig: do not include both curses.h and ncurses.h for 
> nconfig")
> 32a94b8b0c3e5a   ("kconfig: remove duplicated file name and lineno of 
> recursive inclusion")
> 379a8eb8eb1a55   ("kconfig: detect recursive inclusion earlier")
> 18492685e479fd   ("kconfig: use yylineno option instead of manual lineno 
> increments")
> 59889300274569 ! (".gitignore: move *.lex.c *.tab.[ch] patterns to the 
> top-level .gitignore")
> 9a8dfb394c0467 ! ("kbuild: clean up *.lex.c and *.tab.[ch] patterns from 
> top-level Makefile")
> 833e622459432e ! ("genksyms: generate lexer and parser during build instead 
> of shipping")
> b23d1a241f4eb4 ! ("kbuild: add %.lex.c and %.tab.[ch] to 'targets' 
> automatically")
> 17baab68d337a0   ("kconfig: extend output of 'listnewconfig'")
> e9781b52d4e0e3 ! ("kbuild: add PYTHON2 and PYTHON3 variables")
>
> The current Kconfig update generates below build-time warnings:
>   YACC    scripts/dtc/dtc-parser.tab.h
> scripts/dtc/dtc-parser.y: warning: 3 shift/reduce conflicts [-Wconflicts-sr]
>   YACC    scripts/dtc/dtc-parser.tab.c
> scripts/dtc/dtc-parser.y: warning: 3 shift/reduce conflicts [-Wconflicts-sr]
>
> This seems to happen because the Kbuild updates apparently didn't make
> room for both "*shipped"-based builds and flex/bison-based builds. A
> similar problem has been reported for genksyms parser in v4.17-rc1
> commit 833e622459432e ("genksyms: generate lexer and parser during build
> instead of shipping"). I have figured out empirically that the warnings
> are healed after updating the in-tree U-boot DTC to upstream v1.4.6-9,
> same as done by Linux v4.17-rc1 commit 9130ba88464032 ("scripts/dtc:
> Update to upstream version v1.4.6-9-gaadd0b65c987"). Whether fixing the
> DTC-related yacc warnings should be done together with the Kconfig
> re-sync, I would like to hear from community.

I agree.

Re-sync of scripts/dtc/ should follow.



> +
>  # Help text used by make help
>  help:
>         @echo  '  config          - Update current config utilising a 
> line-oriented program'
> @@ -152,7 +169,6 @@ help:
>         @echo  '  oldconfig       - Update current config utilising a 
> provided .config as base'
>         @echo  '  localmodconfig  - Update current config disabling modules 
> not loaded'
>         @echo  '  localyesconfig  - Update current config converting local 
> mods to core'
> -       @echo  '  silentoldconfig - Same as oldconfig, but quietly, 
> additionally update deps'
>         @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'
> @@ -161,7 +177,7 @@ help:
>         @echo  '  alldefconfig    - New config with all symbols set to 
> default'
>         @echo  '  randconfig      - New config with random answer to all 
> options'
>         @echo  '  listnewconfig   - List new options'
> -       @echo  '  olddefconfig    - Same as silentoldconfig but sets new 
> symbols to their'
> +       @echo  '  olddefconfig    - Same as oldconfig but sets new symbols to 
> their'
>         @echo  '                    default value'


Linux commit cedd55d49dee added 'without prompting'
after 'default value'

Could you do likewise please?



The other parts look good to me.

Reviewed-by: Masahiro Yamada <yamada.masah...@socionext.com>


-- 
Best Regards
Masahiro Yamada
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to