Bug 1184792

Summary: GCC 11: ceph package fails
Product: [openSUSE] openSUSE Tumbleweed Reporter: Martin Liška <martin.liska>
Component: BasesystemAssignee: Mike Latimer <mlatimer>
Status: RESOLVED INVALID QA Contact: E-mail List <qa-bugs>
Severity: Normal    
Priority: P5 - None CC: martin.liska, ncutler
Version: Current   
Target Milestone: ---   
Hardware: Other   
OS: Other   
Whiteboard:
Found By: --- Services Priority:
Business Priority: Blocker: ---
Marketing QA Status: --- IT Deployment: ---
Bug Depends on:    
Bug Blocks: 1181859    

Description Martin Liška 2021-04-15 11:20:07 UTC
Fails here:
https://build.opensuse.org/package/live_build_log/openSUSE:Factory:Staging:Gcc7/ceph/standard/x86_64

due to:
[ 2897s] /home/abuild/rpmbuild/BUILD/ceph-16.1.0-1217-g8e1da7347e/src/librbd/migration/HttpClient.cc:221:63:   required from here
[ 2897s] /home/abuild/rpmbuild/BUILD/ceph-16.1.0-1217-g8e1da7347e/build/boost/include/boost/beast/http/message.hpp:265:38: error: static assertion failed: Fields type requirements not met
[ 2897s]   265 |     static_assert(is_fields<Fields>::value,
[ 2897s]       |                                      ^~~~~
[ 2897s] /home/abuild/rpmbuild/BUILD/ceph-16.1.0-1217-g8e1da7347e/build/boost/include/boost/beast/http/message.hpp:265:38: note: 'std::integral_constant<bool, false>::value' evaluates to false
[ 2897s] /home/abuild/rpmbuild/BUILD/ceph-16.1.0-1217-g8e1da7347e/build/boost/include/boost/beast/http/message.hpp: In instantiation of 'class boost::beast::http::header<true, boost::beast::http::basic_fields<std::allocator<char> > >':
[ 2897s] /home/abuild/rpmbuild/BUILD/ceph-16.1.0-1217-g8e1da7347e/build/boost/include/boost/beast/http/message.hpp:494:7:   required from 'class boost::beast::http::message<true, boost::beast::http::empty_body, boost::beast::http::basic_fields<std::allocator<char> > >'
[ 2897s] /home/abuild/rpmbuild/BUILD/ceph-16.1.0-1217-g8e1da7347e/src/librbd/migration/HttpClient.cc:800:6:   required from here
[ 2897s] /home/abuild/rpmbuild/BUILD/ceph-16.1.0-1217-g8e1da7347e/build/boost/include/boost/beast/http/message.hpp:61:38: error: static assertion failed: Fields type requirements not met
[ 2897s]    61 |     static_assert(is_fields<Fields>::value,
[ 2897s]       |                                      ^~~~~
Comment 1 Mike Latimer 2021-04-16 22:50:37 UTC
I wonder if this is fixed with something newer than boot 1.72. (Upstream master is up to boot 1.75.)

@Nathan - Do you know if the Ceph community is already aware of this? Maybe it's time to move Factory to Pacific (although I'm not sure if this is fixed there).
Comment 2 Nathan Cutler 2021-04-17 17:39:34 UTC
(In reply to Mike Latimer from comment #1)
> I wonder if this is fixed with something newer than boot 1.72. (Upstream
> master is up to boot 1.75.)
> 
> @Nathan - Do you know if the Ceph community is already aware of this? Maybe
> it's time to move Factory to Pacific (although I'm not sure if this is fixed
> there).

Factory has been on Pacific for some time already. But master is now the future Quincy... 

@Martin, I see I don't have permissions to push to

https://build.opensuse.org/project/users/openSUSE:Factory:Staging:Gcc7

Is that the project I was able to push to for testing, or was that a different one?
Comment 3 Martin Liška 2021-04-18 13:48:19 UTC
(In reply to Nathan Cutler from comment #2)
> (In reply to Mike Latimer from comment #1)
> > I wonder if this is fixed with something newer than boot 1.72. (Upstream
> > master is up to boot 1.75.)
> > 
> > @Nathan - Do you know if the Ceph community is already aware of this? Maybe
> > it's time to move Factory to Pacific (although I'm not sure if this is fixed
> > there).
> 
> Factory has been on Pacific for some time already. But master is now the
> future Quincy... 
> 
> @Martin, I see I don't have permissions to push to
> 
> https://build.opensuse.org/project/users/openSUSE:Factory:Staging:Gcc7

Please test it with --alternative-project=openSUSE:Factory:Staging:Gcc7 and then push it to openSUSE:Factory.

> 
> Is that the project I was able to push to for testing, or was that a
> different one?

You don't need to test it in the project, alternative project is your friend.
Comment 4 Nathan Cutler 2021-04-20 10:40:46 UTC
> Do you know if the Ceph community is already aware of this? 

I don't think they were, but they are now:

https://tracker.ceph.com/issues/50436
Comment 5 Nathan Cutler 2021-04-20 13:49:10 UTC
Apparently, Fedora has ceph building successfully with GCC11. The compilation error arises in boost, so I am assuming one of the patches Fedora applies on top of boost 1.75.0 is what enables their build to succeed.

I tried doing the same (i.e. build ceph+GCC11 against the system boost RPMs) in openSUSE:Factory, but it fails with the same compiler error. So it would seem that openSUSE:Factory/boost lacks whatever boost patch it is that makes the Fedora ceph+GCC11 build succeed.

I also tried building boost itself with GCC11 (using --alternative-project=openSUSE:Factory:Staging:Gcc7) but it gives me the following error:

[    2s] + exec rpmbuild -ba --define '_srcdefattr (-,root,root)' --nosignature --define '_build_create_debug 1' /home/abuild/rpmbuild/SOURCES/boost.spec
[    2s] error: Architecture is not included: x86_64

@Martin, could you include boost in openSUSE:Factory:Staging:Gcc7 just to see if it builds? Here is the thinking behind this: if boost fails to build in this project, then it might be easier to identify which boost patch needs to be added to openSUSE:Factory boost to fix this bug.

Another possible line of inquiry would be to unpack the Fedora SRC RPM [1] and compare the patches with those in openSUSE:Factory/boost. Presumably Fedora has one or more patches that openSUSE lacks, and one of those patches fixes this bug.
Comment 7 Martin Liška 2021-04-21 07:16:14 UTC
> @Martin, could you include boost in openSUSE:Factory:Staging:Gcc7 just to
> see if it builds?

It's linked there as it's inherited from openSUSE:Factory
https://build.opensuse.org/package/show/openSUSE:Factory:Staging:Gcc7/boost
Comment 8 Martin Liška 2021-04-21 14:25:48 UTC
It's fixed now with the GCC 11.1 RC1 compiler.
Thanks for the investigation.