Hi, thank you for authoring eukleides! I am maintaining eukleides as a Debian package, and chances are that I will no longer be able to maintain it, when the compiler gcc-15 will enter debian/testing (it is currently part of debian/experimental), which should occur in a few months.
Here is a recipe to test eukleides' source conformance with gcc-15:
- install gcc-15
- modify build/Makefile : replace the line "CC = gcc" by "CC ?= gcc"
- set the environment variable CC to gcc-15: in a bash shell that means:
"export CC=gcc-15"
- run the command "make"
I tried to fix eukleides' source, in order to comply with the stricter
requirements which come with gcc-15 : this compiler checks the profile
of functions in a very picky way, and raises errors when extra arguments
are used during a call.
Here is a typical error:
----------------------8<---------------------------------
../src/common/core.c: In function ‘exec_itable’:
../src/common/core.c:215:20: error: too many arguments to function
‘itable.cur->func’; expected 0, have 1
215 | (itable.cur->func)(itable.cur->param);
| ~~~~~~~~~~~^~~~~~~ ~~~~~~~~~~~~~~~~~
In file included from ../src/common/core.c:23:
../src/common/core.h:44:12: note: declared here
44 | void (*func)();
| ^~~~
----------------------8<---------------------------------
I could not fix all the errors, by a naive replacement of function
declarations with a void sequence of parameter, by replacing () or (void)
by (_param). Such a naive replacement works in some places, but in other
places, it causes circular incoherences, which I could not understand
easily.
Please can you give a try? There is no hurry, but gcc-15 will replace
former versions of the compiler some day.
Thank you in advance.
Best regards, Georges.
Matthias Klose a écrit :
> Package: src:eukleides
> Version: 1.5.4-5
> Severity: important
> Tags: sid forky
> User: [email protected]
> Usertags: ftbfs-gcc-15
>
> [This bug is NOT targeted to the upcoming trixie release]
>
> Please keep this issue open in the bug tracker for the package it
> was filed for. If a fix in another package is required, please
> file a bug for the other package (or clone), and add a block in this
> package. Please keep the issue open until the package can be built in
> a follow-up test rebuild.
>
> 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.
>
> The full build log can be found at:
> http://qa-logs.debian.net/2025/02/16/amd64exp/eukleides_1.5.4-5_unstable_gccexp.log.gz
> The last lines of the build log are at the end of this report.
>
> To build with GCC 15, either set CC=gcc-15 CXX=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
>
> [...]
> ../src/common/function.c:135:23: note: in expansion of macro ‘XEQ’
> 135 | case _LINE: XEQ(lift_lin, call[ind]->arg);
> | ^~~
> ../src/common/compiler.h:28:23: note: expected ‘void (*)(void)’ but argument
> is of type ‘void (*)(_param)’
> 28 | void add_instr(void (*f)(), _param p);
> | ~~~~~~~^~~~
> ../src/common/variable.h:68:6: note: ‘lift_lin’ declared here
> 68 | void lift_lin(_param p);
> | ^~~~~~~~
> ../src/common/function.c:137:27: error: passing argument 1 of ‘add_instr’
> from incompatible pointer type [-Wincompatible-pointer-types]
> 137 | case _CIRCLE: XEQ(lift_cir, call[ind]->arg);
> | ^~~~~~~~
> | |
> | void (*)(_param)
> ../src/common/compiler.h:30:48: note: in definition of macro ‘instruction’
> 30 | #define instruction(arg, fct, param) add_instr(fct, param)
> | ^~~
> ../src/common/function.c:137:23: note: in expansion of macro ‘XEQ’
> 137 | case _CIRCLE: XEQ(lift_cir, call[ind]->arg);
> | ^~~
> ../src/common/compiler.h:28:23: note: expected ‘void (*)(void)’ but argument
> is of type ‘void (*)(_param)’
> 28 | void add_instr(void (*f)(), _param p);
> | ~~~~~~~^~~~
> ../src/common/variable.h:70:6: note: ‘lift_cir’ declared here
> 70 | void lift_cir(_param p);
> | ^~~~~~~~
> ../src/common/function.c:139:27: error: passing argument 1 of ‘add_instr’
> from incompatible pointer type [-Wincompatible-pointer-types]
> 139 | case _CONIC: XEQ(lift_con, call[ind]->arg);
> | ^~~~~~~~
> | |
> | void (*)(_param)
> ../src/common/compiler.h:30:48: note: in definition of macro ‘instruction’
> 30 | #define instruction(arg, fct, param) add_instr(fct, param)
> | ^~~
> ../src/common/function.c:139:23: note: in expansion of macro ‘XEQ’
> 139 | case _CONIC: XEQ(lift_con, call[ind]->arg);
> | ^~~
> ../src/common/compiler.h:28:23: note: expected ‘void (*)(void)’ but argument
> is of type ‘void (*)(_param)’
> 28 | void add_instr(void (*f)(), _param p);
> | ~~~~~~~^~~~
> ../src/common/variable.h:72:6: note: ‘lift_con’ declared here
> 72 | void lift_con(_param p);
> | ^~~~~~~~
> ../src/common/function.c:141:27: error: passing argument 1 of ‘add_instr’
> from incompatible pointer type [-Wincompatible-pointer-types]
> 141 | case _STRING: XEQ(lift_str, call[ind]->arg);
> | ^~~~~~~~
> | |
> | void (*)(_param)
> ../src/common/compiler.h:30:48: note: in definition of macro ‘instruction’
> 30 | #define instruction(arg, fct, param) add_instr(fct, param)
> | ^~~
> ../src/common/function.c:141:23: note: in expansion of macro ‘XEQ’
> 141 | case _STRING: XEQ(lift_str, call[ind]->arg);
> | ^~~
> ../src/common/compiler.h:28:23: note: expected ‘void (*)(void)’ but argument
> is of type ‘void (*)(_param)’
> 28 | void add_instr(void (*f)(), _param p);
> | ~~~~~~~^~~~
> ../src/common/variable.h:74:6: note: ‘lift_str’ declared here
> 74 | void lift_str(_param p);
> | ^~~~~~~~
> make[3]: *** [Makefile:47: euktopst_build/function.o] Error 1
> make[2]: *** [Makefile:16: euktopst] Error 2
> make[2]: *** Waiting for unfinished jobs....
> make[2]: *** [Makefile:16: eukleides] Error 2
> make[2]: Leaving directory '/build/reproducible-path/eukleides-1.5.4'
> dh_auto_build: error: make -j8 "INSTALL=install --strip-program=true"
> returned exit code 2
> make[1]: *** [debian/rules:13: override_dh_auto_build] Error 25
> make[1]: Leaving directory '/build/reproducible-path/eukleides-1.5.4'
> make: *** [debian/rules:4: binary] Error 2
> dpkg-buildpackage: error: debian/rules binary subprocess returned exit status
> 2
>
--
Georges KHAZNADAR et Jocelyne FOURNIER
22 rue des mouettes, 59240 Dunkerque France.
Téléphone +33 (0)3 28 29 17 70
signature.asc
Description: PGP signature

