TLDR: You can't review this by only looking at the patches. This series updates scripts/config to tag 'kconfig-v5.6' of git://git.kernel.org/pub/scm/linux/kernel/git/masahiroy/linux-kbuild
The Good Stuff: =============== The thing that motivated me to make this update was the change in displaying which dependents are forcing a package to be selected. Try to figure out what is forcing alsa libs to be built-in, with the current way they are displayed: Selected by: PACKAGE_classpath [=n] && AUDIO_SUPPORT [=y] || PACKAGE_libao [=n] && \ AUDIO_SUPPORT [=y] || PACKAGE_libffmpeg-full [=m] && AUDIO_SUPPORT [=y] && (!\ PACKAGE_libx264 [=n] || BUILD_PATENTED [=n]) || PACKAGE_gst1-mod-alsa [=n] && \ AUDIO_SUPPORT [=y] || PACKAGE_asterisk16-chan-alsa [=n] && PACKAGE_asterisk16 [=n] && \ AUDIO_SUPPORT [=y] || PACKAGE_baresip-mod-alsa [=n] && AUDIO_SUPPORT [=y] && \ PACKAGE_baresip [=n] || PACKAGE_freeswitch-stable-mod-alsa [=n] && \ PACKAGE_freeswitch-stable [=n] && AUDIO_SUPPORT [=y] || PACKAGE_yate-mod-alsachan [=n] && \ AUDIO_SUPPORT [=y] && PACKAGE_yate [=n] || PACKAGE_alsa-utils [=y] && AUDIO_SUPPORT [=y] || \ PACKAGE_alsa-utils-seq [=n] && AUDIO_SUPPORT [=y] || PACKAGE_alsa-utils-tests [=n] && \ AUDIO_SUPPORT [=y] || PACKAGE_forked-daapd [=m] && (!PACKAGE_libx264 [=n] || \ BUILD_PATENTED [=n]) && AUDIO_SUPPORT [=y] || PACKAGE_ices [=n] && AUDIO_SUPPORT [=y] || \ PACKAGE_madplay-alsa [=n] && AUDIO_SUPPORT [=y] || PACKAGE_moc [=n] && AUDIO_SUPPORT [=y]\ || PACKAGE_mpd-avahi-service [=n] && AUDIO_SUPPORT [=y] || PACKAGE_mpd-full [=n] && \ AUDIO_SUPPORT [=y] || PACKAGE_mpd-mini [=n] && AUDIO_SUPPORT [=y] || PACKAGE_mpg123 [=n] && \ AUDIO_SUPPORT [=y] || PACKAGE_portaudio [=n] && AUDIO_SUPPORT [=y] || \ PACKAGE_pulseaudio-daemon [=n] && AUDIO_SUPPORT [=y] || PACKAGE_pulseaudio-daemon-avahi [=n]\ && AUDIO_SUPPORT [=y] || PACKAGE_shairport-sync-mbedtls [=n] && AUDIO_SUPPORT [=y] || \ PACKAGE_shairport-sync-mini [=n] && AUDIO_SUPPORT [=y] || \ PACKAGE_shairport-sync-openssl [=n] && AUDIO_SUPPORT [=y] || PACKAGE_sox [=n] && \ AUDIO_SUPPORT [=y] || PACKAGE_squeezelite-full [=n] && AUDIO_SUPPORT [=y] || \ PACKAGE_squeezelite-mini [=n] && AUDIO_SUPPORT [=y] This is the new display, much easier: Selected by [y]: - PACKAGE_alsa-utils [=y] && AUDIO_SUPPORT [=y] Selected by [m]: - PACKAGE_libffmpeg-full [=m] && (!PACKAGE_libx264 [=n] || BUILD_PATENTED [=n]) && \ AUDIO_SUPPORT [=y] - PACKAGE_forked-daapd [=m] && AUDIO_SUPPORT [=y] && (!PACKAGE_libx264 [=n] || \ BUILD_PATENTED [=n]) Selected by [n]: - PACKAGE_classpath [=n] && AUDIO_SUPPORT [=y] - PACKAGE_libao [=n] && AUDIO_SUPPORT [=y] - PACKAGE_gst1-mod-alsa [=n] && AUDIO_SUPPORT [=y] - PACKAGE_asterisk16-chan-alsa [=n] && PACKAGE_asterisk16 [=n] && AUDIO_SUPPORT [=y] - PACKAGE_baresip-mod-alsa [=n] && AUDIO_SUPPORT [=y] && PACKAGE_baresip [=n] - PACKAGE_freeswitch-stable-mod-alsa [=n] && PACKAGE_freeswitch-stable [=n] && \ AUDIO_SUPPORT [=y] - PACKAGE_yate-mod-alsachan [=n] && AUDIO_SUPPORT [=y] && PACKAGE_yate [=n] - PACKAGE_alsa-utils-seq [=n] && AUDIO_SUPPORT [=y] - PACKAGE_alsa-utils-tests [=n] && AUDIO_SUPPORT [=y] - PACKAGE_ices [=n] && AUDIO_SUPPORT [=y] - PACKAGE_madplay-alsa [=n] && AUDIO_SUPPORT [=y] - PACKAGE_moc [=n] && AUDIO_SUPPORT [=y] - PACKAGE_mpd-avahi-service [=n] && AUDIO_SUPPORT [=y] - PACKAGE_mpd-full [=n] && AUDIO_SUPPORT [=y] - PACKAGE_mpd-mini [=n] && AUDIO_SUPPORT [=y] - PACKAGE_mpg123 [=n] && AUDIO_SUPPORT [=y] - PACKAGE_portaudio [=n] && AUDIO_SUPPORT [=y] - PACKAGE_pulseaudio-daemon [=n] && AUDIO_SUPPORT [=y] - PACKAGE_pulseaudio-daemon-avahi [=n] && AUDIO_SUPPORT [=y] - PACKAGE_shairport-sync-mbedtls [=n] && AUDIO_SUPPORT [=y] - PACKAGE_shairport-sync-mini [=n] && AUDIO_SUPPORT [=y] - PACKAGE_shairport-sync-openssl [=n] && AUDIO_SUPPORT [=y] - PACKAGE_sox [=n] && AUDIO_SUPPORT [=y] Reviewing this Series: ====================== In order to make reviews possible, I've published a list of commits that I've assembled, to get from upstream commit 2bce77b9f8c9 to the current openwrt scripts/config. The commits are listed here: https://github.com/cotequeiroz/linux/commits/openwrt-b2c55d50f8/scripts/kconfig Then, I've rebased these changes to the current upstream kconfig, and reverted/adapted some upstream changes to make the new version work with openwrt: https://github.com/cotequeiroz/linux/commits/openwrt/scripts/kconfig I suggest to create a repository for it within the openwrt infrastructure, to ease future upgrades. I could maintain it, if there is a need for a maintainer. Changes from Upstream: ====================== The following is a comparative list of commits I used to get from upstream to the openwrt versions (current, and newly proposed): = remove kernel configuration targets < remove gettext support - removed upstream > remove tests - added upstream = remove gconf files = remove nconf files = Makefile adjustments = don't use yydebug unless YYDEBUG is on = add wildcard file include feature = remove useless file = adjust menuconfig help text = force config reset when target changes = Add gitignore files = use default file in conf --all*config = remove override: reassigning symbol warn = conf: allow writing to a different file < zconf.gperf: remove problematic prototype - gperf was dropped = conf: allow reading an input file = handle select on symbol with unmet deps < apply kconfig: fix relational operators for bool and tristate symbols - this was a backport < Change conf.c remove compiler warnings - gone with gettext drop < refresh *_shipped files - done at build time now = Add README file with summary of changes < adjust help message to openwrt HEAD } changes needed to < use openwrt auxiliary build files } achieve 100% match < add deprecated 'depends' syntax } with current openwrt < use openwrt *_shipped files } version > Revert "kconfig: Warn if there is more than one help text" > Revert "kconfig: only write '# CONFIG_FOO is not set' for visible symbols" > don't write files to $(TOPDIR)/include > Revert "kconfig: stop supporting '.' and '/' in unquoted words" > allow to warn when seeing recursive dep Commits marked with '=' are common in both versions; '<' are commits only present in the current openwrt version, and '>' are commits added to the proposed new config. About removed commits (<): ========================== gettext support was dropped upstream, as well as use of gperf, and pregenerated '_shipped' C files. The relational operators fix was a backport, and the compiler warnings disappeared with gettext removal. The 3 commits that follow the README change are cosmetic/minor changes that I made to get an 'empty diff' against current scripts/config. The deprecated 'depends' syntax is no longer used and can be safely dropped. As for the commits added in the new version (>): ================================================ The warning about more than one help text is there to handle the few packages in the feeds that use a little hack to be able to show one text in the menuconfig help command, and another, shorter version to be shown by 'opkg'. A second 'help' definition, done inside Package/foo/config, is the one shown by menuconfig, while Package/foo/description will be the text saved in the final ipkg file. Since this was done with a purpose, I decided to let it stay. It can be removed nonetheless, and it's only a warning being shown. The '# CONFIG_FOO' revert is needed for busybox to write its own .config file from openwrt main .config. If the symbols are pruned, busybox will fail to build because it will understand that missing 'choice' values are new configuration symbols, and then will ask for the choice (automatically answering 'n' won't work). The $(TOPDIR)/include change is there because Linux needs header files there, and we don't. Rather than reverting the commits, which may give us future rebase work, I chose to exit the function earlier, keeping the code mostly intact. Support for '.' and '/' in symbol names is needed in a few cases, and I did not feel that I needed to make rename changes to targets/packages that I don't fully grasp. It can (should?) be done later, then this can be dropped. Recursive dependency changed from warning to error upstream: ============================================================ The recursive dependency warning needs some more thought. I first wanted to go with upstream, and just call it an error. When I was running a final test after a rebase, it ended up biting me. It picked up an existing recursive dep that was not showing up in the old version. After spending some brainpower (git bisect will not help much, since the commit that errors out is not necessarily the culprit, and it wasn't this time). There were many module packages 'select'ing ipv6 modules without 'depend'ing on @IPV6. So I've included a commit adding the dependency to resolve the problem. Note that I've only looked at 'package/kernel/linux/modules', and they were enough to make it build again. I've softened my approach and added an option to have conf built to only warn on a recursive dep by compiling with make WARN_RECURSIVE_DEP=1, but kept the upstream behavior of considering it an error by default. Note that conf will not be automatically rebuilt if the flag changes. You must either run 'make config-clean' before calling make again with/without WARN_RECURSIVE_DEP=1, and that make 'WARN_RECURSIVE_DEP=0' will not build it without the warning! Ci bots would certainly benefit from the new behavior, while buildbots _may_ want to be run with a warning only, although a failure will make mistakes more visible--no flag on master, WARN_RECURSIVE_DEP=1 for stable builds?. Other commits included in the series: ===================================== Besides the aforementioned commit to resolve recursive dependencies, there were some upstream changes that require openwrt adjustments, such as the need to quote 'source' filenames: busybox needed to be adapted. Also, unmet dependencies are handled a bit differently now, and RTC_SUPPORT in target/Config.in, which was defined as tristate, and depended on 'm' (meaning its value should be only 'm' or 'n'), but ended up being selected by feature rtc. Old config version would write it as RTC_SUPPORT=y; new version would do RTC_SUPPORT=n. However, RTC_SUPPORT does not even need to be m, so I've made it a plain bool in a separate commit. Also, I've simplified the way the related *config targets are built in include/toplevel.mk by using pattern rules, adding '-O2' to CFLAGS' while at it. Cheers, Eneas Eneas U de Queiroz (6): kernel: add @IPV6 dependency to ipv6 modules busybox: quote 'source' filenames in Config.in build: define RTC_SUPPORT as a bool build: simplify building *config targets build: scripts/config - update to kconfig-v5.6 build: add option to warn on recursive dependency include/toplevel.mk | 15 +- package/kernel/linux/modules/netfilter.mk | 13 +- package/kernel/linux/modules/netsupport.mk | 6 +- package/utils/busybox/config/Config.in | 44 +- .../utils/busybox/config/networking/Config.in | 2 +- .../utils/busybox/config/util-linux/Config.in | 2 +- scripts/config/.gitignore | 35 +- scripts/config/Makefile | 182 +- scripts/config/README | 27 +- scripts/config/conf.c | 248 +- scripts/config/confdata.c | 533 ++-- scripts/config/expr.c | 216 +- scripts/config/expr.h | 110 +- scripts/config/images.c | 34 +- scripts/config/images.h | 33 + scripts/config/{zconf.l => lexer.l} | 340 ++- scripts/config/list.h | 1 + scripts/config/lkc.h | 58 +- scripts/config/lkc_proto.h | 21 +- scripts/config/lxdialog/.gitignore | 2 - scripts/config/lxdialog/check-lxdialog.sh | 91 - scripts/config/lxdialog/checklist.c | 19 +- scripts/config/lxdialog/dialog.h | 23 +- scripts/config/lxdialog/inputbox.c | 22 +- scripts/config/lxdialog/menubox.c | 25 +- scripts/config/lxdialog/textbox.c | 17 +- scripts/config/lxdialog/util.c | 15 +- scripts/config/lxdialog/yesno.c | 19 +- scripts/config/mconf-cfg.sh | 50 + scripts/config/mconf.c | 179 +- scripts/config/menu.c | 451 ++- scripts/config/{zconf.y => parser.y} | 429 ++- scripts/config/preprocess.c | 575 ++++ scripts/config/qconf-cfg.sh | 32 + scripts/config/qconf.cc | 174 +- scripts/config/qconf.h | 3 +- scripts/config/symbol.c | 268 +- scripts/config/util.c | 86 +- scripts/config/zconf.gperf | 49 - scripts/config/zconf.hash.c_shipped | 250 -- scripts/config/zconf.lex.c_shipped | 2533 ----------------- scripts/config/zconf.tab.c_shipped | 2478 ---------------- target/Config.in | 3 +- 43 files changed, 2700 insertions(+), 7013 deletions(-) create mode 100644 scripts/config/images.h rename scripts/config/{zconf.l => lexer.l} (50%) delete mode 100644 scripts/config/lxdialog/.gitignore delete mode 100644 scripts/config/lxdialog/check-lxdialog.sh create mode 100755 scripts/config/mconf-cfg.sh rename scripts/config/{zconf.y => parser.y} (64%) create mode 100644 scripts/config/preprocess.c create mode 100755 scripts/config/qconf-cfg.sh delete mode 100644 scripts/config/zconf.gperf delete mode 100644 scripts/config/zconf.hash.c_shipped delete mode 100644 scripts/config/zconf.lex.c_shipped delete mode 100644 scripts/config/zconf.tab.c_shipped _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel