#1097635 polymake: ftbfs with GCC-15

Package:
src:polymake
Source:
src:polymake
Submitter:
Matthias Klose
Date:
2025-09-05 09:35:01 UTC
Severity:
normal
Tags:
#1097635#5
Date:
2025-02-17 17:45:25 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/polymake_4.12-3_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

[...]
  296 | }
      | ^
/build/reproducible-path/polymake-4.12/include/core/polymake/internal/comparators.h: At global scope:
/build/reproducible-path/polymake-4.12/include/core/polymake/internal/comparators.h:299:40: error: ‘uint32_t’ was not declared in this scope
  299 | std::enable_if_t<sizeof(SizeT)==sizeof(uint32_t)> hash_combine(SizeT& h, SizeT k)
      |                                        ^~~~~~~~
/build/reproducible-path/polymake-4.12/include/core/polymake/internal/comparators.h:299:40: note: ‘uint32_t’ is defined in header ‘<cstdint>’; this is probably fixable by adding ‘#include <cstdint>’
/build/reproducible-path/polymake-4.12/include/core/polymake/internal/comparators.h:299:49: error: template argument 1 is invalid
  299 | std::enable_if_t<sizeof(SizeT)==sizeof(uint32_t)> hash_combine(SizeT& h, SizeT k)
      |                                                 ^
/build/reproducible-path/polymake-4.12/include/core/polymake/internal/comparators.h:299:51: error: redefinition of ‘template<class SizeT> int pm::hash_combine(SizeT&, SizeT)’
  299 | std::enable_if_t<sizeof(SizeT)==sizeof(uint32_t)> hash_combine(SizeT& h, SizeT k)
      |                                                   ^~~~~~~~~~~~
/build/reproducible-path/polymake-4.12/include/core/polymake/internal/comparators.h:285:51: note: ‘template<class SizeT> int pm::hash_combine(SizeT&, SizeT)’ previously declared here
  285 | std::enable_if_t<sizeof(SizeT)==sizeof(uint64_t)> hash_combine(SizeT& h, SizeT k)
      |                                                   ^~~~~~~~~~~~
