#1097300 lincity: ftbfs with GCC-15

Package:
src:lincity
Source:
src:lincity
Submitter:
Matthias Klose
Date:
2025-09-04 22:09:08 UTC
Severity:
normal
Tags:
#1097300#5
Date:
2025-02-17 17:34:44 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/lincity_1.13.1-16_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

[...]
      |         ^~~~~~
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -DLC_X11=1 -Wall -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/lincity-1.13.1=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wall -c main.c -o lcx-main.o >/dev/null 2>&1
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -DLC_X11=1 -Wall -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/lincity-1.13.1=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wall -c lchelp.c -o lcx-lchelp.o >/dev/null 2>&1
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -DLC_X11=1 -Wall -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/lincity-1.13.1=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wall -c pixmap.c -o lcx-pixmap.o >/dev/null 2>&1
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -DLC_X11=1 -Wall -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/lincity-1.13.1=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wall -c mps.c -o lcx-mps.o >/dev/null 2>&1
screen.c: In function 'load_fonts':
screen.c:804:22: warning: '%s' directive writing 7 bytes into a region of size between 0 and 4095 [-Wformat-overflow=]
  804 |     sprintf (s, "%s%c%s", opening_path, PATH_SLASH, "8x8thin");
      |                      ^~                             ~~~~~~~~~
In file included from /usr/include/stdio.h:970,
                 from screen.c:7:
In function 'sprintf',
    inlined from 'load_fonts' at screen.c:804:5:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:30:10: note: '__builtin___sprintf_chk' output between 9 and 4104 bytes into a destination of size 4096
   30 |   return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   31 |                                   __glibc_objsize (__s), __fmt,
      |                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   32 |                                   __va_arg_pack ());
      |                                   ~~~~~~~~~~~~~~~~~
screen.c: In function 'load_fonts':
screen.c:811:22: warning: '%s' directive writing 12 bytes into a region of size between 0 and 4095 [-Wformat-overflow=]
  811 |     sprintf (s, "%s%c%s", opening_path, PATH_SLASH, "scrawl_w.fnt");
      |                      ^~                             ~~~~~~~~~~~~~~
In function 'sprintf',
    inlined from 'load_fonts' at screen.c:811:5:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:30:10: note: '__builtin___sprintf_chk' output between 14 and 4109 bytes into a destination of size 4096
   30 |   return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   31 |                                   __glibc_objsize (__s), __fmt,
      |                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   32 |                                   __va_arg_pack ());
      |                                   ~~~~~~~~~~~~~~~~~
screen.c: In function 'load_fonts':
screen.c:818:22: warning: '%s' directive writing 12 bytes into a region of size between 0 and 4095 [-Wformat-overflow=]
  818 |     sprintf (s, "%s%c%s", opening_path, PATH_SLASH, "scrawl_s.fnt");
      |                      ^~                             ~~~~~~~~~~~~~~
In function 'sprintf',
    inlined from 'load_fonts' at screen.c:818:5:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:30:10: note: '__builtin___sprintf_chk' output between 14 and 4109 bytes into a destination of size 4096
   30 |   return __builtin___sprintf_chk (__s, __USE_FORTIFY_LEVEL - 1,
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   31 |                                   __glibc_objsize (__s), __fmt,
      |                                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   32 |                                   __va_arg_pack ());
      |                                   ~~~~~~~~~~~~~~~~~
screen.c: In function 'print_total_money':
screen.c:1802:14: warning: '                            ...' directive output truncated writing 44 bytes into a region of size 33 [-Wformat-truncation=]
 1802 |     count += snprintf(str + count, (MONEY_W / CHAR_WIDTH) - count,
      |              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 1803 |                       "                                            ");
      |                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In function 'snprintf',
    inlined from 'print_total_money' at screen.c:1802:14:
/usr/include/x86_64-linux-gnu/bits/stdio2.h:68:10: note: '__builtin___snprintf_chk' output 45 bytes into a destination of size 33
   68 |   return __builtin___snprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   69 |                                    __glibc_objsize (__s), __fmt,
      |                                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   70 |                                    __va_arg_pack ());
      |                                    ~~~~~~~~~~~~~~~~~
libtool: compile:  gcc -DHAVE_CONFIG_H -I. -DLC_X11=1 -Wall -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/lincity-1.13.1=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wall -c screen.c -o lcx-screen.o >/dev/null 2>&1
make[3]: Leaving directory '/build/reproducible-path/lincity-1.13.1'
make[2]: *** [Makefile:1070: all-recursive] Error 1
make[2]: Leaving directory '/build/reproducible-path/lincity-1.13.1'
make[1]: *** [Makefile:562: all] Error 2
make[1]: Leaving directory '/build/reproducible-path/lincity-1.13.1'
dh_auto_build: error: make -j8 returned exit code 2
make: *** [debian/rules:4: binary] Error 255
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2