diff options
author | Jacob Keeler <jacob.keeler@livioradio.com> | 2021-03-05 16:34:23 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-03-05 16:34:23 -0500 |
commit | 30d03644e9043fbc30d0fa0cae73c2334b65a60c (patch) | |
tree | e0a6b0bb22fede6800733ce6cb84481932e34c84 | |
parent | 29589f7925619f0eae8dbc6d84a64d4e195ab176 (diff) | |
download | sdl_core-30d03644e9043fbc30d0fa0cae73c2334b65a60c.tar.gz |
Update and fix Boost installation (#3651)
* Update boost installation to 1.72.0
* Fix boost installation process
Properly set boost directories when the library is found, also run clean step before installation to prevent lingering old versions of boost
11 files changed, 40 insertions, 50 deletions
diff --git a/src/3rd_party/CMakeLists.txt b/src/3rd_party/CMakeLists.txt index 0fdc0ba013..2673deb142 100644 --- a/src/3rd_party/CMakeLists.txt +++ b/src/3rd_party/CMakeLists.txt @@ -221,13 +221,13 @@ else() endif() set(BOOST_ROOT ${3RD_PARTY_INSTALL_PREFIX}) -find_package(Boost 1.66.0 COMPONENTS system thread date_time filesystem regex) -set(BOOST_LIB_SOURCE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/boost_src) -set(BOOST_LIBS_DIRECTORY ${3RD_PARTY_INSTALL_PREFIX}/lib) -set(BOOST_INCLUDE_DIR ${3RD_PARTY_INSTALL_PREFIX}/include PARENT_SCOPE) -SET_PROPERTY(GLOBAL PROPERTY GLOBAL_BOOST_LIBS ${BOOST_LIBS_DIRECTORY}) +find_package(Boost 1.72.0 COMPONENTS system thread date_time filesystem regex) if (NOT ${Boost_FOUND}) - message(STATUS "Did not find boost. Downloading and installing boost 1.66") + set(BOOST_LIB_SOURCE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/boost_src) + set(BOOST_LIBS_DIRECTORY ${3RD_PARTY_INSTALL_PREFIX}/lib) + set(BOOST_INCLUDE_DIR ${3RD_PARTY_INSTALL_PREFIX}/include PARENT_SCOPE) + SET_PROPERTY(GLOBAL PROPERTY GLOBAL_BOOST_LIBS ${BOOST_LIBS_DIRECTORY}) + message(STATUS "Did not find boost. Downloading and installing boost 1.72") set(BOOST_INSTALL_COMMAND ./b2 install) if (${3RD_PARTY_INSTALL_PREFIX} MATCHES "/usr/local") set(BOOST_INSTALL_COMMAND sudo ./b2 install) @@ -235,18 +235,22 @@ if (NOT ${Boost_FOUND}) include(ExternalProject) ExternalProject_Add( Boost - URL https://mirror.bazel.build/dl.bintray.com/boostorg/release/1.68.0/source/boost_1_68_0.tar.gz - URL_HASH SHA256=da3411ea45622579d419bfda66f45cd0f8c32a181d84adfa936f5688388995cf + URL https://dl.bintray.com/boostorg/release/1.72.0/source/boost_1_72_0.tar.gz + URL_HASH SHA256=c66e88d5786f2ca4dbebb14e06b566fb642a1a6947ad8cc9091f9f445134143f DOWNLOAD_DIR ${BOOST_LIB_SOURCE_DIRECTORY} SOURCE_DIR ${BOOST_LIB_SOURCE_DIRECTORY} CONFIGURE_COMMAND ./bootstrap.sh --with-libraries=system,thread,date_time,filesystem,regex --prefix=${3RD_PARTY_INSTALL_PREFIX} BUILD_COMMAND ./b2 - INSTALL_COMMAND ${BOOST_INSTALL_COMMAND} --with-system --with-thread --with-date_time --with-filesystem --with-regex --prefix=${3RD_PARTY_INSTALL_PREFIX} > boost_install.log + INSTALL_COMMAND ${BOOST_INSTALL_COMMAND} --clean --prefix=${3RD_PARTY_INSTALL_PREFIX} && ${BOOST_INSTALL_COMMAND} --with-system --with-thread --with-date_time --with-filesystem --with-regex --prefix=${3RD_PARTY_INSTALL_PREFIX} > boost_install.log INSTALL_DIR ${3RD_PARTY_INSTALL_PREFIX} BUILD_IN_SOURCE true ) else() -add_custom_target(Boost) # empty target, Boost is already installed + message (STATUS "Boost installed in " ${Boost_LIBRARY_DIRS} ", " ${Boost_INCLUDE_DIRS}) + set(BOOST_LIBS_DIRECTORY ${Boost_LIBRARY_DIRS}) + set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS} PARENT_SCOPE) + SET_PROPERTY(GLOBAL PROPERTY GLOBAL_BOOST_LIBS ${BOOST_LIBS_DIRECTORY}) + add_custom_target(Boost) # empty target, Boost is already installed endif() add_custom_target(install-3rd_party diff --git a/src/components/hmi_message_handler/include/hmi_message_handler/websocket_session.h b/src/components/hmi_message_handler/include/hmi_message_handler/websocket_session.h index 9059bbed81..43456749f3 100644 --- a/src/components/hmi_message_handler/include/hmi_message_handler/websocket_session.h +++ b/src/components/hmi_message_handler/include/hmi_message_handler/websocket_session.h @@ -87,7 +87,6 @@ class CMessageBrokerController; class WebsocketSession : public std::enable_shared_from_this<WebsocketSession> { boost::beast::websocket::stream<boost::asio::ip::tcp::socket> ws_; - boost::asio::strand<boost::asio::io_context::executor_type> strand_; boost::beast::multi_buffer buffer_; boost::beast::multi_buffer send_buffer_; CMessageBrokerController* controller_; diff --git a/src/components/hmi_message_handler/src/websocket_session.cc b/src/components/hmi_message_handler/src/websocket_session.cc index a387b639a2..6e1c4b9bc4 100644 --- a/src/components/hmi_message_handler/src/websocket_session.cc +++ b/src/components/hmi_message_handler/src/websocket_session.cc @@ -41,7 +41,6 @@ SDL_CREATE_LOG_VARIABLE("HMIMessageHandler") WebsocketSession::WebsocketSession(boost::asio::ip::tcp::socket socket, CMessageBrokerController* controller) : ws_(std::move(socket)) - , strand_(ws_.get_executor()) , controller_(controller) , stop(false) , m_receivingBuffer("") @@ -57,10 +56,8 @@ WebsocketSession::WebsocketSession(boost::asio::ip::tcp::socket socket, WebsocketSession::~WebsocketSession() {} void WebsocketSession::Accept() { - ws_.async_accept(boost::asio::bind_executor( - strand_, - std::bind( - &WebsocketSession::Recv, shared_from_this(), std::placeholders::_1))); + ws_.async_accept(std::bind( + &WebsocketSession::Recv, shared_from_this(), std::placeholders::_1)); } void WebsocketSession::Shutdown() { @@ -90,11 +87,10 @@ void WebsocketSession::Recv(boost::system::error_code ec) { } ws_.async_read(buffer_, - boost::asio::bind_executor(strand_, - std::bind(&WebsocketSession::Read, - shared_from_this(), - std::placeholders::_1, - std::placeholders::_2))); + std::bind(&WebsocketSession::Read, + shared_from_this(), + std::placeholders::_1, + std::placeholders::_2)); } void WebsocketSession::Send(const std::string& message, diff --git a/src/components/transport_manager/include/transport_manager/websocket_server/websocket_device.h b/src/components/transport_manager/include/transport_manager/websocket_server/websocket_device.h index 10c6e54424..84235eefa4 100644 --- a/src/components/transport_manager/include/transport_manager/websocket_server/websocket_device.h +++ b/src/components/transport_manager/include/transport_manager/websocket_server/websocket_device.h @@ -38,8 +38,10 @@ #ifndef SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_WEBSOCKET_SERVER_WEBSOCKET_DEVICE_H_ #define SRC_COMPONENTS_TRANSPORT_MANAGER_INCLUDE_TRANSPORT_MANAGER_WEBSOCKET_SERVER_WEBSOCKET_DEVICE_H_ +#include <boost/asio/ip/tcp.hpp> #include <boost/beast/websocket.hpp> #include <string> + #include "transport_manager/transport_adapter/device.h" namespace transport_manager { diff --git a/src/components/transport_manager/include/transport_manager/websocket_server/websocket_session.h b/src/components/transport_manager/include/transport_manager/websocket_server/websocket_session.h index f1be1a3b54..c5eb665062 100644 --- a/src/components/transport_manager/include/transport_manager/websocket_server/websocket_session.h +++ b/src/components/transport_manager/include/transport_manager/websocket_server/websocket_session.h @@ -99,7 +99,6 @@ class WebSocketSession protected: tcp::socket socket_; websocket::stream<ExecutorType> ws_; - boost::asio::strand<boost::asio::io_context::executor_type> strand_; boost::beast::flat_buffer buffer_; DataReceiveCallback data_receive_; DataSendDoneCallback data_send_done_; diff --git a/src/components/transport_manager/src/cloud/websocket_client_connection.cc b/src/components/transport_manager/src/cloud/websocket_client_connection.cc index b190e73cb6..a84723d2a1 100644 --- a/src/components/transport_manager/src/cloud/websocket_client_connection.cc +++ b/src/components/transport_manager/src/cloud/websocket_client_connection.cc @@ -240,7 +240,7 @@ void WebsocketClientConnection::OnRead(boost::system::error_code ec, if (ec) { std::string str_err = "ErrorMessage: " + ec.message(); SDL_LOG_ERROR(str_err); - ws_.lowest_layer().close(); + boost::beast::get_lowest_layer(ws_).close(); ioc_.stop(); Shutdown(); return; diff --git a/src/components/transport_manager/src/websocket_server/websocket_secure_session.cc b/src/components/transport_manager/src/websocket_server/websocket_secure_session.cc index a533bdcffc..699d2757fd 100644 --- a/src/components/transport_manager/src/websocket_server/websocket_secure_session.cc +++ b/src/components/transport_manager/src/websocket_server/websocket_secure_session.cc @@ -60,11 +60,9 @@ void WebSocketSecureSession<ExecutorType>::AsyncAccept() { // Perform the SSL handshake WebSocketSecureSession<ExecutorType>::ws_.next_layer().async_handshake( ssl::stream_base::server, - boost::asio::bind_executor( - WebSocketSecureSession<ExecutorType>::strand_, - std::bind(&WebSocketSecureSession::AsyncHandshake, - this->shared_from_this(), - std::placeholders::_1))); + std::bind(&WebSocketSecureSession::AsyncHandshake, + this->shared_from_this(), + std::placeholders::_1)); } template <typename ExecutorType> diff --git a/src/components/transport_manager/src/websocket_server/websocket_session.cc b/src/components/transport_manager/src/websocket_server/websocket_session.cc index 8a05b9d9aa..1def04d700 100644 --- a/src/components/transport_manager/src/websocket_server/websocket_session.cc +++ b/src/components/transport_manager/src/websocket_server/websocket_session.cc @@ -48,7 +48,6 @@ WebSocketSession<tcp::socket&>::WebSocketSession( OnIOErrorCallback on_error) : socket_(std::move(socket)) , ws_(socket_) - , strand_(ws_.get_executor()) , data_receive_(data_receive) , data_send_done_(data_send_done) , data_send_failed_(data_send_failed) @@ -67,7 +66,6 @@ WebSocketSession<ssl::stream<tcp::socket&> >::WebSocketSession( OnIOErrorCallback on_error) : socket_(std::move(socket)) , ws_(socket_, ctx) - , strand_(ws_.get_executor()) , data_receive_(data_receive) , data_send_done_(data_send_done) , data_send_failed_(data_send_failed) @@ -83,11 +81,9 @@ WebSocketSession<ExecutorType>::~WebSocketSession() {} template <typename ExecutorType> void WebSocketSession<ExecutorType>::AsyncAccept() { SDL_LOG_AUTO_TRACE(); - ws_.async_accept( - boost::asio::bind_executor(strand_, - std::bind(&WebSocketSession::AsyncRead, - this->shared_from_this(), - std::placeholders::_1))); + ws_.async_accept(std::bind(&WebSocketSession::AsyncRead, + this->shared_from_this(), + std::placeholders::_1)); } template <typename ExecutorType> @@ -100,11 +96,10 @@ void WebSocketSession<ExecutorType>::AsyncRead(boost::system::error_code ec) { } ws_.async_read(buffer_, - boost::asio::bind_executor(strand_, - std::bind(&WebSocketSession::Read, - this->shared_from_this(), - std::placeholders::_1, - std::placeholders::_2))); + std::bind(&WebSocketSession::Read, + this->shared_from_this(), + std::placeholders::_1, + std::placeholders::_2)); } template <typename ExecutorType> diff --git a/src/components/transport_manager/test/include/transport_manager/cloud/sample_websocket_server.h b/src/components/transport_manager/test/include/transport_manager/cloud/sample_websocket_server.h index e29f182059..2b3b1b41df 100644 --- a/src/components/transport_manager/test/include/transport_manager/cloud/sample_websocket_server.h +++ b/src/components/transport_manager/test/include/transport_manager/cloud/sample_websocket_server.h @@ -80,7 +80,6 @@ class WSSession : public std::enable_shared_from_this<WSSession> { websocket::stream<tcp::socket> ws_; beast::flat_buffer buffer_; - boost::asio::strand<boost::asio::io_context::executor_type> strand_; http::request<http::string_body> req_; std::set<std::string> url_routes_; }; diff --git a/src/components/transport_manager/test/sample_websocket_server.cc b/src/components/transport_manager/test/sample_websocket_server.cc index 9b0e5b59d5..bd153adad4 100644 --- a/src/components/transport_manager/test/sample_websocket_server.cc +++ b/src/components/transport_manager/test/sample_websocket_server.cc @@ -42,8 +42,7 @@ void Fail(char const* tag, boost::system::error_code ec) { namespace sample { namespace websocket { -WSSession::WSServer::WSServer(tcp::socket&& socket) - : ws_(std::move(socket)), strand_(ws_.get_executor()) {} +WSSession::WSServer::WSServer(tcp::socket&& socket) : ws_(std::move(socket)) {} void WSSession::WSServer::AddURLRoute(const std::string& target) { url_routes_.insert(ParseRouteFromTarget(target)); @@ -76,10 +75,8 @@ void WSSession::WSServer::OnWebsocketHandshake( // Accept the websocket handshake ws_.async_accept( req_, - boost::asio::bind_executor(strand_, - std::bind(&WSServer::OnAccept, - shared_from_this(), - std::placeholders::_1))); + std::bind( + &WSServer::OnAccept, shared_from_this(), std::placeholders::_1)); } } diff --git a/src/components/transport_manager/test/websocket_sample_client/websocket_sample_client.cc b/src/components/transport_manager/test/websocket_sample_client/websocket_sample_client.cc index 6c2ff12bfd..8cf3cb38f1 100644 --- a/src/components/transport_manager/test/websocket_sample_client/websocket_sample_client.cc +++ b/src/components/transport_manager/test/websocket_sample_client/websocket_sample_client.cc @@ -113,7 +113,8 @@ bool WSSampleClient<WS>::Connect(tcp::resolver::results_type& results) { template <> bool WSSampleClient<WSS>::Connect(tcp::resolver::results_type& results) { boost::system::error_code ec; - boost::asio::connect(ws_->lowest_layer(), results.begin(), results.end(), ec); + boost::asio::connect( + boost::beast::get_lowest_layer(*ws_), results.begin(), results.end(), ec); if (ec) { return false; } @@ -134,7 +135,7 @@ bool WSSampleClient<WS>::Handshake(const std::string& host, template <> void WSSampleClient<WS>::Stop() { ioc_.stop(); - ws_->lowest_layer().close(); + boost::beast::get_lowest_layer(*ws_).close(); io_pool_.stop(); io_pool_.join(); @@ -165,7 +166,7 @@ void WSSampleClient<WSS>::Stop() { ioc_.stop(); ws_->next_layer().next_layer().shutdown( boost::asio::ip::tcp::socket::shutdown_both); - ws_->lowest_layer().close(); + boost::beast::get_lowest_layer(*ws_).close(); io_pool_.stop(); io_pool_.join(); |