Message ID | 20240408211609.2423619-1-robimarko@gmail.com |
---|---|
State | New |
Headers | show |
Series | [v2,1/1] kconfig/lxdialog: fix check() with GCC14 | expand |
Hi Robert, Thomas, > GCC14 now treats implicit int types as error so when check() from > check-lxdialog.sh is called to check whether we can link against ncurses > it will fail silently and the help text indicating to install ncurses is > printed. > However, this is not due to missing ncurses but once the stderr redirect > to /dev/null is removed we can see the root cause: > <stdin>:2:1: error: return type defaults to ‘int’ [-Wimplicit-int] > So, in order for menuconfig to work with GCC14 lets just specify the > return type of main() as int. > Signed-off-by: Robert Marko <robimarko@gmail.com> > Reviewed-by: Petr Vorel <petr.vorel@gmail.com> > Tested-by: Petr Vorel <petr.vorel@gmail.com> Thanks for quickly adding v2. BTW there were whitespace issues (but fixed by git am): Description: [v2,1/1] kconfig/lxdialog: fix check() with GCC14 Applying: kconfig/lxdialog: fix check() with GCC14 .git/rebase-apply/patch:65: space before tab in indent. if [ $? != 0 ]; then .git/rebase-apply/patch:66: space before tab in indent. echo " *** Unable to find the ncurses libraries or the" 1>&2 .git/rebase-apply/patch:67: trailing whitespace. -- .git/rebase-apply/patch:69: new blank line at EOF. + warning: 3 lines applied after fixing whitespace errors. Otherwise LGTM. And I see the toolchain warnings for gconfig and xconfig (which are likely fixed in newer kconfig in the Linux kernel). Kind regards, Petr > --- > support/kconfig/lxdialog/check-lxdialog.sh | 2 +- > ...config-lxdialog-fix-check-with-GCC14.patch | 43 +++++++++++++++++++ > support/kconfig/patches/series | 1 + > 3 files changed, 45 insertions(+), 1 deletion(-) > create mode 100644 support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch > diff --git a/support/kconfig/lxdialog/check-lxdialog.sh b/support/kconfig/lxdialog/check-lxdialog.sh > index 16cd9a3186..27d6c30a57 100755 > --- a/support/kconfig/lxdialog/check-lxdialog.sh > +++ b/support/kconfig/lxdialog/check-lxdialog.sh > @@ -48,7 +48,7 @@ trap "rm -f $tmp" 0 1 2 3 15 > check() { > $cc -x c - -o $tmp 2>/dev/null <<'EOF' > #include CURSES_LOC > -main() {} > +int main() {} > EOF > if [ $? != 0 ]; then > echo " *** Unable to find the ncurses libraries or the" 1>&2 > diff --git a/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch b/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch > new file mode 100644 > index 0000000000..41081bb45d > --- /dev/null > +++ b/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch > @@ -0,0 +1,43 @@ > +From 3ae91337b53fa3ccf0bad7f181fcaf483fab22ee Mon Sep 17 00:00:00 2001 > +From: Robert Marko <robimarko@gmail.com> > +Date: Wed, 3 Apr 2024 14:18:07 +0200 > +Subject: [PATCH] kconfig/lxdialog: fix check() with GCC14 > +MIME-Version: 1.0 > +Content-Type: text/plain; charset=UTF-8 > +Content-Transfer-Encoding: 8bit > + > +GCC14 now treats implicit int types as error so when check() from > +check-lxdialog.sh is called to check whether we can link against ncurses > +it will fail silently and the help text indicating to install ncurses is > +printed. > + > +However, this is not due to missing ncurses but once the stderr redirect > +to /dev/null is removed we can see the root cause: > +<stdin>:2:1: error: return type defaults to ‘int’ [-Wimplicit-int] > + > +So, in order for menuconfig to work with GCC14 lets just specify the > +return type of main() as int. > + > +Signed-off-by: Robert Marko <robimarko@gmail.com> > +Reviewed-by: Petr Vorel <petr.vorel@gmail.com> > +Tested-by: Petr Vorel <petr.vorel@gmail.com> > +--- > + kconfig/lxdialog/check-lxdialog.sh | 2 +- > + 1 file changed, 1 insertion(+), 1 deletion(-) > + > +diff --git a/kconfig/lxdialog/check-lxdialog.sh b/kconfig/lxdialog/check-lxdialog.sh > +index 16cd9a3186..27d6c30a57 100755 > +--- a/kconfig/lxdialog/check-lxdialog.sh > ++++ b/kconfig/lxdialog/check-lxdialog.sh > +@@ -48,7 +48,7 @@ trap "rm -f $tmp" 0 1 2 3 15 > + check() { > + $cc -x c - -o $tmp 2>/dev/null <<'EOF' > + #include CURSES_LOC > +-main() {} > ++int main() {} > + EOF > + if [ $? != 0 ]; then > + echo " *** Unable to find the ncurses libraries or the" 1>&2 > +-- > +2.44.0 > + > diff --git a/support/kconfig/patches/series b/support/kconfig/patches/series > index e5a6f69d8f..f120e323b7 100644 > --- a/support/kconfig/patches/series > +++ b/support/kconfig/patches/series > @@ -10,3 +10,4 @@ > 19-merge_config.sh-add-br2-external-support.patch > 20-merge_config.sh-Allow-to-define-config-prefix.patch > 21-Avoid-false-positive-matches-from-comment-lines.patch > +22-kconfig-lxdialog-fix-check-with-GCC14.patch
diff --git a/support/kconfig/lxdialog/check-lxdialog.sh b/support/kconfig/lxdialog/check-lxdialog.sh index 16cd9a3186..27d6c30a57 100755 --- a/support/kconfig/lxdialog/check-lxdialog.sh +++ b/support/kconfig/lxdialog/check-lxdialog.sh @@ -48,7 +48,7 @@ trap "rm -f $tmp" 0 1 2 3 15 check() { $cc -x c - -o $tmp 2>/dev/null <<'EOF' #include CURSES_LOC -main() {} +int main() {} EOF if [ $? != 0 ]; then echo " *** Unable to find the ncurses libraries or the" 1>&2 diff --git a/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch b/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch new file mode 100644 index 0000000000..41081bb45d --- /dev/null +++ b/support/kconfig/patches/22-kconfig-lxdialog-fix-check-with-GCC14.patch @@ -0,0 +1,43 @@ +From 3ae91337b53fa3ccf0bad7f181fcaf483fab22ee Mon Sep 17 00:00:00 2001 +From: Robert Marko <robimarko@gmail.com> +Date: Wed, 3 Apr 2024 14:18:07 +0200 +Subject: [PATCH] kconfig/lxdialog: fix check() with GCC14 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +GCC14 now treats implicit int types as error so when check() from +check-lxdialog.sh is called to check whether we can link against ncurses +it will fail silently and the help text indicating to install ncurses is +printed. + +However, this is not due to missing ncurses but once the stderr redirect +to /dev/null is removed we can see the root cause: +<stdin>:2:1: error: return type defaults to ‘int’ [-Wimplicit-int] + +So, in order for menuconfig to work with GCC14 lets just specify the +return type of main() as int. + +Signed-off-by: Robert Marko <robimarko@gmail.com> +Reviewed-by: Petr Vorel <petr.vorel@gmail.com> +Tested-by: Petr Vorel <petr.vorel@gmail.com> +--- + kconfig/lxdialog/check-lxdialog.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/kconfig/lxdialog/check-lxdialog.sh b/kconfig/lxdialog/check-lxdialog.sh +index 16cd9a3186..27d6c30a57 100755 +--- a/kconfig/lxdialog/check-lxdialog.sh ++++ b/kconfig/lxdialog/check-lxdialog.sh +@@ -48,7 +48,7 @@ trap "rm -f $tmp" 0 1 2 3 15 + check() { + $cc -x c - -o $tmp 2>/dev/null <<'EOF' + #include CURSES_LOC +-main() {} ++int main() {} + EOF + if [ $? != 0 ]; then + echo " *** Unable to find the ncurses libraries or the" 1>&2 +-- +2.44.0 + diff --git a/support/kconfig/patches/series b/support/kconfig/patches/series index e5a6f69d8f..f120e323b7 100644 --- a/support/kconfig/patches/series +++ b/support/kconfig/patches/series @@ -10,3 +10,4 @@ 19-merge_config.sh-add-br2-external-support.patch 20-merge_config.sh-Allow-to-define-config-prefix.patch 21-Avoid-false-positive-matches-from-comment-lines.patch +22-kconfig-lxdialog-fix-check-with-GCC14.patch