#1096674 gap-browse: ftbfs with GCC-15

#1096674#5
Date:
2025-02-17 17:14:41 UTC
From:
To:
[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/gap-browse_1.8.21+dfsg-1_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/ncurses.c:1143:5: note: 'Show_panel' declared here
 1143 | Obj Show_panel(Obj self, Obj pnum) {
      |     ^~~~~~~~~~
src/ncurses.c:1418:31: error: initialization of 'struct OpaqueBag * (*)(void)' from incompatible pointer type 'struct OpaqueBag * (*)(struct OpaqueBag *, struct OpaqueBag *)' [-Wincompatible-pointer-types]
 1418 |     { "hide_panel", 1, "pan", Hide_panel, "ncurses.c:Hide_panel" },
      |                               ^~~~~~~~~~
src/ncurses.c:1418:31: note: (near initialization for 'GVarFuncs[60].handler')
src/ncurses.c:1131:5: note: 'Hide_panel' declared here
 1131 | Obj Hide_panel(Obj self, Obj pnum) {
      |     ^~~~~~~~~~
src/ncurses.c:1419:32: error: initialization of 'struct OpaqueBag * (*)(void)' from incompatible pointer type 'struct OpaqueBag * (*)(struct OpaqueBag *, struct OpaqueBag *)' [-Wincompatible-pointer-types]
 1419 |     { "panel_above", 1, "pan", Panel_above, "ncurses.c:Panel_above" },
      |                                ^~~~~~~~~~~
src/ncurses.c:1419:32: note: (near initialization for 'GVarFuncs[61].handler')
src/ncurses.c:1179:5: note: 'Panel_above' declared here
 1179 | Obj Panel_above(Obj self, Obj pnum) {
      |     ^~~~~~~~~~~
src/ncurses.c:1420:32: error: initialization of 'struct OpaqueBag * (*)(void)' from incompatible pointer type 'struct OpaqueBag * (*)(struct OpaqueBag *, struct OpaqueBag *)' [-Wincompatible-pointer-types]
 1420 |     { "panel_below", 1, "pan", Panel_below, "ncurses.c:Panel_below" },
      |                                ^~~~~~~~~~~
src/ncurses.c:1420:32: note: (near initialization for 'GVarFuncs[62].handler')
src/ncurses.c:1190:5: note: 'Panel_below' declared here
 1190 | Obj Panel_below(Obj self, Obj pnum) {
      |     ^~~~~~~~~~~
src/ncurses.c:1421:37: error: initialization of 'struct OpaqueBag * (*)(void)' from incompatible pointer type 'struct OpaqueBag * (*)(struct OpaqueBag *, struct OpaqueBag *, struct OpaqueBag *, struct OpaqueBag *)' [-Wincompatible-pointer-types]
 1421 |     { "move_panel", 3, "pan, y, x", Move_panel, "ncurses.c:Move_panel" },
      |                                     ^~~~~~~~~~
src/ncurses.c:1421:37: note: (near initialization for 'GVarFuncs[63].handler')
src/ncurses.c:1201:5: note: 'Move_panel' declared here
 1201 | Obj Move_panel(Obj self, Obj pnum, Obj y, Obj x) {
      |     ^~~~~~~~~~
src/ncurses.c:1422:30: error: initialization of 'struct OpaqueBag * (*)(void)' from incompatible pointer type 'struct OpaqueBag * (*)(struct OpaqueBag *, struct OpaqueBag *)' [-Wincompatible-pointer-types]
 1422 |     { "del_panel", 1, "pan", Del_panel, "ncurses.c:Del_panel" },
      |                              ^~~~~~~~~
src/ncurses.c:1422:30: note: (near initialization for 'GVarFuncs[64].handler')
src/ncurses.c:1104:5: note: 'Del_panel' declared here
 1104 | Obj Del_panel(Obj self, Obj pnum) {
      |     ^~~~~~~~~
src/ncurses.c:1424:31: error: initialization of 'struct OpaqueBag * (*)(void)' from incompatible pointer type 'struct OpaqueBag * (*)(struct OpaqueBag *, struct OpaqueBag *)' [-Wincompatible-pointer-types]
 1424 |     { "mousemask", 1, "list", Mousemask, "ncurses.c:Mousemask" },
      |                               ^~~~~~~~~
src/ncurses.c:1424:31: note: (near initialization for 'GVarFuncs[65].handler')
src/ncurses.c:1272:5: note: 'Mousemask' declared here
 1272 | Obj Mousemask(Obj self, Obj list) {
      |     ^~~~~~~~~
src/ncurses.c:1425:34: error: initialization of 'struct OpaqueBag * (*)(void)' from incompatible pointer type 'struct OpaqueBag * (*)(struct OpaqueBag *)' [-Wincompatible-pointer-types]
 1425 |     { "mouseinterval", 1, "len", Mouseinterval, "ncurses.c:Mouseinterval" },
      |                                  ^~~~~~~~~~~~~
src/ncurses.c:1425:34: note: (near initialization for 'GVarFuncs[66].handler')
src/ncurses.c:1319:5: note: 'Mouseinterval' declared here
 1319 | Obj Mouseinterval( Obj len) {
      |     ^~~~~~~~~~~~~
src/ncurses.c:1426:26: error: initialization of 'struct OpaqueBag * (*)(void)' from incompatible pointer type 'struct OpaqueBag * (*)(struct OpaqueBag *)' [-Wincompatible-pointer-types]
 1426 |     { "getmouse", 0, "", GetMouse, "ncurses.c:GetMouse" },
      |                          ^~~~~~~~
src/ncurses.c:1426:26: note: (near initialization for 'GVarFuncs[67].handler')
src/ncurses.c:1290:5: note: 'GetMouse' declared here
 1290 | Obj GetMouse(Obj self) {
      |     ^~~~~~~~
src/ncurses.c:1427:35: error: initialization of 'struct OpaqueBag * (*)(void)' from incompatible pointer type 'struct OpaqueBag * (*)(struct OpaqueBag *, struct OpaqueBag *, struct OpaqueBag *, struct OpaqueBag *)' [-Wincompatible-pointer-types]
 1427 |     { "wenclose", 3, "win, y, x", Wenclose, "ncurses.c:Wenclose" },
      |                                   ^~~~~~~~
src/ncurses.c:1427:35: note: (near initialization for 'GVarFuncs[68].handler')
src/ncurses.c:1306:5: note: 'Wenclose' declared here
 1306 | Obj Wenclose(Obj self, Obj wnum, Obj iy, Obj ix) {
      |     ^~~~~~~~
make[1]: *** [debian/rules:31: override_dh_auto_build] Error 1
make[1]: Leaving directory '/build/reproducible-path/gap-browse-1.8.21+dfsg'
make: *** [debian/rules:65: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2

#1096674#10
Date:
2025-08-21 05:17:45 UTC
From:
To:
This will hopefully resolved by 
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1096671
since the involved types come from GAP headers.

#1096674#19
Date:
2025-09-17 19:00:24 UTC
From:
To:
reassign 1096674
notfound 1096674 4.14.0-4
quit

It is indeed resolved by fixing 1096671.
I just did a test build, see

make[1]: Leaving directory '/build/gap-browse-1.8.21+dfsg'
   debian/rules override_dh_auto_build
make[1]: Entering directory '/build/gap-browse-1.8.21+dfsg'
/usr/bin/gac -d -p "-g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/gap-browse-1.8.21+dfsg=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection" -o bin/x86_64-pc-linux-gnu-default64-kv9/ncurses.so src/ncurses.c \
                                                                 -L "-Wl,-z,relro -lpanel -lncurses"
x86_64-linux-gnu-gcc -pthread -g -Wall -O2 -std=gnu17 -fPIC -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/gap-browse-1.8.21+dfsg=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -o /tmp/gacNSVXGv2/56671_ncurses.o -I/usr/include/gap -I/usr/include -DUSE_GASMAN=1 -c src/ncurses.c
x86_64-linux-gnu-gcc -o bin/x86_64-pc-linux-gnu-default64-kv9/ncurses.so /tmp/gacNSVXGv2/56671_ncurses.o -shared -fPIC -lgap -Wl,-z,relro -lpanel -lncurses
rm -f /tmp/gacNSVXGv2/56671_ncurses.o
make[1]: Leaving directory '/build/gap-browse-1.8.21+dfsg'
   debian/rules execute_after_dh_auto_build
make[1]: Entering directory '/build/gap-browse-1.8.21+dfsg'
mkdir -p debian/gaproot/pkg
ln -s ../../.. debian/gaproot/pkg/Browse
make -C doc && touch doc

The -std=gnu17 is injected by gac to compensate for the GAP headers.
The version of GAP in experiemental do not need that.

Cheers,

#1096674#30
Date:
2025-09-17 20:05:18 UTC
From:
To:
Hello,
This bug was fixed in GAP 4.14.0-4.
Thanks for reporting it!

Cheers,

#1096674#33
Date:
2025-09-17 20:05:18 UTC
From:
To:
Hello,
This bug was fixed in GAP 4.14.0-4.
Thanks for reporting it!

Cheers,