Bug#1096775: graphite2: ftbfs with GCC-15
Package: src:graphite2
Version: 1.3.14-2
Severity: important
Tags: sid forky
User: debian-gcc@lists.debian.org
Usertags: ftbfs-gcc-15
[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/graphite2_1.3.14-2_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
[...]
110 | table = {_ttf.data() + tbl_offset, tbl_len};
| ^
/build/reproducible-path/graphite2-1.3.14/tests/featuremap/featuremaptest.cpp:110:53: note: there are 4 candidates
In file included from /usr/include/c++/15/bits/stl_algobase.h:64,
from /usr/include/c++/15/string:53,
from /usr/include/c++/15/bits/locale_classes.h:42,
from /usr/include/c++/15/bits/ios_base.h:43,
from /usr/include/c++/15/ios:46,
from /usr/include/c++/15/istream:42,
from /usr/include/c++/15/fstream:42,
from /build/reproducible-path/graphite2-1.3.14/tests/featuremap/featuremaptest.cpp:24:
/usr/include/c++/15/bits/stl_pair.h:948:9: note: candidate 1: ‘template<class _U1, class _U2> typename std::enable_if<std::__and_<std::is_assignable<_T1&, const _U1&>, std::is_assignable<_T2&, const _U2&> >::value, std::pair<_T1, _T2>&>::type std::pair<_T1, _T2>::operator=(const std::pair<_U1, _U2>&) [with _U2 = _U1; _T1 = const void*; _T2 = long unsigned int]’
948 | operator=(const pair<_U1, _U2>& __p)
| ^~~~~~~~
/usr/include/c++/15/bits/stl_pair.h:948:9: note: template argument deduction/substitution failed:
/build/reproducible-path/graphite2-1.3.14/tests/featuremap/featuremaptest.cpp:110:53: note: couldn’t deduce template parameter ‘_U1’
110 | table = {_ttf.data() + tbl_offset, tbl_len};
| ^
/usr/include/c++/15/bits/stl_pair.h:959:9: note: candidate 2: ‘template<class _U1, class _U2> typename std::enable_if<std::__and_<std::is_assignable<_T1&, _U1&&>, std::is_assignable<_T2&, _U2&&> >::value, std::pair<_T1, _T2>&>::type std::pair<_T1, _T2>::operator=(std::pair<_U1, _U2>&&) [with _U2 = _U1; _T1 = const void*; _T2 = long unsigned int]’
959 | operator=(pair<_U1, _U2>&& __p)
| ^~~~~~~~
/usr/include/c++/15/bits/stl_pair.h:959:9: note: template argument deduction/substitution failed:
/build/reproducible-path/graphite2-1.3.14/tests/featuremap/featuremaptest.cpp:110:53: note: couldn’t deduce template parameter ‘_U1’
110 | table = {_ttf.data() + tbl_offset, tbl_len};
| ^
/usr/include/c++/15/bits/stl_pair.h:923:7: note: candidate 3: ‘std::pair<_T1, _T2>& std::pair<_T1, _T2>::operator=(std::__conditional_t<((bool)std::__and_<std::is_copy_assignable<_T1>, std::is_copy_assignable<_T2> >::value), const std::pair<_T1, _T2>&, const std::__nonesuch&>) [with _T1 = const void*; _T2 = long unsigned int; std::__conditional_t<((bool)std::__and_<std::is_copy_assignable<_T1>, std::is_copy_assignable<_T2> >::value), const std::pair<_T1, _T2>&, const std::__nonesuch&> = const std::pair<const void*, long unsigned int>&]’
923 | operator=(__conditional_t<__and_<is_copy_assignable<_T1>,
| ^~~~~~~~
/usr/include/c++/15/bits/stl_pair.h:925:65: note: no known conversion for argument 1 from ‘<brace-enclosed initializer list>’ to ‘std::__conditional_t<true, const std::pair<const void*, long unsigned int>&, const std::__nonesuch&>’ {aka ‘const std::pair<const void*, long unsigned int>&’}
923 | operator=(__conditional_t<__and_<is_copy_assignable<_T1>,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
924 | is_copy_assignable<_T2>>::value,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
925 | const pair&, const __nonesuch&> __p)
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~
/usr/include/c++/15/bits/stl_pair.h:933:7: note: candidate 4: ‘std::pair<_T1, _T2>& std::pair<_T1, _T2>::operator=(std::__conditional_t<((bool)std::__and_<std::is_move_assignable<_Tp>, std::is_move_assignable<_T2> >::value), std::pair<_T1, _T2>&&, std::__nonesuch&&>) [with _T1 = const void*; _T2 = long unsigned int; std::__conditional_t<((bool)std::__and_<std::is_move_assignable<_Tp>, std::is_move_assignable<_T2> >::value), std::pair<_T1, _T2>&&, std::__nonesuch&&> = std::pair<const void*, long unsigned int>&&]’
933 | operator=(__conditional_t<__and_<is_move_assignable<_T1>,
| ^~~~~~~~
/usr/include/c++/15/bits/stl_pair.h:935:55: note: no known conversion for argument 1 from ‘<brace-enclosed initializer list>’ to ‘std::__conditional_t<true, std::pair<const void*, long unsigned int>&&, std::__nonesuch&&>’ {aka ‘std::pair<const void*, long unsigned int>&&’}
933 | operator=(__conditional_t<__and_<is_move_assignable<_T1>,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
934 | is_move_assignable<_T2>>::value,
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
935 | pair&&, __nonesuch&&> __p)
| ~~~~~~~~~~~~~~~~~~~~~~^~~
/build/reproducible-path/graphite2-1.3.14/tests/featuremap/featuremaptest.cpp: In function ‘void testFeatTable(const T&, const std::string&)’:
/build/reproducible-path/graphite2-1.3.14/tests/featuremap/featuremaptest.cpp:310:14: error: ‘uint16_t’ was not declared in this scope [-Wtemplate-body]
310 | for (uint16_t j = 0; j < table.m_defs[i].m_numFeatSettings; j++)
| ^~~~~~~~
/build/reproducible-path/graphite2-1.3.14/tests/featuremap/featuremaptest.cpp:310:14: note: ‘uint16_t’ is defined in header ‘<cstdint>’; this is probably fixable by adding ‘#include <cstdint>’
/build/reproducible-path/graphite2-1.3.14/tests/featuremap/featuremaptest.cpp:310:30: error: ‘j’ was not declared in this scope [-Wtemplate-body]
310 | for (uint16_t j = 0; j < table.m_defs[i].m_numFeatSettings; j++)
| ^
make[3]: *** [tests/featuremap/CMakeFiles/featuremaptest.dir/build.make:82: tests/featuremap/CMakeFiles/featuremaptest.dir/featuremaptest.cpp.o] Error 1
make[3]: Leaving directory '/build/reproducible-path/graphite2-1.3.14/build'
make[2]: *** [CMakeFiles/Makefile2:741: tests/featuremap/CMakeFiles/featuremaptest.dir/all] Error 2
make[2]: *** Waiting for unfinished jobs....
[ 94%] Linking CXX static library libvm-test-common.a
cd /build/reproducible-path/graphite2-1.3.14/build/tests/vm && /usr/bin/cmake -P CMakeFiles/vm-test-common.dir/cmake_clean_target.cmake
cd /build/reproducible-path/graphite2-1.3.14/build/tests/vm && /usr/bin/cmake -E cmake_link_script CMakeFiles/vm-test-common.dir/link.txt --verbose=1
/usr/bin/ar qc libvm-test-common.a "CMakeFiles/vm-test-common.dir/basic_test.cpp.o"
/usr/bin/ranlib libvm-test-common.a
make[3]: Leaving directory '/build/reproducible-path/graphite2-1.3.14/build'
[ 94%] Built target vm-test-common
make[2]: Leaving directory '/build/reproducible-path/graphite2-1.3.14/build'
make[1]: *** [Makefile:149: all] Error 2
make[1]: Leaving directory '/build/reproducible-path/graphite2-1.3.14/build'
dh_auto_build: error: cd build && make -j8 "INSTALL=install --strip-program=true" VERBOSE=1 returned exit code 2
make: *** [debian/rules:7: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
Reply to: