#1097305 litecoin: ftbfs with GCC-15

#1097305#5
Date:
2025-02-17 17:34:56 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/litecoin_0.21.4-1_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

[...]
                 from /usr/include/boost/system/detail/error_category_impl.hpp:101,
                 from /usr/include/boost/system/error_category.hpp:11,
                 from /usr/include/boost/filesystem/detail/path_traits.hpp:25,
                 from /usr/include/boost/filesystem/path.hpp:21,
                 from /usr/include/boost/filesystem.hpp:16,
                 from ./fs.h:14,
                 from ./addrdb.h:9,
                 from addrdb.cpp:6:
/usr/include/c++/15/bits/unique_lock.h:156:7: note: declared here
  156 |       try_lock()
      |       ^~~~~~~~
In file included from ./addrman.h:14,
                 from addrman.cpp:6:
./sync.h: In instantiation of ‘bool UniqueLock<Mutex, Base>::TryEnter(const char*, const char*, int) [with Mutex = AnnotatedMixin<std::recursive_mutex>; Base = std::unique_lock<std::recursive_mutex>]’:
./sync.h:162:13:   required from ‘UniqueLock<Mutex, Base>::UniqueLock(Mutex&, const char*, const char*, int, bool) [with Mutex = AnnotatedMixin<std::recursive_mutex>; Base = std::unique_lock<std::recursive_mutex>]’
  162 |             TryEnter(pszName, pszFile, nLine);
      |             ^~~~~~~~
./util/system.h:333:9:   required from here
  230 | #define LOCK(cs) DebugLock<decltype(cs)> PASTE2(criticalblock, __COUNTER__)(cs, #cs, __FILE__, __LINE__)
      |                                                                                                        ^
./sync.h:152:23: warning: ignoring return value of ‘bool std::unique_lock<_Mutex>::try_lock() [with _Mutex = std::recursive_mutex]’, declared with attribute ‘nodiscard’ [-Wunused-result]
  152 |         Base::try_lock();
      |         ~~~~~~~~~~~~~~^~
In file included from /usr/include/c++/15/mutex:50,
                 from ./threadsafety.h:9,
                 from ./sync.h:9:
/usr/include/c++/15/bits/unique_lock.h:156:7: note: declared here
  156 |       try_lock()
      |       ^~~~~~~~
make[4]: *** [Makefile:16299: litecoind-bitcoind.o] Error 1
make[4]: *** Waiting for unfinished jobs....
In file included from ./txmempool.h:23,
                 from blockencodings.cpp:13:
./sync.h: In instantiation of ‘bool UniqueLock<Mutex, Base>::TryEnter(const char*, const char*, int) [with Mutex = AnnotatedMixin<std::recursive_mutex>; Base = std::unique_lock<std::recursive_mutex>]’:
./sync.h:162:13:   required from ‘UniqueLock<Mutex, Base>::UniqueLock(Mutex&, const char*, const char*, int, bool) [with Mutex = AnnotatedMixin<std::recursive_mutex>; Base = std::unique_lock<std::recursive_mutex>]’
  162 |             TryEnter(pszName, pszFile, nLine);
      |             ^~~~~~~~
./txmempool.h:645:52:   required from here
  230 | #define LOCK(cs) DebugLock<decltype(cs)> PASTE2(criticalblock, __COUNTER__)(cs, #cs, __FILE__, __LINE__)
      |                                                                                                        ^
./sync.h:152:23: warning: ignoring return value of ‘bool std::unique_lock<_Mutex>::try_lock() [with _Mutex = std::recursive_mutex]’, declared with attribute ‘nodiscard’ [-Wunused-result]
  152 |         Base::try_lock();
      |         ~~~~~~~~~~~~~~^~
In file included from /usr/include/c++/15/mutex:50,
                 from /usr/include/boost/system/detail/mutex.hpp:68,
                 from /usr/include/boost/system/detail/error_category_impl.hpp:101,
                 from /usr/include/boost/system/error_category.hpp:11,
                 from /usr/include/boost/filesystem/detail/path_traits.hpp:25,
                 from /usr/include/boost/filesystem/path.hpp:21,
                 from /usr/include/boost/filesystem.hpp:16,
                 from ./libmw/include/mw/file/FilePath.h:16,
                 from ./libmw/include/mw/file/File.h:4,
                 from ./libmw/include/mw/file/AppendOnlyFile.h:3,
                 from ./libmw/include/mw/mmr/MMR.h:8,
                 from ./libmw/include/mw/node/CoinsView.h:9,
                 from ./coins.h:13,
                 from ./txmempool.h:17:
/usr/include/c++/15/bits/unique_lock.h:156:7: note: declared here
  156 |       try_lock()
      |       ^~~~~~~~
make[4]: Leaving directory '/build/reproducible-path/litecoin-0.21.4/src'
make[3]: *** [Makefile:20603: all-recursive] Error 1
make[3]: Leaving directory '/build/reproducible-path/litecoin-0.21.4/src'
make[2]: *** [Makefile:820: all-recursive] Error 1
make[2]: Leaving directory '/build/reproducible-path/litecoin-0.21.4'
dh_auto_build: error: make -j8 returned exit code 2
make[1]: *** [debian/rules:33: override_dh_auto_build] Error 25
make[1]: Leaving directory '/build/reproducible-path/litecoin-0.21.4'
make: *** [debian/rules:12: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2