#1097373 mccs: ftbfs with GCC-15

Package:
src:mccs
Source:
src:mccs
Submitter:
Matthias Klose
Date:
2025-09-04 22:09:18 UTC
Severity:
normal
Tags:
#1097373#5
Date:
2025-02-17 17:37:00 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/mccs_1.1-10_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

[...]
   11 | #define _CUDF_TYPES_
g++ -Wall -O6 -Wl,-z,relro -std=gnu++14 -g -DUSELPSOLVE -c -Iobjs -Isources -Ilibsrcs sources/leximax_combiner.c -o objs/leximax_combiner.o
In file included from sources/abstract_criteria.h:14,
                 from sources/abstract_combiner.h:13,
                 from sources/leximax_combiner.h:12,
                 from sources/leximax_combiner.c:11:
sources/cudf_types.h:10: warning: header guard ‘_CUDF_TYPES__’ followed by ‘#define’ of a different macro [-Wheader-guard]
   10 | #ifndef _CUDF_TYPES__
sources/cudf_types.h:11: note: ‘_CUDF_TYPES_’ is defined here; did you mean ‘_CUDF_TYPES__’?
   11 | #define _CUDF_TYPES_
g++ -Wall -O6 -Wl,-z,relro -std=gnu++14 -g -DUSELPSOLVE -c -Iobjs -Isources -Ilibsrcs sources/lexleximin_combiner.c -o objs/lexleximin_combiner.o
In file included from sources/abstract_criteria.h:14,
                 from sources/abstract_combiner.h:13,
                 from sources/lexleximin_combiner.h:12,
                 from sources/lexleximin_combiner.c:11:
sources/cudf_types.h:10: warning: header guard ‘_CUDF_TYPES__’ followed by ‘#define’ of a different macro [-Wheader-guard]
   10 | #ifndef _CUDF_TYPES__
sources/cudf_types.h:11: note: ‘_CUDF_TYPES_’ is defined here; did you mean ‘_CUDF_TYPES__’?
   11 | #define _CUDF_TYPES_
g++ -Wall -O6 -Wl,-z,relro -std=gnu++14 -g -DUSELPSOLVE -c -Iobjs -Isources -Ilibsrcs sources/lexleximax_combiner.c -o objs/lexleximax_combiner.o
In file included from sources/abstract_criteria.h:14,
                 from sources/abstract_combiner.h:13,
                 from sources/lexleximax_combiner.h:12,
                 from sources/lexleximax_combiner.c:11:
sources/cudf_types.h:10: warning: header guard ‘_CUDF_TYPES__’ followed by ‘#define’ of a different macro [-Wheader-guard]
   10 | #ifndef _CUDF_TYPES__
sources/cudf_types.h:11: note: ‘_CUDF_TYPES_’ is defined here; did you mean ‘_CUDF_TYPES__’?
   11 | #define _CUDF_TYPES_
g++ -Wall -O6 -Wl,-z,relro -std=gnu++14 -g -DUSELPSOLVE -c -Iobjs -Isources -Ilibsrcs sources/cudf_reductions.c -o objs/cudf_reductions.o
g++ -Wall -O6 -Wl,-z,relro -std=gnu++14 -g -DUSELPSOLVE -c -Iobjs -Isources -Ilibsrcs -I/usr/include/lpsolve sources/lpsolve_solver.c -o objs/lpsolve_solver.o
In file included from sources/abstract_solver.h:15,
                 from sources/lpsolve_solver.h:13,
                 from sources/lpsolve_solver.c:9:
sources/cudf_types.h:10: warning: header guard ‘_CUDF_TYPES__’ followed by ‘#define’ of a different macro [-Wheader-guard]
   10 | #ifndef _CUDF_TYPES__
sources/cudf_types.h:11: note: ‘_CUDF_TYPES_’ is defined here; did you mean ‘_CUDF_TYPES__’?
   11 | #define _CUDF_TYPES_
sources/lpsolve_solver.c:88:35: warning: invalid suffix on literal; C++11 requires a space between literal and string macro [-Wliteral-suffix]
   88 |         if (verbosity > 0) printf(">>> Objective %d value : "CUDFflags"\n", k, objval);
      |                                   ^