[34/1569]   g++ -c -o /build/reproducible-path/polymake-4.12/build/Opt/staticlib/sympol/symmetrycomputation.o -MMD -MT /build/reproducible-path/polymake-4.12/build/Opt/staticlib/sympol/symmetrycomputation.o -MF /build/reproducible-path/polymake-4.12/build/Opt/staticlib/sympol/symmetrycomputation.o.d -fPIC -pipe -g -O2 -ffile-prefix-map=/build/reproducible-path/polymake-4.12=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -std=c++14 -ftemplate-depth-200 -fno-strict-aliasing -fopenmp -Wshadow -Wlogical-op -Wconversion -Wzero-as-null-pointer-constant -Wno-parentheses -Wno-error=unused-function -Wno-stringop-overflow -Wno-array-bounds -Wno-maybe-uninitialized -Wno-free-nonheap-object -DPOLYMAKE_WITH_FLINT  -DPOLYMAKE_DEBUG=0 -DNDEBUG -O2 -Wno-deprecated-declarations -Wno-shadow -Wno-conversion -Wno-zero-as-null-pointer-constant -I/build/reproducible-path/polymake-4.12/include/external/permlib  -Wno-unused-result -Wno-stringop-overflow  /build/reproducible-path/polymake-4.12/bundled/sympol/external/sympol/sympol/symmetrycomputation.cpp && : 'COMPILER_USED=15.0.1'
[35/1569]   g++ -c -o /build/reproducible-path/polymake-4.12/build/Opt/staticlib/sympol/facesuptosymmetrylist.o -MMD -MT /build/reproducible-path/polymake-4.12/build/Opt/staticlib/sympol/facesuptosymmetrylist.o -MF /build/reproducible-path/polymake-4.12/build/Opt/staticlib/sympol/facesuptosymmetrylist.o.d -fPIC -pipe -g -O2 -ffile-prefix-map=/build/reproducible-path/polymake-4.12=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -std=c++14 -ftemplate-depth-200 -fno-strict-aliasing -fopenmp -Wshadow -Wlogical-op -Wconversion -Wzero-as-null-pointer-constant -Wno-parentheses -Wno-error=unused-function -Wno-stringop-overflow -Wno-array-bounds -Wno-maybe-uninitialized -Wno-free-nonheap-object -DPOLYMAKE_WITH_FLINT  -DPOLYMAKE_DEBUG=0 -DNDEBUG -O2 -Wno-deprecated-declarations -Wno-shadow -Wno-conversion -Wno-zero-as-null-pointer-constant -I/build/reproducible-path/polymake-4.12/include/external/permlib  -Wno-unused-result -Wno-stringop-overflow  /build/reproducible-path/polymake-4.12/bundled/sympol/external/sympol/sympol/facesuptosymmetrylist.cpp && : 'COMPILER_USED=15.0.1'
[36/1569]   g++ -c -o /build/reproducible-path/polymake-4.12/build/Opt/apps/common/cpperl/ApproximateSet.o -MMD -MT /build/reproducible-path/polymake-4.12/build/Opt/apps/common/cpperl/ApproximateSet.o -MF /build/reproducible-path/polymake-4.12/build/Opt/apps/common/cpperl/ApproximateSet.o.d -fPIC -pipe -g -O2 -ffile-prefix-map=/build/reproducible-path/polymake-4.12=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -std=c++14 -ftemplate-depth-200 -fno-strict-aliasing -fopenmp -Wshadow -Wlogical-op -Wconversion -Wzero-as-null-pointer-constant -Wno-parentheses -Wno-error=unused-function -Wno-stringop-overflow -Wno-array-bounds -Wno-maybe-uninitialized -Wno-free-nonheap-object -DPOLYMAKE_WITH_FLINT  -DPOLYMAKE_DEBUG=0 -DNDEBUG -O2 -DPOLYMAKE_APPNAME=common -I/build/reproducible-path/polymake-4.12/include/app-wrappers -I/build/reproducible-path/polymake-4.12/include/apps -I/build/reproducible-path/polymake-4.12/include/external/permlib -I/build/reproducible-path/polymake-4.12/include/external/TOSimplex -I/build/reproducible-path/polymake-4.12/include/external/Miniball -I/build/reproducible-path/polymake-4.12/include/core-wrappers -I/build/reproducible-path/polymake-4.12/include/core /build/reproducible-path/polymake-4.12/apps/common/cpperl/generated/ApproximateSet.cc && : 'COMPILER_USED=15.0.1'
FAILED: /build/reproducible-path/polymake-4.12/build/Opt/apps/common/cpperl/ApproximateSet.o
  g++ -c -o /build/reproducible-path/polymake-4.12/build/Opt/apps/common/cpperl/ApproximateSet.o -MMD -MT /build/reproducible-path/polymake-4.12/build/Opt/apps/common/cpperl/ApproximateSet.o -MF /build/reproducible-path/polymake-4.12/build/Opt/apps/common/cpperl/ApproximateSet.o.d -fPIC -pipe -g -O2 -ffile-prefix-map=/build/reproducible-path/polymake-4.12=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -std=c++14 -ftemplate-depth-200 -fno-strict-aliasing -fopenmp -Wshadow -Wlogical-op -Wconversion -Wzero-as-null-pointer-constant -Wno-parentheses -Wno-error=unused-function -Wno-stringop-overflow -Wno-array-bounds -Wno-maybe-uninitialized -Wno-free-nonheap-object -DPOLYMAKE_WITH_FLINT  -DPOLYMAKE_DEBUG=0 -DNDEBUG -O2 -DPOLYMAKE_APPNAME=common -I/build/reproducible-path/polymake-4.12/include/app-wrappers -I/build/reproducible-path/polymake-4.12/include/apps -I/build/reproducible-path/polymake-4.12/include/external/permlib -I/build/reproducible-path/polymake-4.12/include/external/TOSimplex -I/build/reproducible-path/polymake-4.12/include/external/Miniball -I/build/reproducible-path/polymake-4.12/include/core-wrappers -I/build/reproducible-path/polymake-4.12/include/core /build/reproducible-path/polymake-4.12/apps/common/cpperl/generated/ApproximateSet.cc && : 'COMPILER_USED=15.0.1'
In file included from /build/reproducible-path/polymake-4.12/include/core/polymake/internal/AVL.h:25,
                 from /build/reproducible-path/polymake-4.12/include/core/polymake/Set.h:25,
                 from /build/reproducible-path/polymake-4.12/include/core-wrappers/polymake/Set.h:21,
                 from /build/reproducible-path/polymake-4.12/include/core/polymake/ApproximateSet.h:26,
                 from /build/reproducible-path/polymake-4.12/include/core-wrappers/polymake/ApproximateSet.h:21,
                 from /build/reproducible-path/polymake-4.12/apps/common/cpperl/generated/ApproximateSet.cc:6:
/build/reproducible-path/polymake-4.12/include/core/polymake/internal/comparators.h:285:40: error: ‘uint64_t’ was not declared in this scope
  285 | std::enable_if_t<sizeof(SizeT)==sizeof(uint64_t)> hash_combine(SizeT& h, SizeT k)
      |                                        ^~~~~~~~
/build/reproducible-path/polymake-4.12/include/core/polymake/internal/comparators.h:23:1: note: ‘uint64_t’ is defined in header ‘<cstdint>’; this is probably fixable by adding ‘#include <cstdint>’
   22 | #include "polymake/TransformedContainer.h"
  +++ |+#include <cstdint>
   23 |
/build/reproducible-path/polymake-4.12/include/core/polymake/internal/comparators.h:285:49: error: template argument 1 is invalid
  285 | std::enable_if_t<sizeof(SizeT)==sizeof(uint64_t)> hash_combine(SizeT& h, SizeT k)
      |                                                 ^
