#1133644 tcm: ftbfs with GCC-16

Package:
src:tcm
Source:
src:tcm
Submitter:
Emanuele Rocca
Date:
2026-04-13 13:12:13 UTC
Severity:
normal
Tags:
#1133644#5
Date:
2026-04-13 13:11:41 UTC
From:
To:
Hi,

tcm fails to build in a test rebuild on at least amd64 and arm64 with
gcc-16/g++-16, but builds properly with gcc-15/g++-15. The severity of this
report will be raised before the forky release.

The full build log can be found at:
https://people.debian.org/~ema/gcc-16-rebuilds/output-1/tcm_arm64.build.xz

The last lines of the build log are at the end of this report.

To build with GCC 16, either set CC=gcc-16 CXX=g++-16 explicitly,
or install the gcc, g++, gfortran, ... packages from experimental.

  apt-get -t=experimental install g++

Common build failures include unused (but set) variables, array subscripts
partly outside array bounds, and new/dropped symbols in Debian symbols files.
For other C/C++ related build failures see the porting guide at
http://gcc.gnu.org/gcc-16/porting_to.html

Please only close this issue after double-checking that the package can be
built correctly with GCC 16.

Please do not reassign this bug to another package. If a fix in another package
is required, then file a bug for the other package (or clone), and mark this
bug as blocked by the bug in the other package.

[...]


      • template argument deduction/substitution failed:
        •   cannot convert ‘s.string::str’ (type ‘char*’) to type ‘signed char&’
          lstring.c:662:16:
            662 |         i >> s.str;
                |              ~~^~~
    • candidate 24: ‘template<class _CharT, class _Traits, long unsigned int _Num> std::basic_istream<_CharT, _Traits>& std::operator>>(basic_istream<_CharT, _Traits>&, _CharT (&)[_Num])’
      /usr/include/c++/16/istream:965:5:
        965 |     operator>>(basic_istream<_CharT, _Traits>& __in, _CharT (&__s)[_Num])
            |     ^~~~~~~~
      • template argument deduction/substitution failed:
        •   mismatched types ‘_CharT [_Num]’ and ‘char*’
          lstring.c:662:16:
            662 |         i >> s.str;
                |                ^~~
    • candidate 25: ‘template<class _Traits, long unsigned int _Num> std::basic_istream<char, _Traits>& std::operator>>(basic_istream<char, _Traits>&, unsigned char (&)[_Num])’
      /usr/include/c++/16/istream:974:5:
        974 |     operator>>(basic_istream<char, _Traits>& __in, unsigned char (&__s)[_Num])
            |     ^~~~~~~~
      • template argument deduction/substitution failed:
        •   mismatched types ‘unsigned char [_Num]’ and ‘char*’
          lstring.c:662:16:
            662 |         i >> s.str;
                |                ^~~
    • candidate 26: ‘template<class _Traits, long unsigned int _Num> std::basic_istream<char, _Traits>& std::operator>>(basic_istream<char, _Traits>&, signed char (&)[_Num])’
      /usr/include/c++/16/istream:979:5:
        979 |     operator>>(basic_istream<char, _Traits>& __in, signed char (&__s)[_Num])
            |     ^~~~~~~~
      • template argument deduction/substitution failed:
        •   mismatched types ‘signed char [_Num]’ and ‘char*’
          lstring.c:662:16:
            662 |         i >> s.str;
                |                ^~~
    • candidate 27: ‘template<class _Istream, class _Tp> _Istream&& std::operator>>(_Istream&&, _Tp&&)’
      /usr/include/c++/16/istream:1112:5:
       1112 |     operator>>(_Istream&& __is, _Tp&& __x)
            |     ^~~~~~~~
      • template argument deduction/substitution failed:
        • /usr/include/c++/16/istream: In substitution of ‘template<class _Istream, class _Tp> _Istream&& std::operator>>(_Istream&&, _Tp&&) [with _Istream = std::basic_istream<char>&; _Tp = char*&]’:
        • required from here
          lstring.c:662:9:
            662 |         i >> s.str;
                |                ^~~
        • error: template constraint failure for ‘template<class _Is, class _Tp>  requires (__derived_from_ios_base<_Is>) && requires(_Is& __is, _Tp&& __t) {__is >> (forward<_Tp>)(__t);} using std::__rvalue_stream_extraction_t = _Is&&’
          /usr/include/c++/16/istream:1112:5:
           1112 |     operator>>(_Istream&& __is, _Tp&& __x)
                |     ^~~~~~~~
        • constraints not satisfied
          • /usr/include/c++/16/bits/ostream.h: In substitution of ‘template<class _Is, class _Tp>  requires (__derived_from_ios_base<_Is>) && requires(_Is& __is, _Tp&& __t) {__is >> (forward<_Tp>)(__t);} using std::__rvalue_stream_extraction_t = _Is&& [with _Is = std::basic_istream<char>&; _Tp = char*&]’:
          • required by substitution of ‘template<class _Istream, class _Tp> _Istream&& std::operator>>(_Istream&&, _Tp&&) [with _Istream = std::basic_istream<char>&; _Tp = char*&]’
            /usr/include/c++/16/istream:1112:5:
          • required from here
            lstring.c:662:9:
              662 |         i >> s.str;
                  |                ^~~
          • required for the satisfaction of ‘__derived_from_ios_base<_Is>’ [with _Is = std::basic_istream<char, std::char_traits<char> >&]
            /usr/include/c++/16/bits/ostream.h:803:13:
              803 |     concept __derived_from_ios_base = is_class_v<_Tp>
                  |             ^~~~~~~~~~~~~~~~~~~~~~~
          • the expression ‘is_class_v<_Tp> [with _Tp = std::basic_istream<char, std::char_traits<char> >&]’ evaluated to ‘false’
            /usr/include/c++/16/bits/ostream.h:803:39:
              803 |     concept __derived_from_ios_base = is_class_v<_Tp>
                  |                                       ^~~~~~~~~~~~~~~
          • ‘std::basic_istream<char>&’ is not a class
make[3]: *** [/build/reproducible-path/tcm-2.20+TSQD/src/Config.GEN:62: lstring.o] Error 1
make[3]: Leaving directory '/build/reproducible-path/tcm-2.20+TSQD/src/gl'
make[2]: *** [Makefile.GEN:57: libglobal.a] Error 2
make[2]: Leaving directory '/build/reproducible-path/tcm-2.20+TSQD/src'
make[1]: *** [Makefile:115: execs] Error 2
make[1]: Leaving directory '/build/reproducible-path/tcm-2.20+TSQD'
make: *** [debian/rules:29: build-stamp] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2