bison -v --name-prefix=cudf --file-prefix=objs/cudf libsrcs/cudf.y
g++ -Wall -O6 -Wl,-z,relro -std=gnu++14 -g -DUSELPSOLVE -c -Iobjs -Isources -Ilibsrcs -fPIC objs/cudf.tab.c -o objs/cudf.tab.o
In file included from /usr/include/c++/15/set:64,
                 from libsrcs/cudf.h:18,
                 from libsrcs/cudf.y:14:
/usr/include/c++/15/bits/stl_tree.h: In instantiation of ‘std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Base_ptr std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_lower_bound(_Base_ptr, _Base_ptr, const _Key&) const [with _Key = CUDFVersionedPackage*; _Val = CUDFVersionedPackage*; _KeyOfValue = std::_Identity<CUDFVersionedPackage*>; _Compare = CUDFPackage_comparator; _Alloc = std::allocator<CUDFVersionedPackage*>; _Base_ptr = std::__rb_tree::_Node_traits<CUDFVersionedPackage*, CUDFVersionedPackage**>::_Node_base*]’:
/usr/include/c++/15/bits/stl_tree.h:3150:20:   required from ‘std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::find(const _Key&) [with _Key = CUDFVersionedPackage*; _Val = CUDFVersionedPackage*; _KeyOfValue = std::_Identity<CUDFVersionedPackage*>; _Compare = CUDFPackage_comparator; _Alloc = std::allocator<CUDFVersionedPackage*>; iterator = std::_Rb_tree<CUDFVersionedPackage*, CUDFVersionedPackage*, std::_Identity<CUDFVersionedPackage*>, CUDFPackage_comparator, std::allocator<CUDFVersionedPackage*> >::iterator]’
 3150 |       iterator __j(_M_lower_bound(_M_begin(), _M_end(), __k));
      |                    ^~~~~~~~~~~~~~
/usr/include/c++/15/bits/stl_set.h:797:25:   required from ‘std::set<_Key, _Compare, _Alloc>::iterator std::set<_Key, _Compare, _Alloc>::find(const key_type&) [with _Key = CUDFVersionedPackage*; _Compare = CUDFPackage_comparator; _Alloc = std::allocator<CUDFVersionedPackage*>; iterator = std::_Rb_tree<CUDFVersionedPackage*, CUDFVersionedPackage*, std::_Identity<CUDFVersionedPackage*>, CUDFPackage_comparator, std::allocator<CUDFVersionedPackage*> >::const_iterator; key_type = CUDFVersionedPackage*]’
  797 |       { return _M_t.find(__x); }
      |                ~~~~~~~~~^~~~~
libsrcs/cudf.y:117:36:   required from here
  117 |     if (vpackage->all_versions.find(current_package) == vpackage->all_versions.end())
      |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/usr/include/c++/15/bits/stl_tree.h:2604:36: error: no match for call to ‘(const CUDFPackage_comparator) (CUDFVersionedPackage* const&, CUDFVersionedPackage* const&)’
 2604 |         if (!_M_impl._M_key_compare(_S_key(__x), __k))
      |              ~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
libsrcs/cudf.h:106:7: note: there is 1 candidate
  106 | class CUDFPackage_comparator {
      |       ^~~~~~~~~~~~~~~~~~~~~~
libsrcs/cudf.h:108:8: note: candidate 1: ‘bool CUDFPackage_comparator::operator()(CUDFVersionedPackage*, CUDFVersionedPackage*)’ (near match)
  108 |   bool operator()(CUDFVersionedPackage *p1, CUDFVersionedPackage *p2) {
      |        ^~~~~~~~
libsrcs/cudf.h:108:8: note: passing ‘const CUDFPackage_comparator*’ as ‘this’ argument discards qualifiers
make[1]: *** [makefile:179: objs/cudf.tab.o] Error 1
make[1]: Leaving directory '/build/reproducible-path/mccs-1.1'
dh_auto_build: error: make -j1 "INSTALL=install --strip-program=true" returned exit code 2
make: *** [debian/rules:6: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2