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
[...]
228 | get_table_element(FEATURE_ID_,row,fit,&feature_id,&count);
| ^~~~~~~~~~~~~~~~~ ~~~~~~~~~~~
../vpftable.h:262:10: note: declared here
262 | void *get_table_element ();
| ^~~~~~~~~~~~~~~~~
../vpfselec.c:234:16: error: too many arguments to function ‘get_table_element’; expected 0, have 5
234 | get_table_element (TILE_ID_, row, fit, &tile_id, &count);
| ^~~~~~~~~~~~~~~~~ ~~~~~~~~
../vpftable.h:262:10: note: declared here
262 | void *get_table_element ();
| ^~~~~~~~~~~~~~~~~
../vpfselec.c:238:16: error: too many arguments to function ‘get_table_element’; expected 0, have 5
238 | get_table_element(TILE_ID_, row, fit, &short_tile_id, &count);
| ^~~~~~~~~~~~~~~~~ ~~~~~~~~
../vpftable.h:262:10: note: declared here
262 | void *get_table_element ();
| ^~~~~~~~~~~~~~~~~
../vpfselec.c:242:10: error: too many arguments to function ‘free_row’; expected 0, have 2
242 | free_row (row, fit);
| ^~~~~~~~ ~~~
../vpftable.h:259:9: note: declared here
259 | void free_row ();
| ^~~~~~~~
../vpfselec.c:246:17: error: too many arguments to function ‘get_row’; expected 0, have 2
246 | frow = get_row (feature_id, feature_table);
| ^~~~~~~ ~~~~~~~~~~
../vpftable.h:260:13: note: declared here
260 | row_type get_row ();
| ^~~~~~~
../vpfselec.c:248:18: error: too many arguments to function ‘set_insert’; expected 0, have 2
248 | set_insert (prim_id, primitives);
| ^~~~~~~~~~ ~~~~~~~
../set.h:49:9: note: declared here
49 | void set_insert ();
| ^~~~~~~~~~
../vpfselec.c:249:10: error: too many arguments to function ‘free_row’; expected 0, have 2
249 | free_row(frow,feature_table);
| ^~~~~~~~ ~~~~
../vpftable.h:259:9: note: declared here
259 | void free_row ();
| ^~~~~~~~
../vpfselec.c:251:7: error: too many arguments to function ‘free_row’; expected 0, have 2
251 | free_row (row, fit);
| ^~~~~~~~ ~~~
../vpftable.h:259:9: note: declared here
259 | void free_row ();
| ^~~~~~~~
../vpfselec.c:254:4: error: too many arguments to function ‘vpf_close_table’; expected 0, have 1
254 | vpf_close_table (&fit);
| ^~~~~~~~~~~~~~~ ~~~~
../vpftable.h:250:9: note: declared here
250 | void vpf_close_table ();
| ^~~~~~~~~~~~~~~
../vpfselec.c:255:4: error: too many arguments to function ‘set_nuke’; expected 0, have 1
255 | set_nuke (&selset);
| ^~~~~~~~ ~~~~~~~
../set.h:62:9: note: declared here
62 | void set_nuke ();
| ^~~~~~~~
make[4]: *** [<builtin>: vpfselec.o] Error 1
make[4]: Leaving directory '/build/reproducible-path/ogdi-dfsg-4.1.1+ds/vpflib/OBJ.Linux'
make[3]: *** [makefile:45: all] Error 2
make[3]: Leaving directory '/build/reproducible-path/ogdi-dfsg-4.1.1+ds/vpflib'
make[2]: *** [makefile:39: vpflib] Error 2
make[2]: Leaving directory '/build/reproducible-path/ogdi-dfsg-4.1.1+ds'
dh_auto_build: error: make -j1 returned exit code 2
make[1]: *** [debian/rules:41: override_dh_auto_build] Error 25
make[1]: Leaving directory '/build/reproducible-path/ogdi-dfsg-4.1.1+ds'
make: *** [debian/rules:23: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
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.
There are prototypes in the source behind the seemingly unused PROTO condition, e.g.:
In file included from ../vpftable.c:43:
../musedir.h:59:1: error: unknown type name 'int32'; did you mean 'int32_t'?
59 | int32 muse_filelength (char *);
| ^~~~~
| int32_t
../vpftable.c:82:7: error: conflicting types for 'float_quiet_nan'; have 'float(int32)' {aka 'float(int)'}
82 | float float_quiet_nan( int32 unused )
| ^~~~~~~~~~~~~~~
In file included from ../vpftable.c:49:
../vpftable.h:202:11: note: previous declaration of 'float_quiet_nan' with type 'double(int32)' {aka 'double(int)'}
202 | double float_quiet_nan (int32 unused);
| ^~~~~~~~~~~~~~~
I'm unsure what the appropriate fix is for GCC 15 compatibility.
The text was updated successfully, but these errors were encountered:
As reported in Debian Bug #1097501:
From Porting to GCC 15 > Function declarations without parameters:
There are prototypes in the source behind the seemingly unused
PROTO
condition, e.g.:https://github.com/libogdi/ogdi/blob/master/vpflib/vpftable.h#L200-L244
Adding
-DPROTO
causes its own breakage, however:I'm unsure what the appropriate fix is for GCC 15 compatibility.
The text was updated successfully, but these errors were encountered: