#1132062 amoebax: ftbfs with GCC-16

Package:
src:amoebax
Source:
src:amoebax
Submitter:
Emanuele Rocca
Date:
2026-04-21 22:19:01 UTC
Severity:
normal
Tags:
#1132062#5
Date:
2026-03-27 17:18:03 UTC
From:
To:
Hi,

amoebax 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/amoebax_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.

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.

[...]


TwoPlayersState.h:144:18: warning: ‘template<class> class std::auto_ptr’ is deprecated: use 'std::unique_ptr' instead [-Wdeprecated-declarations]
  144 |             std::auto_ptr<Surface> m_Ready;
      |                  ^~~~~~~~
/usr/include/c++/16/bits/unique_ptr.h:58:28: note: declared here
   58 |   template<typename> class auto_ptr;
      |                            ^~~~~~~~
TwoPlayersState.h:148:18: warning: ‘template<class> class std::auto_ptr’ is deprecated: use 'std::unique_ptr' instead [-Wdeprecated-declarations]
  148 |             std::auto_ptr<IPlayer> m_RightPlayer;
      |                  ^~~~~~~~
/usr/include/c++/16/bits/unique_ptr.h:58:28: note: declared here
   58 |   template<typename> class auto_ptr;
      |                            ^~~~~~~~
TwoPlayersState.h:150:18: warning: ‘template<class> class std::auto_ptr’ is deprecated: use 'std::unique_ptr' instead [-Wdeprecated-declarations]
  150 |             std::auto_ptr<Font> m_ScoreFont;
      |                  ^~~~~~~~
/usr/include/c++/16/bits/unique_ptr.h:58:28: note: declared here
   58 |   template<typename> class auto_ptr;
      |                            ^~~~~~~~
TwoPlayersState.h:154:18: warning: ‘template<class> class std::auto_ptr’ is deprecated: use 'std::unique_ptr' instead [-Wdeprecated-declarations]
  154 |             std::auto_ptr<Surface> m_Silhouettes;
      |                  ^~~~~~~~
/usr/include/c++/16/bits/unique_ptr.h:58:28: note: declared here
   58 |   template<typename> class auto_ptr;
      |                            ^~~~~~~~
TwoPlayersState.h:158:18: warning: ‘template<class> class std::auto_ptr’ is deprecated: use 'std::unique_ptr' instead [-Wdeprecated-declarations]
  158 |             std::auto_ptr<Surface> m_YouLose;
      |                  ^~~~~~~~
/usr/include/c++/16/bits/unique_ptr.h:58:28: note: declared here
   58 |   template<typename> class auto_ptr;
      |                            ^~~~~~~~
TwoPlayersState.h:160:18: warning: ‘template<class> class std::auto_ptr’ is deprecated: use 'std::unique_ptr' instead [-Wdeprecated-declarations]
  160 |             std::auto_ptr<Surface> m_YouWin;
      |                  ^~~~~~~~
/usr/include/c++/16/bits/unique_ptr.h:58:28: note: declared here
   58 |   template<typename> class auto_ptr;
      |                            ^~~~~~~~
In file included from TournamentState.cxx:32:
VersusState.h:59:18: warning: ‘template<class> class std::auto_ptr’ is deprecated: use 'std::unique_ptr' instead [-Wdeprecated-declarations]
   59 |             std::auto_ptr<Surface> m_Background;
      |                  ^~~~~~~~
/usr/include/c++/16/bits/unique_ptr.h:58:28: note: declared here
   58 |   template<typename> class auto_ptr;
      |                            ^~~~~~~~
VersusState.h:61:18: warning: ‘template<class> class std::auto_ptr’ is deprecated: use 'std::unique_ptr' instead [-Wdeprecated-declarations]
   61 |             std::auto_ptr<Music> m_BackgroundMusic;
      |                  ^~~~~~~~
/usr/include/c++/16/bits/unique_ptr.h:58:28: note: declared here
   58 |   template<typename> class auto_ptr;
      |                            ^~~~~~~~
