Bug 1222493

Summary: Ceph package does not build with gcc 14
Product: [openSUSE] openSUSE Tumbleweed Reporter: Martin Jambor <mjambor>
Component: OtherAssignee: Tim Serong <tserong>
Status: RESOLVED FIXED QA Contact: E-mail List <qa-bugs>
Severity: Normal    
Priority: P5 - None CC: mjambor, tserong
Version: Current   
Target Milestone: ---   
Hardware: Other   
OS: Other   
URL: https://tracker.ceph.com/issues/61598
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Bug Depends on:    
Bug Blocks: 1220574    

Description Martin Jambor 2024-04-08 18:07:15 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
Comment 1 Tim Serong 2024-04-09 09:20:35 UTC
Downstream PR:

  https://github.com/SUSE/ceph/pull/516
Comment 2 Tim Serong 2024-04-10 01:42:12 UTC
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.
Comment 3 Tim Serong 2024-04-10 08:59:48 UTC
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?
Comment 4 Tim Serong 2024-04-19 04:33:28 UTC
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 :-)