Bug 2427953 - dnf5: FTBFS with g++16
Summary: dnf5: FTBFS with g++16
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: dnf5
Version: rawhide
Hardware: Unspecified
OS: Linux
unspecified
medium
Target Milestone: ---
Assignee: Petr Pisar
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks: F44FTBFS 2418384 GCC16-Mass-Prebuild
TreeView+ depends on / blocked
 
Reported: 2026-01-08 15:34 UTC by Mamoru TASAKA
Modified: 2026-01-27 12:16 UTC (History)
6 users (show)

Fixed In Version: dnf5-5.3.0.0-7.fc44
Clone Of:
Environment:
Last Closed: 2026-01-27 12:16:35 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description Mamoru TASAKA 2026-01-08 15:34:06 UTC
We are now trying to rebuild pkgs against ruby4.0, however dnf5-5.3.0.0-4.fc44 FTBFS on rawhide due to g++16 issues (which is not related to ruby4.0 changes):

https://koji.fedoraproject.org/koji/buildinfo?buildID=2890350
x86_64:
https://koji.fedoraproject.org/koji/taskinfo?taskID=140864449

Build errors are happening at least on 2 places:

[ 44%] Building CXX object libdnf5/CMakeFiles/libdnf5_obj.dir/rpm/solv/goal_private.cpp.o
cd /builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/redhat-linux-build/libdnf5 && /usr/bin/g++ -DGETTEXT_DOMAIN=\"libdnf5\" -DLIBDNF_BUILD_LIBRARY -DLIBSOLV_FLAG_FOCUSNEW=1 -DLIBSOLV_SOLVABLE_PREPEND_DEP -DPROJECT_BINARY_DIR=\"/builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/redhat-linux-build\" -DPROJECT_SOURCE_DIR=\"/builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0\" -DPROJECT_VERSION_MAJOR=3 -DPROJECT_VERSION_MICRO=0 -DPROJECT_VERSION_MINOR=0 -DPROJECT_VERSION_PRIME=5 -DWITH_MODULEMD -I/builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/include -I/builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/common -I/builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/libdnf5/. -I/usr/include/json-c -I/usr/include/libxml2 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/sysprof-6 -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -std=gnu++20 -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -fmacro-prefix-map=/builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/= -Wall -Wextra -Werror -Wcast-align -Wformat-nonliteral -Wmissing-format-attribute -Wredundant-decls -Wsign-compare -Wsign-conversion -Wtype-limits -Wuninitialized -Wwrite-strings -Werror=unused-result -Wodr -Wconversion -Wl,--as-needed -MD -MT libdnf5/CMakeFiles/libdnf5_obj.dir/rpm/solv/goal_private.cpp.o -MF CMakeFiles/libdnf5_obj.dir/rpm/solv/goal_private.cpp.o.d -o CMakeFiles/libdnf5_obj.dir/rpm/solv/goal_private.cpp.o -c /builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/libdnf5/rpm/solv/goal_private.cpp
In file included from /builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/libdnf5/module/module_metadata.cpp:22:
/builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/include/libdnf5/base/base.hpp:59:18: error: defining ‘libdnf5::Base’, which previously failed to be complete in a SFINAE context [-Werror=sfinae-incomplete=]
   59 | class LIBDNF_API Base {
      |                  ^~~~
In file included from /builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/include/libdnf5/base/base_weak.hpp:23,
                 from /builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/libdnf5/./module/module_metadata.hpp:23,
                 from /builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/libdnf5/module/module_metadata.cpp:20:
/builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/include/libdnf5/common/weak_ptr.hpp:121:58: note: here.  Use ‘-Wsfinae-incomplete=2’ for a diagnostic at that point
  121 |     template <typename T = TPtr, typename std::enable_if<sizeof(T) && ptr_owner, int>::type = 0>
      |                                                          ^~~~~~~~~



[ 47%] Building CXX object libdnf5/CMakeFiles/libdnf5_obj.dir/transaction/offline.cpp.o
cd /builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/redhat-linux-build/libdnf5 && /usr/bin/g++ -DGETTEXT_DOMAIN=\"libdnf5\" -DLIBDNF_BUILD_LIBRARY -DLIBSOLV_FLAG_FOCUSNEW=1 -DLIBSOLV_SOLVABLE_PREPEND_DEP -DPROJECT_BINARY_DIR=\"/builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/redhat-linux-build\" -DPROJECT_SOURCE_DIR=\"/builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0\" -DPROJECT_VERSION_MAJOR=3 -DPROJECT_VERSION_MICRO=0 -DPROJECT_VERSION_MINOR=0 -DPROJECT_VERSION_PRIME=5 -DWITH_MODULEMD -I/builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/include -I/builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/common -I/builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/libdnf5/. -I/usr/include/json-c -I/usr/include/libxml2 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/sysprof-6 -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-U_FORTIFY_SOURCE,-D_FORTIFY_SOURCE=3 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m64 -march=x86-64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -mtls-dialect=gnu2 -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -std=gnu++20 -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -fmacro-prefix-map=/builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/= -Wall -Wextra -Werror -Wcast-align -Wformat-nonliteral -Wmissing-format-attribute -Wredundant-decls -Wsign-compare -Wsign-conversion -Wtype-limits -Wuninitialized -Wwrite-strings -Werror=unused-result -Wodr -Wconversion -Wl,--as-needed -MD -MT libdnf5/CMakeFiles/libdnf5_obj.dir/transaction/offline.cpp.o -MF CMakeFiles/libdnf5_obj.dir/transaction/offline.cpp.o.d -o CMakeFiles/libdnf5_obj.dir/transaction/offline.cpp.o -c /builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/libdnf5/transaction/offline.cpp
In file included from /usr/include/c++/16/bits/stl_algobase.h:66,
                 from /usr/include/c++/16/bits/specfun.h:44,
                 from /usr/include/c++/16/cmath:3913,
                 from /usr/include/fmt/format.h:44,
                 from /builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/include/libdnf5/utils/format.hpp:23,
                 from /builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/include/libdnf5/common/exception.hpp:25,
                 from /builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/include/libdnf5/conf/config_parser_errors.hpp:23,
                 from /builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/include/libdnf5/conf/config_parser.hpp:23,
                 from /builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/include/libdnf5/conf/config.hpp:23,
                 from /builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/include/libdnf5/conf/config_main.hpp:23,
                 from /builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/libdnf5/conf/config_main.cpp:20:
In member function ‘__gnu_cxx::__normal_iterator<char32_t const*, std::span<char32_t const, 1ul>::__iter_tag>::operator++(int)’,
    inlined from ‘std::__unicode::_Utf_iterator<char32_t, char, __gnu_cxx::__normal_iterator<char32_t const*, std::span<char32_t const, 1ul>::__iter_tag>, __gnu_cxx::__normal_iterator<char32_t const*, std::span<char32_t const, 1ul>::__iter_tag>, std::__unicode::_Repl>::_M_read_utf32()’ at /usr/include/c++/16/bits/unicode.h:440:27,
    inlined from ‘std::__unicode::_Utf_iterator<char32_t, char, __gnu_cxx::__normal_iterator<char32_t const*, std::span<char32_t const, 1ul>::__iter_tag>, __gnu_cxx::__normal_iterator<char32_t const*, std::span<char32_t const, 1ul>::__iter_tag>, std::__unicode::_Repl>::_M_read()’ at /usr/include/c++/16/bits/unicode.h:272:19,
    inlined from ‘_ZNSt9__unicode13_Utf_iteratorIDicN9__gnu_cxx17__normal_iteratorIPKDiNSt4spanIS3_Lm1EE10__iter_tagEEES8_NS_5_ReplEEC4ES8_S8_S8_Q22bidirectional_iteratorIT1_E’ at /usr/include/c++/16/bits/unicode.h:132:11,
    inlined from ‘std::__unicode::_Utf_view<char, std::span<char32_t const, 1ul> >::_M_end<__gnu_cxx::__normal_iterator<char32_t const*, std::span<char32_t const, 1ul>::__iter_tag>, __gnu_cxx::__normal_iterator<char32_t const*, std::span<char32_t const, 1ul>::__iter_tag> >(__gnu_cxx::__normal_iterator<char32_t const*, std::span<char32_t const, 1ul>::__iter_tag>, __gnu_cxx::__normal_iterator<char32_t const*, std::span<char32_t const, 1ul>::__iter_tag>)auto’ at /usr/include/c++/16/bits/unicode.h:724:46,
    inlined from ‘std::__unicode::_Utf_view<char, std::span<char32_t const, 1ul> >::end()’ at /usr/include/c++/16/bits/unicode.h:739:22,
    inlined from ‘std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(std::__format::_Sink_iter<char>, std::basic_string_view<char, std::char_traits<char> >, std::__format::_Align, unsigned long, char32_t)std::__format::_Sink_iter<char>’ at /usr/include/c++/16/format:860:27:
/usr/include/c++/16/bits/stl_iterator.h:1111:16: error: array subscript 2 is outside array bounds of ‘const char32_t[1]’ [-Werror=array-bounds=]
 1111 |       { return __normal_iterator(_M_current++); }
      |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/c++/16/bits/chrono_io.h:40,
                 from /usr/include/c++/16/chrono:3679,
                 from /builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/include/libdnf5/logger/logger.hpp:28,
                 from /builddir/build/BUILD/dnf5-5.3.0.0-build/dnf5-5.3.0.0/include/libdnf5/conf/config.hpp:29:
/usr/include/c++/16/format: In function ‘std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(std::__format::_Sink_iter<char>, std::basic_string_view<char, std::char_traits<char> >, std::__format::_Align, unsigned long, char32_t)std::__format::_Sink_iter<char>’:
/usr/include/c++/16/format:858:28: note: at offset 8 into object ‘__arr’ of size 4
  858 |             const char32_t __arr[1]{ __fill_char };
      |                            ^~~~~
In file included from /usr/include/c++/16/format:62:
In member function ‘std::__unicode::_Utf_iterator<char32_t, char, __gnu_cxx::__normal_iterator<char32_t const*, std::span<char32_t const, 1ul>::__iter_tag>, __gnu_cxx::__normal_iterator<char32_t const*, std::span<char32_t const, 1ul>::__iter_tag>, std::__unicode::_Repl>::_M_read_utf32()’,
    inlined from ‘std::__unicode::_Utf_iterator<char32_t, char, __gnu_cxx::__normal_iterator<char32_t const*, std::span<char32_t const, 1ul>::__iter_tag>, __gnu_cxx::__normal_iterator<char32_t const*, std::span<char32_t const, 1ul>::__iter_tag>, std::__unicode::_Repl>::_M_read()’ at /usr/include/c++/16/bits/unicode.h:272:19,
    inlined from ‘_ZNSt9__unicode13_Utf_iteratorIDicN9__gnu_cxx17__normal_iteratorIPKDiNSt4spanIS3_Lm1EE10__iter_tagEEES8_NS_5_ReplEEC4ES8_S8_S8_Q22bidirectional_iteratorIT1_E’ at /usr/include/c++/16/bits/unicode.h:132:11,
    inlined from ‘std::__unicode::_Utf_view<char, std::span<char32_t const, 1ul> >::_M_end<__gnu_cxx::__normal_iterator<char32_t const*, std::span<char32_t const, 1ul>::__iter_tag>, __gnu_cxx::__normal_iterator<char32_t const*, std::span<char32_t const, 1ul>::__iter_tag> >(__gnu_cxx::__normal_iterator<char32_t const*, std::span<char32_t const, 1ul>::__iter_tag>, __gnu_cxx::__normal_iterator<char32_t const*, std::span<char32_t const, 1ul>::__iter_tag>)auto’ at /usr/include/c++/16/bits/unicode.h:724:46,
    inlined from ‘std::__unicode::_Utf_view<char, std::span<char32_t const, 1ul> >::end()’ at /usr/include/c++/16/bits/unicode.h:739:22,
    inlined from ‘std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(std::__format::_Sink_iter<char>, std::basic_string_view<char, std::char_traits<char> >, std::__format::_Align, unsigned long, char32_t)std::__format::_Sink_iter<char>’ at /usr/include/c++/16/format:860:27:
/usr/include/c++/16/bits/unicode.h:440:18: error: array subscript 1 is outside array bounds of ‘const char32_t[1]’ [-Werror=array-bounds=]
  440 |         char32_t __c = *_M_curr()++;
      |                  ^~~
/usr/include/c++/16/format: In function ‘std::__format::__write_padded<std::__format::_Sink_iter<char>, char>(std::__format::_Sink_iter<char>, std::basic_string_view<char, std::char_traits<char> >, std::__format::_Align, unsigned long, char32_t)std::__format::_Sink_iter<char>’:
/usr/include/c++/16/format:858:28: note: at offset 4 into object ‘__arr’ of size 4
  858 |             const char32_t __arr[1]{ __fill_char };
      |                            ^~~~~


Reproducible: Always

Comment 1 amatej 2026-01-19 13:11:58 UTC
Should be resolved by https://github.com/rpm-software-management/dnf5/pull/2564

Comment 2 Petr Pisar 2026-01-20 11:59:21 UTC
Thanks for the upstream fix. I will apply it to Fedora 44.

Comment 3 Petr Pisar 2026-01-20 13:37:12 UTC
CI failed on:

* fedora-ci.koji-build.rpminspect.static-analysis: ABI diff claim thats 11 symbols were removed from libdn5.so (all about std::format). I waived it because those are internal to libdnf5 and their presence actually cause a link failure with GCC 16 (subject of "Replace all `std::format` with `fmt::format`" commit 21722d9abad6488a5a34ff579c22d83014bca54f.)

* fedora-ci.koji-build.installability.functional: This looks like CI misconfiguration <https://pagure.io/fedora-ci/general/issue/538>.

Comment 4 Petr Pisar 2026-01-27 12:16:35 UTC
(In reply to Petr Pisar from comment #3)
> * fedora-ci.koji-build.installability.functional: This looks like CI
> misconfiguration <https://pagure.io/fedora-ci/general/issue/538>.

DNF team concluded that it works as designed and that CI needs to accommodate. Also waived.


Note You need to log in before you can comment on or make changes to this bug.