Subject: bosh: ftbfs with GCC-15

From: Matthias Klose <[email-masked]>
Date: Mon, 17 Feb 2025 17:05:39 +0000

Package: src:bosh
Version: 0.6-12
Severity: important
Tags: sid forky
User: [email-masked]
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/bosh_0.6-12_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

[...]
   dh_auto_build
	make -j8
make[1]: Entering directory '/build/reproducible-path/bosh-0.6'
gcc -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"bosh\" -DVERSION=\"0.6\" -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_UNISTD_H=1 -DSTDC_HEADERS=1 -DHAVE_LIBNCURSES=1 -I.   -Wdate-time -D_FORTIFY_SOURCE=2  -Wall -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/bosh-0.6=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c -o bosh.o bosh.c
gcc -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"bosh\" -DVERSION=\"0.6\" -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_UNISTD_H=1 -DSTDC_HEADERS=1 -DHAVE_LIBNCURSES=1 -I.   -Wdate-time -D_FORTIFY_SOURCE=2  -Wall -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/bosh-0.6=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c -o misc.o misc.c
gcc -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"bosh\" -DVERSION=\"0.6\" -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_UNISTD_H=1 -DSTDC_HEADERS=1 -DHAVE_LIBNCURSES=1 -I.   -Wdate-time -D_FORTIFY_SOURCE=2  -Wall -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/bosh-0.6=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c -o list.o list.c
gcc -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"bosh\" -DVERSION=\"0.6\" -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_UNISTD_H=1 -DSTDC_HEADERS=1 -DHAVE_LIBNCURSES=1 -I.   -Wdate-time -D_FORTIFY_SOURCE=2  -Wall -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/bosh-0.6=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c -o rc.o rc.c
gcc -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"bosh\" -DVERSION=\"0.6\" -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_UNISTD_H=1 -DSTDC_HEADERS=1 -DHAVE_LIBNCURSES=1 -I.   -Wdate-time -D_FORTIFY_SOURCE=2  -Wall -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/bosh-0.6=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c -o system.o system.c
gcc -DPACKAGE_NAME=\"\" -DPACKAGE_TARNAME=\"\" -DPACKAGE_VERSION=\"\" -DPACKAGE_STRING=\"\" -DPACKAGE_BUGREPORT=\"\" -DPACKAGE_URL=\"\" -DPACKAGE=\"bosh\" -DVERSION=\"0.6\" -DHAVE_STDIO_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_STRINGS_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_UNISTD_H=1 -DSTDC_HEADERS=1 -DHAVE_LIBNCURSES=1 -I.   -Wdate-time -D_FORTIFY_SOURCE=2  -Wall -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/bosh-0.6=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -c -o stray.o stray.c
stray.c: In function ‘stray_debug’:
stray.c:85:50: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast]
   85 |     fprintf(stream,"== ->v[%02d]: [%08X] %s\n",i,(unsigned int)a->v[i],a->v[i]?a->v[i]:"NULL");
      |                                                  ^
system.c: In function ‘bosh_close’:
system.c:614:5: warning: ignoring return value of ‘fgets’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  614 |     fgets(BOSHERR,256,b);
      |     ^~~~~~~~~~~~~~~~~~~~
system.c:627:5: warning: ignoring return value of ‘fgets’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  627 |     fgets(bosh->title,256,b);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~
system.c: At top level:
system.c:48:14: warning: ‘logprefix’ defined but not used [-Wunused-variable]
   48 | static char *logprefix = NULL;
      |              ^~~~~~~~~
bosh.c: In function ‘keyhandler_normal’:
bosh.c:400:9: error: too many arguments to function ‘bosh_init’; expected 0, have 1
  400 |         bosh_init(bosh);
      |         ^~~~~~~~~ ~~~~
bosh.c:114:6: note: declared here
  114 | void bosh_init() {
      |      ^~~~~~~~~
bosh.c: In function ‘bosh_mainloop’:
bosh.c:561:7: warning: variable ‘needredraw’ set but not used [-Wunused-but-set-variable]
  561 |   int needredraw;
      |       ^~~~~~~~~~
bosh.c: In function ‘bosh_redraw’:
bosh.c:706:14: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘time_t’ {aka ‘long int’} [-Wformat=]
  706 |     printw("%d",bosh->autorefresh-(time(NULL)-autorefreshtime));
      |             ~^  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |              |                   |
      |              int                 time_t {aka long int}
      |             %ld
make[1]: *** [Makefile:427: bosh.o] Error 1
make[1]: *** Waiting for unfinished jobs....
rc.c: In function ‘bosh_rc_read’:
rc.c:148:8: warning: ‘a’ may be used uninitialized [-Wmaybe-uninitialized]
  148 |     if(strlen(a)==1)
      |        ^~~~~~~~~
rc.c:42:19: note: ‘a’ was declared here
   42 |   char s[256],*p,*a,*v;
      |                   ^
rc.c:154:32: warning: ‘v’ may be used uninitialized [-Wmaybe-uninitialized]
  154 |         p = malloc(strlen(a+1)+strlen(v)+1);
      |                                ^~~~~~~~~
rc.c:42:22: note: ‘v’ was declared here
   42 |   char s[256],*p,*a,*v;
      |                      ^
system.c: In function ‘bosh_read’:
system.c:481:76: warning: ‘n’ may be used uninitialized [-Wmaybe-uninitialized]
  481 | #define FD_SETIFVALID(fd,fdset,n) if(FD_ISVALID(fd)) { FD_SET(fd,fdset); n = hof(n,fd); }
system.c:498:5: note: in expansion of macro ‘FD_SETIFVALID’
  498 |     FD_SETIFVALID(bosh->childout,&fdsetr,n);
      |     ^~~~~~~~~~~~~
system.c:488:7: note: ‘n’ was declared here
  488 |   int n,r,loop=1;
      |       ^
make[1]: Leaving directory '/build/reproducible-path/bosh-0.6'
dh_auto_build: error: make -j8 returned exit code 2
make: *** [debian/rules:5: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2