/build/reproducible-path/polymake-4.12/include/core/polymake/internal/comparators.h: In function ‘int pm::hash_combine(SizeT&, SizeT)’:
/build/reproducible-path/polymake-4.12/include/core/polymake/internal/comparators.h:287:10: error: ‘uint64_t’ does not name a type [-Wtemplate-body]
  287 |    const uint64_t m = 0xc6a4a7935bd1e995ul;
      |          ^~~~~~~~
/build/reproducible-path/polymake-4.12/include/core/polymake/internal/comparators.h:287:10: note: ‘uint64_t’ is defined in header ‘<cstdint>’; this is probably fixable by adding ‘#include <cstdint>’
/build/reproducible-path/polymake-4.12/include/core/polymake/internal/comparators.h:290:9: error: ‘m’ was not declared in this scope [-Wtemplate-body]
  290 |    k *= m;
      |         ^
/build/reproducible-path/polymake-4.12/include/core/polymake/internal/comparators.h:296:1: warning: no return statement in function returning non-void [-Wreturn-type]
  296 | }
      | ^
/build/reproducible-path/polymake-4.12/include/core/polymake/internal/comparators.h: At global scope:
/build/reproducible-path/polymake-4.12/include/core/polymake/internal/comparators.h:299:40: error: ‘uint32_t’ was not declared in this scope
  299 | std::enable_if_t<sizeof(SizeT)==sizeof(uint32_t)> hash_combine(SizeT& h, SizeT k)
      |                                        ^~~~~~~~
/build/reproducible-path/polymake-4.12/include/core/polymake/internal/comparators.h:299:40: note: ‘uint32_t’ is defined in header ‘<cstdint>’; this is probably fixable by adding ‘#include <cstdint>’
/build/reproducible-path/polymake-4.12/include/core/polymake/internal/comparators.h:299:49: error: template argument 1 is invalid
  299 | std::enable_if_t<sizeof(SizeT)==sizeof(uint32_t)> hash_combine(SizeT& h, SizeT k)
      |                                                 ^
/build/reproducible-path/polymake-4.12/include/core/polymake/internal/comparators.h:299:51: error: redefinition of ‘template<class SizeT> int pm::hash_combine(SizeT&, SizeT)’
  299 | std::enable_if_t<sizeof(SizeT)==sizeof(uint32_t)> hash_combine(SizeT& h, SizeT k)
      |                                                   ^~~~~~~~~~~~
/build/reproducible-path/polymake-4.12/include/core/polymake/internal/comparators.h:285:51: note: ‘template<class SizeT> int pm::hash_combine(SizeT&, SizeT)’ previously declared here
  285 | std::enable_if_t<sizeof(SizeT)==sizeof(uint64_t)> hash_combine(SizeT& h, SizeT k)
      |                                                   ^~~~~~~~~~~~
[37/1569]   g++ -c -o /build/reproducible-path/polymake-4.12/build/Opt/staticlib/sympol/symmetrygroupconstruction/graphconstructiondefault.o -MMD -MT /build/reproducible-path/polymake-4.12/build/Opt/staticlib/sympol/symmetrygroupconstruction/graphconstructiondefault.o -MF /build/reproducible-path/polymake-4.12/build/Opt/staticlib/sympol/symmetrygroupconstruction/graphconstructiondefault.o.d -fPIC -pipe -g -O2 -ffile-prefix-map=/build/reproducible-path/polymake-4.12=. -fstack-protector-strong -fstack-clash-protection -Wformat -Werror=format-security -fcf-protection -Wdate-time -D_FORTIFY_SOURCE=2 -std=c++14 -ftemplate-depth-200 -fno-strict-aliasing -fopenmp -Wshadow -Wlogical-op -Wconversion -Wzero-as-null-pointer-constant -Wno-parentheses -Wno-error=unused-function -Wno-stringop-overflow -Wno-array-bounds -Wno-maybe-uninitialized -Wno-free-nonheap-object -DPOLYMAKE_WITH_FLINT  -DPOLYMAKE_DEBUG=0 -DNDEBUG -O2 -Wno-deprecated-declarations -Wno-shadow -Wno-conversion -Wno-zero-as-null-pointer-constant -I/build/reproducible-path/polymake-4.12/include/external/permlib  -Wno-unused-result -Wno-stringop-overflow  /build/reproducible-path/polymake-4.12/bundled/sympol/external/sympol/sympol/symmetrygroupconstruction/graphconstructiondefault.cpp && : 'COMPILER_USED=15.0.1'
ninja: build stopped: subcommand failed.
make[2]: *** [debian/rules:56: override_dh_auto_build] Error 1
make[2]: Leaving directory '/build/reproducible-path/polymake-4.12'
make[1]: *** [debian/rules:35: build] Error 2
make[1]: Leaving directory '/build/reproducible-path/polymake-4.12'
make: *** [debian/rules:35: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2

#1097635#14
Date:
2025-09-05 09:33:58 UTC
From:
To:
Control: tags -1 patch

The fix backported from 4.14 is attached.

cu
Adrian