#1096662 fteqcc: ftbfs with GCC-15

Package:
src:fteqcc
Source:
src:fteqcc
Submitter:
Matthias Klose
Date:
2025-09-05 12:07:01 UTC
Severity:
normal
Tags:
#1096662#5
Date:
2025-02-17 17:14:18 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/fteqcc_3343+svn3400-6_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

[...]
      |                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
      |                 (                                           )
qccmain.c: In function ‘QCC_BspModels’:
qccmain.c:295:17: warning: ignoring return value of ‘system’ declared with attribute ‘warn_unused_result’ [-Wunused-result]
  295 |                 system (cmd);
      |                 ^~~~~~~~~~~~
make[3]: *** [<builtin>: qcctui.o] Error 1
make[3]: *** [Makefile:59: qcd_main.o] Error 1
qcc_pr_lex.c: In function ‘ParsePrecompilerIf’:
qcc_pr_lex.c:209:15: warning: unused variable ‘start’ [-Wunused-variable]
  209 |         char *start = pr_file_p;
      |               ^~~~~
qcc_pr_lex.c: In function ‘QCC_PR_Precompiler’:
qcc_pr_lex.c:803:20: warning: unused variable ‘currentsourcefile’ [-Wunused-variable]
  803 |         extern int currentsourcefile;
      |                    ^~~~~~~~~~~~~~~~~
make[3]: *** [Makefile:41: qccmain.o] Error 1
make[3]: *** [Makefile:53: comprout.o] Error 1
qcc_pr_comp.c: In function ‘QCC_PR_GenerateFunctionCall’:
qcc_pr_comp.c:2806:13: warning: variable ‘np’ set but not used [-Wunused-but-set-variable]
 2806 |         int np;
      |             ^~
qcc_pr_comp.c:2805:13: warning: variable ‘extraparms’ set but not used [-Wunused-but-set-variable]
 2805 |         int extraparms=false;
      |             ^~~~~~~~~~
qcc_pr_comp.c: In function ‘QCC_PR_ParseFunctionCall’:
qcc_pr_comp.c:3020:13: warning: variable ‘callconvention’ set but not used [-Wunused-but-set-variable]
 3020 |         int callconvention;
      |             ^~~~~~~~~~~~~~
qcc_pr_comp.c:3018:13: warning: unused variable ‘laststatement’ [-Wunused-variable]
 3018 |         int laststatement = numstatements;
      |             ^~~~~~~~~~~~~
make[3]: *** [Makefile:50: qcc_pr_lex.o] Error 1
qcc_pr_comp.c: In function ‘QCC_PR_Expression’:
qcc_pr_comp.c:5028:33: warning: variable ‘type_b’ set but not used [-Wunused-but-set-variable]
 5028 |         etype_t         type_a, type_b, type_c;
      |                                 ^~~~~~
qcc_pr_comp.c: In function ‘QCC_PR_ParseState’:
qcc_pr_comp.c:6394:14: warning: variable ‘f’ set but not used [-Wunused-but-set-variable]
 6394 |         char f;
      |              ^
qcc_pr_comp.c: In function ‘QCC_PR_DummyFieldDef’:
qcc_pr_comp.c:8194:25: warning: value computed is not used [-Wunused-value]
 8194 |                         *fieldofs++;
      |                         ^~~~~~~~~~~
qcc_pr_comp.c: In function ‘QCC_PR_ExpandUnionToFields’:
qcc_pr_comp.c:8288:53: warning: pointer targets in passing argument 5 of ‘QCC_PR_DummyFieldDef’ differ in signedness [-Wpointer-sign]
 8288 |         QCC_PR_DummyFieldDef(pass, "", pr_scope, 1, fields, true);
      |                                                     ^~~~~~
      |                                                     |
      |                                                     int *
qcc_pr_comp.c:8151:110: note: expected ‘unsigned int *’ but argument is of type ‘int *’
 8151 | QCC_def_t *QCC_PR_DummyFieldDef(QCC_type_t *type, char *name, QCC_def_t *scope, int arraysize, unsigned int *fieldofs, pbool saved)
      |                                                                                                ~~~~~~~~~~~~~~^~~~~~~~