TournamentState.cxx: In member function ‘void Amoebax::TournamentState::loadGraphicResources()’:
TournamentState.cxx:436:14: warning: ‘template<class> class std::auto_ptr’ is deprecated: use 'std::unique_ptr' instead [-Wdeprecated-declarations]
  436 |         std::auto_ptr<Surface> grid (
      |              ^~~~~~~~
/usr/include/c++/16/bits/unique_ptr.h:58:28: note: declared here
   58 |   template<typename> class auto_ptr;
      |                            ^~~~~~~~
In file included from main.cxx:29:
System.h:49:31: warning: ‘template<class _Arg, class _Result> struct std::unary_function’ is deprecated [-Wdeprecated-declarations]
   49 |     struct DeleteObject: std::unary_function <T, void>
      |                               ^~~~~~~~~~~~~~
/usr/include/c++/16/bits/stl_function.h:120:12: note: declared here
  120 |     struct unary_function
      |            ^~~~~~~~~~~~~~
make[3]: Leaving directory '/build/reproducible-path/amoebax-0.2.1+dfsg/src'
make[2]: *** [Makefile:255: all-recursive] Error 1
make[2]: Leaving directory '/build/reproducible-path/amoebax-0.2.1+dfsg'
make[1]: *** [Makefile:194: all] Error 2
make[1]: Leaving directory '/build/reproducible-path/amoebax-0.2.1+dfsg'
dh_auto_build: error: make -j128 returned exit code 2
make: *** [debian/rules:5: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess failed with exit status 2

#1132062#10
Date:
2026-03-27 17:58:19 UTC
From:
To:
/usr/include/c++/16/bits/stl_numeric.h: In instantiation of ‘constexpr _Tp std::accumulate(_InputIterator, _InputIterator, _Tp, _BinaryOperation) [with _InputIterator = __gnu_cxx::__normal_iterator<const char*, __cxx11::basic_string<char> >; _Tp = short unsigned int; _BinaryOperation = Amoebax::Font::TextWidth]’:
Font.cxx:71:28:   required from here
    71 |     return std::accumulate (text.begin (), text.end (),
       |            ~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
    72 |                             static_cast<uint16_t>(0), TextWidth (this));
       |                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/16/bits/stl_numeric.h:169:29: error: no match for call to ‘(Amoebax::Font::TextWidth) (std::remove_reference<short unsigned int&>::type, const char&)’
   169 |         __init = __binary_op(_GLIBCXX_MOVE_IF_20(__init), *__first);
       |                  ~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   • there is 1 candidate
     Font.h:67:20:
        67 |             struct TextWidth:
           |                    ^~~~~~~~~
     • candidate 1: ‘uint16_t Amoebax::Font::TextWidth::operator()(uint16_t&, const char&)’ (near match)
       Font.h:98:17:
          98 |                 operator() (uint16_t &widthSoFar, const char ¤tCharacter)
             |                 ^~~~~~~~
       • conversion of argument 1 would be ill-formed:
       • error: cannot bind non-const lvalue reference of type ‘uint16_t&’ {aka ‘short unsigned int&’} to an rvalue of type ‘std::remove_reference<short unsigned int&>::type’ {aka ‘short unsigned int’}

(Someone who is better at C++ than me will have to solve this, sorry)

     smcv

#1132062#15
Date:
2026-04-21 22:16:59 UTC
From:
To:
tags 1132062 + patch
user debian-release@lists.debian.org
usertags 1132062 + bsp-2026-04-br-campinas
thanks

Thanks, Simon. I've proposed a patch to fix the issue with GCC 16 [1].
From what I tested, the build works with both C++17 and C++20.

I'm adding Jordi Fita in CC, since they are referenced as author in the
project webpage [2]. I will see if the e-mail can be successfully
delivered and then annotate the bug as forwarded accordingly if so.

[1] https://salsa.debian.org/games-team/amoebax/-/merge_requests/4
[2] https://www.emma-soft.com/games/amoebax/index.html