#1133664 weakforced: ftbfs with GCC-16

#1133664#5
Date:
2026-04-13 13:12:38 UTC
From:
To:
Hi,

weakforced 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/weakforced_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.

[...]


/usr/include/c++/16/bits/cpp_type_traits.h:279:1: error: redefinition of 'struct std::__is_integer<__int128 unsigned>'
  279 | __INT_N(__int128)
      | ^~~~~~~
/usr/include/c++/16/bits/cpp_type_traits.h:264:1: note: previous definition of 'struct std::__is_integer<__int128 unsigned>'
  264 | __INT_N(__GLIBCXX_TYPE_INT_N_0)
      | ^~~~~~~
In file included from /usr/include/c++/16/string:55:
/usr/include/c++/16/bits/stl_algobase.h:1056:3: error: redefinition of 'constexpr __int128 std::__size_to_integer(__int128)'
 1056 |   __size_to_integer(__int128 __n) { return __n; }
      |   ^~~~~~~~~~~~~~~~~
/usr/include/c++/16/bits/stl_algobase.h:1031:3: note: 'constexpr __int128 std::__size_to_integer(__int128)' previously defined here
 1031 |   __size_to_integer(__GLIBCXX_TYPE_INT_N_0 __n) { return __n; }
      |   ^~~~~~~~~~~~~~~~~
/usr/include/c++/16/bits/stl_algobase.h:1058:3: error: redefinition of 'constexpr __int128 unsigned std::__size_to_integer(__int128 unsigned)'
 1058 |   __size_to_integer(unsigned __int128 __n) { return __n; }
      |   ^~~~~~~~~~~~~~~~~
/usr/include/c++/16/bits/stl_algobase.h:1033:3: note: 'constexpr __int128 unsigned std::__size_to_integer(__int128 unsigned)' previously defined here
 1033 |   __size_to_integer(unsigned __GLIBCXX_TYPE_INT_N_0 __n) { return __n; }
      |   ^~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/16/string_view:56,
                 from /usr/include/c++/16/bits/basic_string.h:51,
                 from /usr/include/c++/16/string:58:
/usr/include/c++/16/bits/functional_hash.h:206:3: error: redefinition of 'struct std::hash<__int128>'
  206 |   _Cxx_hashtable_define_trivial_hash(__int128)
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/16/bits/functional_hash.h:179:3: note: previous definition of 'struct std::hash<__int128>'
  179 |   _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_0)
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/16/bits/functional_hash.h:208:3: error: redefinition of 'struct std::hash<__int128 unsigned>'
  208 |   _Cxx_hashtable_define_trivial_hash(__int128 unsigned)
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/16/bits/functional_hash.h:181:3: note: previous definition of 'struct std::hash<__int128 unsigned>'
  181 |   _Cxx_hashtable_define_trivial_hash(__GLIBCXX_TYPE_INT_N_0 unsigned)
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/16/cstdlib:87,
                 from /usr/include/c++/16/ext/string_conversions.h:45,
                 from /usr/include/c++/16/bits/basic_string.h:4499:
/usr/include/c++/16/bits/std_abs.h:110:3: error: redefinition of 'constexpr __int128 std::abs(__int128)'
  110 |   abs(__int128 __x) { return __x >= 0 ? __x : -__x; }
      |   ^~~
/usr/include/c++/16/bits/std_abs.h:91:3: note: 'constexpr __int128 std::abs(__int128)' previously defined here
   91 |   abs(__GLIBCXX_TYPE_INT_N_0 __x) { return __x >= 0 ? __x : -__x; }
      |   ^~~
In file included from /usr/include/c++/16/bits/specfun.h:45,
                 from /usr/include/c++/16/cmath:3913,
                 from json11.cpp:24:
/usr/include/c++/16/limits:1664:3: error: redefinition of 'struct std::numeric_limits<__int128>'
 1664 |   __INT_N(__int128, 128,
      |   ^~~~~~~
/usr/include/c++/16/limits:1643:3: note: previous definition of 'struct std::numeric_limits<__int128>'
 1643 |   __INT_N(__GLIBCXX_TYPE_INT_N_0, __GLIBCXX_BITSIZE_INT_N_0,
      |   ^~~~~~~
/usr/include/c++/16/limits:1664:3: error: redefinition of 'struct std::numeric_limits<__int128 unsigned>'
 1664 |   __INT_N(__int128, 128,
      |   ^~~~~~~
/usr/include/c++/16/limits:1643:3: note: previous definition of 'struct std::numeric_limits<__int128 unsigned>'
 1643 |   __INT_N(__GLIBCXX_TYPE_INT_N_0, __GLIBCXX_BITSIZE_INT_N_0,
      |   ^~~~~~~
make[5]: *** [Makefile:530: libjson11_la-json11.lo] Error 1
make[5]: Leaving directory '/build/reproducible-path/weakforced-3.0.0/ext/json11'
make[4]: *** [Makefile:470: all-recursive] Error 1
make[4]: Leaving directory '/build/reproducible-path/weakforced-3.0.0/ext'
make[3]: *** [Makefile:525: all-recursive] Error 1
make[3]: Leaving directory '/build/reproducible-path/weakforced-3.0.0'
make[2]: *** [Makefile:457: all] Error 2
make[2]: Leaving directory '/build/reproducible-path/weakforced-3.0.0'
dh_auto_build: error: make -j128 returned exit code 2
make[1]: *** [debian/rules:31: override_dh_auto_build] Error 25
make[1]: Leaving directory '/build/reproducible-path/weakforced-3.0.0'
make: *** [debian/rules:19: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2