qcc_pr_comp.c: In function ‘QCC_PR_ParseDefs’:
qcc_pr_comp.c:9044:9: note: ‘#pragma message: this is experimental’
 9044 | #pragma message("this is experimental")
      |         ^~~~~~~
qcc_pr_comp.c:9491:96: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
 9491 |                                                         if (Hash_GetKey(&floatconstdefstable, *(int*)&pr_immediate._float))
      |                                                                                                ^~~~~~~~~~~~~~~~~~~~~~~~~~
make[3]: *** [Makefile:47: qcc_pr_comp.o] Error 1
make[3]: Leaving directory '/build/reproducible-path/fteqcc-3343+svn3400'
make[2]: *** [Makefile:38: qcc] Error 2
make[2]: Leaving directory '/build/reproducible-path/fteqcc-3343+svn3400'
dh_auto_build: error: make -j8 "INSTALL=install --strip-program=true" "CFLAGS=-g -O2 -Werror=implicit-function-declaration -ffile-prefix-map=/build/reproducible-path/fteqcc-3343+svn3400=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2" BASE_CFLAGS\+=-Wl,-z,relro returned exit code 2
make[1]: *** [debian/rules:10: override_dh_auto_build] Error 25
make[1]: Leaving directory '/build/reproducible-path/fteqcc-3343+svn3400'
make: *** [debian/rules:7: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2

#1096662#10
Date:
2025-03-19 11:00:50 UTC
From:
To:
Control: retitle -1 fteqcc: FTBFS with gcc-15: true, false are keywords in C23
...

The actual build failure is not in the part of the log Matthias quoted,
but it seems to be this:

In file included from cmdlib.h:6,
                  from qcc.h:7,
                  from qccmain.c:4:
progsint.h:25:22: error: cannot use keyword ‘false’ as enumeration constant
    25 |         typedef enum{false, true} boolean;
       |                      ^~~~~

Probably compiling with -std=gnu17 would be a workaround for this.

     smcv

#1096662#19
Date:
2025-09-05 11:34:20 UTC
From:
To:
Hello,

Bug #1096662 in fteqcc reported by you has been fixed in the
Git repository and is awaiting an upload. You can see the commit
message below and you can check the diff of the fix at:

https://salsa.debian.org/games-team/fteqcc/-/commit/30d063a159cf14d19ad180b40d078381faedca6f
------------------------------------------------------------------------
d/rules: Continue to build using C17 standard with GNU extensions

This older codebase is not compatible with gcc-15's default C23 standards
compliance making true and false into keywords, and switching to C23
bool risks subtle ABI issues. This package is only minimally maintained
for the benefit of nexuiz-data, so take the conservative approach of
returning to gcc-14's default, C17.

Closes: #1096662
------------------------------------------------------------------------

(this message was generated automatically)
-- 
Greetings

https://bugs.debian.org/1096662

#1096662#26
Date:
2025-09-05 12:05:53 UTC
From:
To:
We believe that the bug you reported is fixed in the latest version of
fteqcc, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 1096662@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Simon McVittie <smcv@debian.org> (supplier of updated fteqcc package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@ftp-master.debian.org)
Format: 1.8
Date: Fri, 05 Sep 2025 12:33:21 +0100
Source: fteqcc
Architecture: source
Version: 3343+svn3400-7
Distribution: unstable
Urgency: medium
Maintainer: Debian Games Team <pkg-games-devel@lists.alioth.debian.org>
Changed-By: Simon McVittie <smcv@debian.org>
Closes: 1096662
Changes:
 fteqcc (3343+svn3400-7) unstable; urgency=medium
 .
   * Team upload
   * d/rules: Continue to build using C17 standard with GNU extensions.
     This older codebase is not compatible with gcc-15's default C23 standards
     compliance making true and false into keywords, and switching to C23
     bool risks subtle ABI issues. This package is only minimally maintained
     for the benefit of nexuiz-data, so take the conservative approach of
     returning to gcc-14's default, C17. (Closes: #1096662)
   * d/copyright: Don't quote the FSF's former postal address here
   * d/salsa-ci.yml: Use recommended recipe
   * d/salsa-ci.yml: Disable redundant build jobs.
     There is no Architecture: all in this source package, so the default
     build job is equivalent to requesting only Architecture: any, and
     the Architecture: all job won't do anything.
Checksums-Sha1:
 fabf03412d5e76559eb5033234e7147431dd7749 2202 fteqcc_3343+svn3400-7.dsc
 2b39400b2107e49a512270508fcee38b59f2edf1 8896 fteqcc_3343+svn3400-7.debian.tar.xz
 e5c5b0ea4663fda64b100863b8c0be000955eb4f 432372 fteqcc_3343+svn3400-7.git.tar.xz
 6bf32eb9e5f5ec43c386c00de93d1c8896cb3111 18078 fteqcc_3343+svn3400-7_source.buildinfo
Checksums-Sha256:
 5c06d0cffc1fdd0554c247f7ea0f4083c58a22924b648a2a5a9c86811e312369 2202 fteqcc_3343+svn3400-7.dsc
 3ea5ce33dbcd65eca8c6fa29c42b8bd42ab6e29ff42805b1d6ca2ebf5a4b4efb 8896 fteqcc_3343+svn3400-7.debian.tar.xz
 c7a5a3697520e77c51136fa31c1269d7f035da4aa4f7c582a146702d66500c4e 432372 fteqcc_3343+svn3400-7.git.tar.xz
 bd7a6857034c711b4fddc6a9782192ac838ec78100bf31ff2b674f182c2bd166 18078 fteqcc_3343+svn3400-7_source.buildinfo
Files:
 f394093de269c1b9f5492fdfbd217b8b 2202 devel optional fteqcc_3343+svn3400-7.dsc
 9f0454c0177ead2165cc9b83f0af485e 8896 devel optional fteqcc_3343+svn3400-7.debian.tar.xz
 4afd7d2554359bd1a67806d1f1e5d7ae 432372 devel optional fteqcc_3343+svn3400-7.git.tar.xz
 2b230daa304c60b15727ad10f500bab9 18078 devel optional fteqcc_3343+svn3400-7_source.buildinfo
Git-Tag-Info: tag=516aedd4a825bca70eb5c2c4c2b191988529d13e fp=7a073ad1ae694fa25bff62e5235c099d3eb33076
Git-Tag-Tagger: Simon McVittie <smcv@debian.org>
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEN02M5NuW6cvUwJcqYG0ITkaDwHkFAmi6yyYACgkQYG0ITkaD
wHkwdxAAun8PcbyZ1HJ/s51dTnrzgfvGRGYHp0shQAnxsQepi66q1nXnDyxLzoJS
AuB4MnbS+6JKqfdum3BfWauMKEXRnmn1HEdvkJf2ku/8+dvOKPT0rcWOdT1UiG8J
sSV7XvVgyXMnuUWpxfGVkmEQ15DRwDpNRSsHbebxT6e62vNgXzfCok5zQWNJzPQI
piCEH4xlKIO2dKhlcGDAKH96E0A/KrCNcXTmvkuTnR02RAAazU+ade89CHbrpmSI
sVLrBQYaviZjtyyfD29Y4Bb6Vo9nkRodh3Le2qnwqjbZ2/l/LrBgdGyQVUE8NyMS
kgVkoHBWYzP6gNGZEsShTCWqbAxd8DtLshmOY0FOJy+eU8LpT6uzFPEiKfMABuq0
biZvopMO6jI+oeMkRYOMn6qOciKp6a3gZn9VoxeUdaLRApcAF68QZglJ/S511Wki
pQS/+b8vASKZ9/rJwITsDKPutax9l6QyoUZJA9CsRFQ8QIC733ScKBXFQJfiji8F
jVQk/SJn+i1ti5m3RLXIkCLzaKf6usdEVhjxwtA9HB4bmUDs91kgX3VAAkRW6zHQ
DdWbYqi6oU+fr7mfA9H4z3VI96PLwWrLzPRKmflshg/8y7eY8QQcYOIz2PleSjO6
XxCmopEBF3vJn825FPL6u//rRJRTL5cmrEtfyUx63vQNpKR1s0I=
=xMhd
-----END PGP SIGNATURE-----