- Package:
- src:amoebax
- Source:
- src:amoebax
- Submitter:
- Emanuele Rocca
- Date:
- 2026-04-21 22:19:01 UTC
- Severity:
- normal
- Tags:
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
/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
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