Bugzilla – Bug 1222493
Ceph package does not build with gcc 14
Last modified: 2024-04-19 04:33:28 UTC
Ceph package in Factory does not build with GCC 14. The errors I can all look like: /home/abuild/rpmbuild/BUILD/ceph-16.2.15-68-gbb20a17289a/src/common/dout.h:186:73: error: call to non-'constexpr' function 'virtual unsigned int DoutPrefixProvider::get_subsys() const' 186 | dout_impl(pdpp->get_cct(), ceph::dout::need_dynamic(pdpp->get_subsys()), v) \ | ~~~~~~~~~~~~~~~~^~ /home/abuild/rpmbuild/BUILD/ceph-16.2.15-68-gbb20a17289a/src/common/dout.h:157:58: note: in definition of macro 'dout_impl' 157 | return (cctX->_conf->subsys.template should_gather<sub, v>()); \ | ^~~ /home/abuild/rpmbuild/BUILD/ceph-16.2.15-68-gbb20a17289a/src/osd/osd_types.h:3628:11: note: in expansion of macro 'ldpp_dout' 3628 | ldpp_dout(dpp, 10) << "build_prior prior osd." << so.osd AFAIU the upstream bug is https://tracker.ceph.com/issues/61598 and it has all details known to me. Currently, the error can be nicely reproduced locally with: oosc build --clean --alternative-project home:rguenther:nextgcc
Downstream PR: https://github.com/SUSE/ceph/pull/516
https://build.opensuse.org/package/show/filesystems:ceph/ceph updated with fix, will wait for https://build.opensuse.org/package/show/devel:gcc:next:testing/ceph to succeed before submitting to Factory, just to be extra sure.
OK, the build of https://build.opensuse.org/package/show/devel:gcc:next:testing/ceph failed, but due to a different error: > [ 1644s] /usr/lib64/gcc/x86_64-suse-linux/14/../../../../x86_64-suse-linux/bin/ld: ../../boost/lib/libboost_regex.a(instances.o): in function `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::imbue(std::locale)': > [ 1644s] instances.cpp:(.text._ZN5boost11basic_regexIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE5imbueESt6locale[_ZN5boost11basic_regexIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE5imbueESt6locale]+0x2d3): undefined reference to `void boost::throw_exception<std::runtime_error>(std::runtime_error const&)' > [ 1644s] /usr/lib64/gcc/x86_64-suse-linux/14/../../../../x86_64-suse-linux/bin/ld: instances.cpp:(.text._ZN5boost11basic_regexIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE5imbueESt6locale[_ZN5boost11basic_regexIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE5imbueESt6locale]+0x2f3): undefined reference to `void boost::throw_exception<std::runtime_error>(std::runtime_error const&)' > [ 1644s] /usr/lib64/gcc/x86_64-suse-linux/14/../../../../x86_64-suse-linux/bin/ld: ../../boost/lib/libboost_regex.a(instances.o): in function `boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::do_assign(char const*, char const*, unsigned int)': > [ 1644s] instances.cpp:(.text._ZN5boost11basic_regexIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE9do_assignEPKcS7_j[_ZN5boost11basic_regexIcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEE9do_assignEPKcS7_j]+0x87f): undefined reference to `void boost::throw_exception<std::runtime_error>(std::runtime_error const&)' > [ 1644s] /usr/lib64/gcc/x86_64-suse-linux/14/../../../../x86_64-suse-linux/bin/ld: ../../boost/lib/libboost_regex.a(regex.o): in function `boost::re_detail_107300::raise_runtime_error(std::runtime_error const&)': > [ 1644s] regex.cpp:(.text.unlikely+0x9c): undefined reference to `vtable for boost::wrapexcept<std::runtime_error>' > [ 1644s] /usr/lib64/gcc/x86_64-suse-linux/14/../../../../x86_64-suse-linux/bin/ld: regex.cpp:(.text.unlikely+0xe9): undefined reference to `typeinfo for boost::wrapexcept<std::runtime_error>' > [ 1644s] /usr/lib64/gcc/x86_64-suse-linux/14/../../../../x86_64-suse-linux/bin/ld: regex.cpp:(.text.unlikely+0xff): undefined reference to `boost::wrapexcept<std::runtime_error>::~wrapexcept()' > [ 1644s] collect2: error: ld returned 1 exit status But, it works fine when built locally with both `osc build --alternative-project home:rguenther:nextgcc` and `osc build --alternative-project openSUSE:Factory:Staging:Gcc7`. Shall I go ahead and submit my fixed version to Factory?
The package was auto-submitted to Factory the other day, and I can now see a successful build in https://build.opensuse.org/package/show/devel:gcc:next:testing/ceph so I think we're done here :-)