Please check if your packages build (correctly) with GCC 14 - take 2
Hello, TL;DR: if your package is in the list at the bottom of this email, please check if it needs fixing to build with GCC 14. And maybe check that is configures correctly even if it isn't listed. Longer version: it took more time than expected to prepare Factory for GCC 14 but we hope we are (very) close. Because GCC 14 is more strict than earlier versions about C99 compliance (see https://gcc.gnu.org/gcc-14/porting_to.html), the switch is more difficult than normally. Everything I wrote in https://lists.opensuse.org/archives/list/factory@lists.opensuse.org/thread/6... still applies. We have been diligently fixing quite a big number of packages but many are still not ready. We have set up OBS project home:rguenther:nextgcc to find out which those might be. The environment in that project is not perfect as has been noted on this list previously (see replies in the thread linked above) but most of the failures there seem to be genuine ones. I have collected the failures and removed those that fail also on trunk and those that pass in a better set-up but smaller OBS project openSUSE:Factory:Staging:Gcc7 and the result is below. If your package is listed, please have a look, chances are high it will fail when it will be built with GCC 14 after we switch. It may be a good idea to have a look even if it is not listed, because the new errors can and unfortunately also do affect environment probing, especially with old autotools. It is therefore advisable to check and/or compare config.log and/or config.h with compilation using GCC 13. In order to reproduce the build using GCC 14 locally, you can invoke osc with: osc -A https://api.opensuse.org build --alternative-project home:rguenther:nextgcc Thank you very much, Martin The list of suspect packages: DSView Fragments FreeCAD MozillaThunderbird OOKiedokie Regina-REXX RigelEngine SDL3 SDL_Pango SDL_mixer VFlib3 adios:gnu-mpich-hpc adios:gnu-mvapich2-hpc adios:gnu-openmpi4-hpc appimaged aranym asco aseqview asusfan aws-c-s3 baresip bcachefs-tools bladeRF bluefish bomns boost:gnu-hpc boost:gnu-mpich-hpc boost:gnu-mvapich2-hpc boost:gnu-openmpi4-hpc bsd-games btop bup calibre caribou ccx cdogs-sdl cgdb chntpw cinnamon-control-center cinnamon-settings-daemon ckermit clamav clipit clisp cm cmpi-bindings codelite commandergenius compface conauto conky coolkey dapl dapl:debug deepin-file-manager deepin-screen-recorder deepin-system-monitor dfu-programmer dictd difftastic discount2 dssi dump1090-fa dvdisaster eciadsl-usermode eclipse eclipse:bootstrap ecwolf eekboard element-desktop enlightenment erlang-rebar-testsuite erlang-rebar-testsuite:erlang-rebar-testsuite erlang-rebar:erlang-rebar-testsuite extension-manager fairymax fakechroot fcitx-fbterm fdo-client festival fflas-ffpack ffsb fftw3:gnu-hpc fftw3:gnu-mpich-hpc fftw3:gnu-mvapich2-hpc fftw3:gnu-openmpi4-hpc florence freerdp2 frink fritzing fvwm2 gap-xgap gavl gcad3d gcin genders gf2x ghc-clientsession ghc-commonmark-extensions ghc-pandoc-lua-engine ghc-pandoc-server ghc-uuid gimp-gap givaro glabels gnome-radio gnome-recipes gnu-cobol gnu-recutils gperiodic gqlplus grass gsequencer gsl:gnu-hpc gtk-sharp3 gtkam gtypist guestfs-tools gutenprint hackbench hashlink hcode hdf5:gnu-hpc hdf5:gnu-mpich-hpc hdf5:gnu-mvapich2-hpc hdf5:gnu-openmpi4-hpc hdf5:gnu-openmpi5-hpc hdjmod heaptrack helm hp-drive-guard htdig hylafax+ hypre:gnu-mpich-hpc hypre:gnu-mvapich2-hpc hypre:gnu-openmpi4-hpc ibus-kkc ibus-skk identity imb:gnu-mpich-hpc imb:gnu-mvapich2-hpc imb:gnu-openmpi4-hpc inarpd input-pad interbench jfbterm julia julia:compat kakasi kanjipad kasumi kernelshark kf6-kimageformats kf6-kplotting kicad krita lash lasso lastpass-cli latrace ldapvi lemon level-zero lftp libGLC libXbgi libargtable2 libcli libdbi-drivers libesedb libfishsound libfm libfreefare libgee06 libguestfs libheimdal libkkc libksi libminizinc libmpd libnbd libnpupnp librep libresprite libsearpc libskk libspf2 libstfl libt3key libt3widget libt3window libtranscript libunicap libupnpp libvma libvmdk libwrc linbox linphone linux-ftools love-0_7_2 lscsoft-glue lua-luadbi:lua51 lua-luadbi:lua53 lua-luadbi:lua54 lua-luasql:lua51 lua-luasql:lua53 lua-luasql:lua54 luvcview lxpanel lxsession lxterminal maelstrom maven-javadoc-plugin maven-surefire:maven-surefire-plugins maven-surefire:maven-surefire-provider-junit5 mayavi mbedtls-2 mcpp memprof metis:gnu-hpc micropython minder mined minetest minicom modello:modello-maven-plugin monitoring-plugins moolticute mozldap mp mpfi mpiP:gnu-mpich-hpc mpiP:gnu-mvapich2-hpc mpiP:gnu-openmpi4-hpc mpibash mpich:gnu-hpc mpich:gnu-hpc-ofi mpich:gnu-hpc-ofi-testsuite mpich:gnu-hpc-testsuite mrsh mstflint mtpaint mumps:gnu-mpich-hpc mumps:gnu-mvapich2-hpc mumps:gnu-openmpi4-hpc mvapich2:gnu-hpc mvapich2:gnu-hpc-psm2 mvapich2:gnu-hpc-testsuite mvapich2:psm2 mvapich2:psm2-testsuite mvapich2:standard mvapich2:testsuite mvapich3:gnu-hpc-ofi mvapich3:gnu-hpc-ucx mvapich3:ofi-testsuite mvapich3:ucx-testsuite nasc ncftp nemo-extensions netcdf-cxx4:gnu-hpc netcdf-fortran:gnu-hpc netcdf-fortran:gnu-mpich-hpc netcdf-fortran:gnu-mvapich2-hpc netcdf-fortran:gnu-openmpi4-hpc netcdf:gnu-hpc netcdf:gnu-mpich-hpc netcdf:gnu-mvapich2-hpc netcdf:gnu-openmpi4-hpc netdate nfswatch nim nodejs-electron nodejs20 notify-osd numatop obconf ocaml-mccs ocr:gnu-hpc ocr:gnu-mpich-hpc ocr:gnu-mvapich2-hpc ocr:gnu-openmpi4-hpc oculante oneko opae opam openblas:gnu-hpc openblas:gnu-hpc-pthreads openbsc opendkim openfst openjfx openmpi4:gnu-hpc openmpi4:gnu-hpc-testsuite openmpi4:testsuite openmpi5:gnu-hpc openmpi5:gnu-hpc-testsuite openssl-1_0_0 openvas-smb openwsman oprofile oto ouch p0f packETH pam_pkcs11 pam_ssh_agent_auth pandoc-cli pcmanfm pcsc-eco5000 pcsc-gempc pdfquirk perl-Authen-SASL-Cyrus perl-Inline-Python perl-Net-AMQP-RabbitMQ perl-Net-IDN-Encode petsc:gnu-mpich-hpc petsc:gnu-mvapich2-hpc petsc:gnu-openmpi4-hpc php-ice:php8 php-phalcon:php8 pix plexus-containers:plexus-component-metadata pnetcdf:gnu-mpich-hpc pnetcdf:gnu-mvapich2-hpc pnetcdf:gnu-openmpi4-hpc pocketsphinx polylib pongix postfish powerd prboom-plus python-Kivy python-PyWebDAV3-GNUHealth python-Wand python-asdf-astropy python-debtcollector python-dmidecode python-futurist python-geventhttpclient python-gpt4all python-librosa python-ligo-lw python-ligo-lw:test python-ligo-segments python-metamagic.json python-numpy:gnu-hpc python-proto-plus:test python-pyFFTW python-pyghmi python-scikit-image:test python-scipy:gnu-hpc python-spyder-notebook python-statsmodels python-xmlsec python3-pynest2d quilter qxmledit rakudo reaim reiser4progs rep-gtk resample rinetd rmt-server rox-filer rubygem-hpricot rubygem-sqlite3 rzip sc scalapack:gnu-mpich-hpc scalapack:gnu-mvapich2-hpc scalapack:gnu-openmpi4-hpc scalapack:mvapich2 scalapack:openmpi4 schedtool scheme48 scim-skk scmon scotch:gnu-hpc scotch:gnu-mpich-hpc scotch:gnu-mvapich2-hpc scotch:gnu-openmpi4-hpc screencast scrub sdl_bomber seamonkey sgrep siproxd sisctrl sisu:sisu-mojos slrn slurm-plugin-oom-score-adj smcroute snack softhsm spacefm sphinx sphinxbase sphinxbase5 spooles spooles:openmpi sqlite-jdbc squidGuard stellarsolver superlu:gnu-hpc taigo tayga tboot tectonic terminus text-engine thttpd tiled tktable torsocks trilinos:gnu-mpich-hpc trilinos:gnu-mvapich2-hpc trilinos:gnu-openmpi4-hpc ttf2pt1 tupitube tvm typst ucblogo ucl ucm udns uim unar unclutter virt-v2v vitetris watchexec weggli wezterm wine-nine-standalone wv xbench xcolors xcoral xemacs xengine xf86-video-fbturbo xf86-video-fbturbo-live xfce4-notes-plugin xfig xfmpc xlockmore xmgrace xmorph xpinguin xplayer xplayer-plparser xroach xsession xtexit xviewer zile
Hello, On lundi 19 août 2024 19:20:20 UTC+2 Martin Jambor wrote:
Hello,
TL;DR: if your package is in the list at the bottom of this email, please check if it needs fixing to build with GCC 14. And maybe check that is configures correctly even if it isn't listed.
I had a quick look at the KDE-related failures:
heaptrack
SR#1194856
kf6-kimageformats kf6-kplotting
Can't reproduce with KDE Frameworks 6.5.0 and openSUSE:Factory:Staging:Gcc7
krita
Boost needs a fix after some splitting that happened in the gcc14 package: /usr/include/boost/multiprecision/cpp_bin_float.hpp:40:10: fatal error: quadmath.h: No such file or directory
stellarsolver
sr#1194850 Christophe
Hi, On Tue, Aug 20 2024, Christophe Marin via openSUSE Factory wrote:
Hello,
On lundi 19 août 2024 19:20:20 UTC+2 Martin Jambor wrote:
Hello,
TL;DR: if your package is in the list at the bottom of this email, please check if it needs fixing to build with GCC 14. And maybe check that is configures correctly even if it isn't listed.
I had a quick look at the KDE-related failures:
heaptrack
SR#1194856
Thanks!
kf6-kimageformats kf6-kplotting
Can't reproduce with KDE Frameworks 6.5.0 and openSUSE:Factory:Staging:Gcc7
krita
Boost needs a fix after some splitting that happened in the gcc14 package: /usr/include/boost/multiprecision/cpp_bin_float.hpp:40:10: fatal error: quadmath.h: No such file or directory
This is the same error as described in: https://bugzilla.suse.com/show_bug.cgi?id=1225861#c12 The work-around is to add a somewhat illogical build requirement of gcc-fortran which then can be removed when new fixed boost comes out (which should be soon) and is packaged. Starting with gcc-14, libquadmath will is a in a separate sub-package.
stellarsolver
sr#1194850
Thanks! Martin
On Monday 2024-08-19 19:20, Martin Jambor wrote:
it took more time than expected to prepare Factory for GCC 14 but we hope we are (very) close. Because GCC 14 is more strict than earlier versions about C99 compliance (see https://gcc.gnu.org/gcc-14/porting_to.html), the switch is more difficult than normally.
Everything I wrote in https://lists.opensuse.org/archives/list/factory@lists.opensuse.org/thread/6... still applies.
The list of suspect packages:
cm
This is a problem in GMP instead: abuild@a4:~/rpmbuild/BUILD/cm-0.4.3> grep -r mpz_out_str /usr/include/ /usr/include/gmp.h:#define mpz_out_str __gmpz_out_str /usr/include/gmp.h:__GMP_DECLSPEC size_t mpz_out_str (FILE *, int, mpz_srcptr); abuild@a4:~/rpmbuild/BUILD/cm-0.4.3> grep -r __gmpz_out_str /usr/include/ /usr/include/gmp.h:#define mpz_out_str __gmpz_out_str ... and that kinda makes a lot of scientific software susceptible to being flagged.
On Wed, 21 Aug 2024, Jan Engelhardt wrote:
On Monday 2024-08-19 19:20, Martin Jambor wrote:
it took more time than expected to prepare Factory for GCC 14 but we hope we are (very) close. Because GCC 14 is more strict than earlier versions about C99 compliance (see https://gcc.gnu.org/gcc-14/porting_to.html), the switch is more difficult than normally.
Everything I wrote in https://lists.opensuse.org/archives/list/factory@lists.opensuse.org/thread/6... still applies.
The list of suspect packages:
cm
This is a problem in GMP instead:
abuild@a4:~/rpmbuild/BUILD/cm-0.4.3> grep -r mpz_out_str /usr/include/ /usr/include/gmp.h:#define mpz_out_str __gmpz_out_str /usr/include/gmp.h:__GMP_DECLSPEC size_t mpz_out_str (FILE *, int, mpz_srcptr);
abuild@a4:~/rpmbuild/BUILD/cm-0.4.3> grep -r __gmpz_out_str /usr/include/ /usr/include/gmp.h:#define mpz_out_str __gmpz_out_str
... and that kinda makes a lot of scientific software susceptible to being flagged.
More context: #define mpz_out_str __gmpz_out_str #ifdef _GMP_H_HAVE_FILE __GMP_DECLSPEC size_t mpz_out_str (FILE *, int, mpz_srcptr); #endif so the issue might be that _GMP_H_HAVE_FILE is not set? Note when you check home:rguenther:plgrnd that builds against Factory packages only (useforbuild is off), but GCC 14 is used as default. _GMP_H_HAVE_FILE is defined as #if defined (FILE) \ || defined (H_STDIO) \ || defined (_H_STDIO) /* AIX */ \ || defined (_STDIO_H) /* glibc, Sun, SCO */ \ || defined (_STDIO_H_) /* BSD, OSF */ \ || defined (__STDIO_H) /* Borland */ \ || defined (__STDIO_H__) /* IRIX */ \ || defined (_STDIO_INCLUDED) /* HPUX */ \ || defined (__dj_include_stdio_h_) /* DJGPP */ \ || defined (_FILE_DEFINED) /* Microsoft */ \ || defined (__STDIO__) /* Apple MPW MrC */ \ || defined (_MSL_STDIO_H) /* Metrowerks */ \ || defined (_STDIO_H_INCLUDED) /* QNX4 */ \ || defined (_ISO_STDIO_ISO_H) /* Sun C++ */ \ || defined (__STDIO_LOADED) /* VMS */ \ || defined (__DEFINED_FILE) /* musl */ #define _GMP_H_HAVE_FILE 1 #endif for me, that all looks like glibc defines. Richard. -- Richard Biener <rguenther@suse.de> SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)
On Aug 22 2024, Richard Biener wrote:
so the issue might be that _GMP_H_HAVE_FILE is not set?
That happens when <stdio.h> is not included. -- Andreas Schwab, SUSE Labs, schwab@suse.de GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7 "And now for something completely different."
On Thu, 22 Aug 2024, Richard Biener wrote:
On Wed, 21 Aug 2024, Jan Engelhardt wrote:
On Monday 2024-08-19 19:20, Martin Jambor wrote:
it took more time than expected to prepare Factory for GCC 14 but we hope we are (very) close. Because GCC 14 is more strict than earlier versions about C99 compliance (see https://gcc.gnu.org/gcc-14/porting_to.html), the switch is more difficult than normally.
Everything I wrote in https://lists.opensuse.org/archives/list/factory@lists.opensuse.org/thread/6... still applies.
The list of suspect packages:
cm
This is a problem in GMP instead:
abuild@a4:~/rpmbuild/BUILD/cm-0.4.3> grep -r mpz_out_str /usr/include/ /usr/include/gmp.h:#define mpz_out_str __gmpz_out_str /usr/include/gmp.h:__GMP_DECLSPEC size_t mpz_out_str (FILE *, int, mpz_srcptr);
abuild@a4:~/rpmbuild/BUILD/cm-0.4.3> grep -r __gmpz_out_str /usr/include/ /usr/include/gmp.h:#define mpz_out_str __gmpz_out_str
... and that kinda makes a lot of scientific software susceptible to being flagged.
More context:
#define mpz_out_str __gmpz_out_str #ifdef _GMP_H_HAVE_FILE __GMP_DECLSPEC size_t mpz_out_str (FILE *, int, mpz_srcptr); #endif
so the issue might be that _GMP_H_HAVE_FILE is not set?
Note when you check home:rguenther:plgrnd that builds against Factory packages only (useforbuild is off), but GCC 14 is used as default. _GMP_H_HAVE_FILE is defined as
#if defined (FILE) \ || defined (H_STDIO) \ || defined (_H_STDIO) /* AIX */ \ || defined (_STDIO_H) /* glibc, Sun, SCO */ \ || defined (_STDIO_H_) /* BSD, OSF */ \ || defined (__STDIO_H) /* Borland */ \ || defined (__STDIO_H__) /* IRIX */ \ || defined (_STDIO_INCLUDED) /* HPUX */ \ || defined (__dj_include_stdio_h_) /* DJGPP */ \ || defined (_FILE_DEFINED) /* Microsoft */ \ || defined (__STDIO__) /* Apple MPW MrC */ \ || defined (_MSL_STDIO_H) /* Metrowerks */ \ || defined (_STDIO_H_INCLUDED) /* QNX4 */ \ || defined (_ISO_STDIO_ISO_H) /* Sun C++ */ \ || defined (__STDIO_LOADED) /* VMS */ \ || defined (__DEFINED_FILE) /* musl */ #define _GMP_H_HAVE_FILE 1 #endif
for me, that all looks like glibc defines.
I looked into one TU, tecpp.c and that doesn't include stdio.h before including mpc.h which includes gmp.h. Are you sure the package builds with gcc13? Richard.
Richard.
-- Richard Biener <rguenther@suse.de> SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)
On Thu, 22 Aug 2024, Richard Biener wrote:
On Thu, 22 Aug 2024, Richard Biener wrote:
On Wed, 21 Aug 2024, Jan Engelhardt wrote:
On Monday 2024-08-19 19:20, Martin Jambor wrote:
it took more time than expected to prepare Factory for GCC 14 but we hope we are (very) close. Because GCC 14 is more strict than earlier versions about C99 compliance (see https://gcc.gnu.org/gcc-14/porting_to.html), the switch is more difficult than normally.
Everything I wrote in https://lists.opensuse.org/archives/list/factory@lists.opensuse.org/thread/6... still applies.
The list of suspect packages:
cm
This is a problem in GMP instead:
abuild@a4:~/rpmbuild/BUILD/cm-0.4.3> grep -r mpz_out_str /usr/include/ /usr/include/gmp.h:#define mpz_out_str __gmpz_out_str /usr/include/gmp.h:__GMP_DECLSPEC size_t mpz_out_str (FILE *, int, mpz_srcptr);
abuild@a4:~/rpmbuild/BUILD/cm-0.4.3> grep -r __gmpz_out_str /usr/include/ /usr/include/gmp.h:#define mpz_out_str __gmpz_out_str
... and that kinda makes a lot of scientific software susceptible to being flagged.
More context:
#define mpz_out_str __gmpz_out_str #ifdef _GMP_H_HAVE_FILE __GMP_DECLSPEC size_t mpz_out_str (FILE *, int, mpz_srcptr); #endif
so the issue might be that _GMP_H_HAVE_FILE is not set?
Note when you check home:rguenther:plgrnd that builds against Factory packages only (useforbuild is off), but GCC 14 is used as default. _GMP_H_HAVE_FILE is defined as
#if defined (FILE) \ || defined (H_STDIO) \ || defined (_H_STDIO) /* AIX */ \ || defined (_STDIO_H) /* glibc, Sun, SCO */ \ || defined (_STDIO_H_) /* BSD, OSF */ \ || defined (__STDIO_H) /* Borland */ \ || defined (__STDIO_H__) /* IRIX */ \ || defined (_STDIO_INCLUDED) /* HPUX */ \ || defined (__dj_include_stdio_h_) /* DJGPP */ \ || defined (_FILE_DEFINED) /* Microsoft */ \ || defined (__STDIO__) /* Apple MPW MrC */ \ || defined (_MSL_STDIO_H) /* Metrowerks */ \ || defined (_STDIO_H_INCLUDED) /* QNX4 */ \ || defined (_ISO_STDIO_ISO_H) /* Sun C++ */ \ || defined (__STDIO_LOADED) /* VMS */ \ || defined (__DEFINED_FILE) /* musl */ #define _GMP_H_HAVE_FILE 1 #endif
for me, that all looks like glibc defines.
I looked into one TU, tecpp.c and that doesn't include stdio.h before including mpc.h which includes gmp.h.
Are you sure the package builds with gcc13?
Well, yes - it's only a warning with gcc13 and will call the function without a prototype (which is bad). Richard.
Hi, I fixed libupnpp and libupnpp with updated upstream versions of these libs having GCC 14 fixes. On 8/19/24 7:20 PM, Martin Jambor wrote:
Hello,
TL;DR: if your package is in the list at the bottom of this email, please check if it needs fixing to build with GCC 14. And maybe check that is configures correctly even if it isn't listed.
On Mon, 19 Aug 2024 19:20:20 +0200, Martin Jambor wrote:
Hello,
TL;DR: if your package is in the list at the bottom of this email, please check if it needs fixing to build with GCC 14. And maybe check that is configures correctly even if it isn't listed.
Longer version:
it took more time than expected to prepare Factory for GCC 14 but we hope we are (very) close. Because GCC 14 is more strict than earlier versions about C99 compliance (see https://gcc.gnu.org/gcc-14/porting_to.html), the switch is more difficult than normally.
Everything I wrote in https://lists.opensuse.org/archives/list/factory@lists.opensuse.org/thread/6... still applies.
We have been diligently fixing quite a big number of packages but many are still not ready. We have set up OBS project home:rguenther:nextgcc to find out which those might be. The environment in that project is not perfect as has been noted on this list previously (see replies in the thread linked above) but most of the failures there seem to be genuine ones.
I have collected the failures and removed those that fail also on trunk and those that pass in a better set-up but smaller OBS project openSUSE:Factory:Staging:Gcc7 and the result is below. If your package is listed, please have a look, chances are high it will fail when it will be built with GCC 14 after we switch.
It may be a good idea to have a look even if it is not listed, because the new errors can and unfortunately also do affect environment probing, especially with old autotools. It is therefore advisable to check and/or compare config.log and/or config.h with compilation using GCC 13.
In order to reproduce the build using GCC 14 locally, you can invoke osc with: osc -A https://api.opensuse.org build --alternative-project home:rguenther:nextgcc
Thank you very much,
Martin
FYI, I added gcc14 repo to a few OBS projects to catch up: multimedia:libs, multimedia:apps and M17N. Takashi
On 19. 08. 24, 19:20, Martin Jambor wrote:
The list of suspect packages:
FWIW I used this: osc prjresults -s failed -c home:rguenther:plgrnd|sed -n 's/;failed// p' | grep -Ff <(osc my pkg|sed 's@.*/@@'|sort -u) to filter failing packages which I maintain... -- js suse labs
participants (8)
-
Andreas Schwab
-
Christophe Marin
-
Jan Engelhardt
-
Jiri Slaby
-
Martin Jambor
-
Michael Pujos
-
Richard Biener
-
Takashi Iwai