Fix C++ client cannot be built with Boost <=1.53 #10307
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation
CentOS 7 is a wide-used Linux system though its softwares of yum source are usually very old. The default Boost version is 1.53 on CentOS 7. However, currently C++ client cannot be built with Boost 1.53 or lower versions.
First, the
boost::asio::ssl::context
was constructed with astd::shared_ptr<io_service>
as its first argument when the Boost version is < 1.54. However, it accepts aio_service&
argument. This code error was not exposed because we use higher version Boost when cpp tests were performed.Second, for Boost < 1.55, there's no
boost/predef.h
header. The header is used for detecting the byte order of OS and the architecture of CPU.Modifications
boost::asio::ssl::context
for Boost < 1.54boost/predef.h
and useboost/detail/endian.hpp
to check byte order. As for the architecture, just use the common case.Verifying this change
This change added tests and can be verified as follows:
Does this pull request potentially affect one of the following parts:
If
yes
was chosen, please highlight the changesDocumentation