You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The package fails to build in a test rebuild on at least amd64 with gcc-15/g++-15, but succeeds to build with gcc-14/g++-14. The severity of this report will be raised before the forky release.
To build with GCC 15, either set CC=gcc-15CXX=g++-15 explicitly, or install the gcc, g++, gfortran, ... packages from experimental.
apt-get -t=experimental install g++
GCC 15 now defaults to the C23/C++23 standards, exposing many FTBFS.
Other Common build failures are new warnings resulting in build failures
with -Werror turned on, or new/dropped symbols in Debian symbols files.
For other C/C++ related build failures see the porting guide at http://gcc.gnu.org/gcc-15/porting_to.html
The meaning of function declarations of the form rettype identifier (); such as char *strstr (); changed in C23.
In C17 and earlier, such function declarators specified no information about the number or types of the parameters of the function (C17 6.7.6.3), requiring users to know the correct number of arguments, with each passed argument going through default argument promotion.
In C23 such declarations mean (void) i.e. a function taking no arguments, which can lead to build failures on code that relied on the earlier meaning, such as in this example:
<source>: In function 'test':
<source>:6:11: error: assignment to 'void (*)(void)' from incompatible pointer type '__sighandler_t' {aka 'void (*)(int)'} [-Wincompatible-pointer-types]
6 | handler = signal(SIGQUIT, SIG_IGN);
| ^
In file included from <source>:1:
/usr/include/signal.h:72:16: note: '__sighandler_t' declared here
72 | typedef void (*__sighandler_t) (int);
| ^~~~~~~~~~~~~~
Code such as the above relying on a non-zero number of parameters (such as a single int) can be fixed for C23 by adding the correct parameters to the function declarator, such as via:
void (*handler)(int);
In other cases the code is simply missing a #include of the correct header, such as with:
void *malloc();
These can be fixed by including the correct header and removing the non-prototype declaration.
Alternatively you can use -std= to select an earlier version of the C standard.
The text was updated successfully, but these errors were encountered:
Can Debian packaging team try CMake for HDF4 package?
Not really. Our build is heavily patched to build variants with and without netcdf compatibility, requiring us to completely rewrite our packaging for the switch to CMake.
That's only worthwhile if we can get rid of the -alt variant, but most reverse dependencies in Debian use that variant not the regular one. We could make the -alt variant the only one built when switching to CMake, but the amount of work required to change the packaging to use CMake is still hard to find the motivation for.
I see that on master functions like h4_xdr_double have been renamed to use the hdf prefix instead of h4, I suspect source changes related to those are more likely to have made a difference with your GCC 15 build than CMake.
As reported in Debian Bug #1097195:
From Porting to GCC 15 > Function declarations without parameters:
The text was updated successfully, but these errors were encountered: