Subject: shogivar: ftbfs with GCC-15

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

Package: src:shogivar
Version: 1.55b-3
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/shogivar_1.55b-3_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

[...]
 4897 |              if(!fscanf(f2, " \"%[^\"]\",", Score[W].Caption)) fscanf(f2, "\","), Score[W].Caption[0] = '\0'; // scanf chokes on empty string!
      |                                                                ^~~~~~~~~~~~~~~~~
backend.c:4898:14: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 4898 |              fscanf(f2, "%d,%d,%d,%d", &Score[W].IDStart, &Score[W].IDEnd, &Score[W].PosStart, &Score[W].PosEnd);
      |              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
backend.c:4899:14: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 4899 |              fscanf(f2, "%d", &Captures[W].number);
      |              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
backend.c:4901:18: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 4901 |                  fscanf(f2, "%d", &Captures[W].Positions[V]);
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
backend.c:4902:18: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 4902 |                  fscanf(f2, "%d", &Captures[W].PieceNum[V]);
      |                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
backend.c:4935:9: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 4935 |         fscanf(f1, "%d,%[^,]", &Pieces[I].number, Pieces[I].Name);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
backend.c:4936:9: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 4936 |         fscanf(f1, ",%[^,],%d", Pieces[I].sname, &Pieces[I].Value);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
backend.c:4937:9: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 4937 |         fscanf(f1, ",%d,%d,%d", &Pieces[I].PrValue, &Pieces[I].Promotes, &Pieces[I].Graphic);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
backend.c:4938:9: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 4938 |         fscanf(f1, ",%d", &Pieces[I].PrGraphic);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
backend.c:4940:13: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 4940 |             fscanf(f1, ",%d", &Pieces[I].Moves[J]);
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
backend.c:4942:9: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 4942 |         fscanf(f1, ",%c", &Pieces[I].special);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
backend.c:4943:9: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 4943 |         fscanf(f1, ",%d", &Pieces[I].Mask);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
backend.c:4944:9: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 4944 |         fscanf(f1, ",%d", &Pieces[I].Range); // WARNING: original .dat files leave this out if 0
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
backend.c:4952:13: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 4952 |             fscanf(f1, "%d,", &Squares[I][J]);
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
backend.c:4953:31: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 4953 |             if(Loading == 1 ) fscanf(f2, "%d", &Squares[I][J]);
      |                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
backend.c:4979:6: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 4979 |      fscanf(f1, "%d,", &Capture);
      |      ^~~~~~~~~~~~~~~~~~~~~~~~~~~
backend.c:4985:9: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 4985 |         fscanf(f1, "%d,", &CapRef[I]);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
backend.c:5000:27: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 5000 |         if(Loading == 1 ) fscanf(f2, "%d", &InHand[I]);
      |                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
backend.c:5040:3: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 5040 |   fscanf(f1, "%d", &PieceSizes);
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
backend.c:5043:11: warning: ignoring return value of ‘fscanf’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 5043 |           fscanf(f1, "%d,", &PieceMask[J][K]);
      |           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
backend.c: In function ‘SetRules’:
backend.c:5106:5: warning: ignoring return value of ‘fread’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
 5106 |     fread(text, 1, 20000, f);
      |     ^~~~~~~~~~~~~~~~~~~~~~~~
make[2]: *** [Makefile:1093: backend.o] Error 1
make[2]: Leaving directory '/build/reproducible-path/shogivar-1.55b'
make[1]: *** [Makefile:961: all] Error 2
make[1]: Leaving directory '/build/reproducible-path/shogivar-1.55b'
dh_auto_build: error: make -j1 returned exit code 2
make: *** [debian/rules:22: binary] Error 255
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2