Bug #22600
closedcompilation failures with boost 1.66
0%
Description
Boost 1.66 includes major updates to boost::asio, along with the first release of boost::beast. Both of these changes cause build issues with the beast frontend of radosgw.
/home/cbodley/ceph/src/rgw/rgw_asio_client.cc: In member function ‘virtual size_t rgw::asio::ClientIO::complete_header()’: /home/cbodley/ceph/src/rgw/rgw_asio_client.cc:174:14: error: ‘using parser_type = boost::beast::http::request_parser<boost::beast::http::buffer_body> {aka class boost::beast ::http::parser<true, boost::beast::http::buffer_body, std::allocator<char> >}’ has no member named ‘is_keep_alive’; did you mean ‘keep_alive’? if (parser.is_keep_alive()) { ^~~~~~~~~~~~~ keep_alive gmake[3]: *** [src/rgw/CMakeFiles/radosgw_a.dir/build.make:159: src/rgw/CMakeFiles/radosgw_a.dir/rgw_asio_client.cc.o] Error 1 gmake[3]: *** Waiting for unfinished jobs.... /home/cbodley/ceph/src/rgw/rgw_asio_frontend.cc:67:3: error: invalid use of template-name ‘boost::asio::strand’ without an argument list boost::asio::strand strand; ^~~~~/home/cbodley/ceph/src/rgw/rgw_asio_client.cc: In member function ‘virtual size_t rgw::asio::ClientIO::complete_header()’: /home/cbodley/ceph/src/rgw/rgw_asio_client.cc:174:14: error: ‘using parser_type = boost::beast::http::request_parser<boost::beast::http::buffer_body> {aka class boost::beast ::http::parser<true, boost::beast::http::buffer_body, std::allocator<char> >}’ has no member named ‘is_keep_alive’; did you mean ‘keep_alive’? if (parser.is_keep_alive()) { ^~~~~~~~~~~~~ keep_alive gmake[3]: *** [src/rgw/CMakeFiles/radosgw_a.dir/build.make:159: src/rgw/CMakeFiles/radosgw_a.dir/rgw_asio_client.cc.o] Error 1 gmake[3]: *** Waiting for unfinished jobs.... /home/cbodley/ceph/src/rgw/rgw_asio_frontend.cc:67:3: error: invalid use of template-name ‘boost::asio::strand’ without an argument list boost::asio::strand strand; ^~~~~
Updated by Casey Bodley over 6 years ago
Updated by Casey Bodley over 6 years ago
- Status changed from New to Fix Under Review
Updated by Casey Bodley over 6 years ago
i'm conflicted about what to backport for luminous. there have been quite a few beast frontend changes in radosgw that haven't been backported (https://github.com/ceph/ceph/pull/17923 https://github.com/ceph/ceph/pull/17977 https://github.com/ceph/ceph/pull/18402 https://github.com/ceph/ceph/pull/19182 being the major ones), so luminous still targets an old branch of the beast submodule. that old beast code uses stuff in boost::asio that doesn't build against boost 1.66. so i think we either need to backport everything related to the beast frontend, or disable the build of it entirely - and i'm not particularly happy with either of those options
Updated by Casey Bodley over 6 years ago
- Status changed from Fix Under Review to Pending Backport
Updated by Casey Bodley over 6 years ago
- Copied to Backport #22621: luminous: compilation failures with boost 1.66 added
Updated by Nathan Cutler over 6 years ago
@Casey Is luminous really on boost 1.66? (I currently have no idea how to find out which boost version we're using, so I ask lamely. . . .)
Updated by Casey Bodley over 6 years ago
Hi Nathan,
boost 1.66 added some breaking changes, so this pr fixed those and updated our cmake to require 1.66 (from 1.63). the luminous codebase won't currently build with boost 1.66, so we need to backport the same fixes there. and as a result, luminous will also require 1.66
(p.s. our cmake build will download/build the target boost version if the system package doesn't meet our version requirement)
Updated by Nathan Cutler about 6 years ago
- Status changed from Pending Backport to Resolved