summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacob Keeler <jacob.keeler@livioradio.com>2021-03-05 16:34:23 -0500
committerGitHub <noreply@github.com>2021-03-05 16:34:23 -0500
commit30d03644e9043fbc30d0fa0cae73c2334b65a60c (patch)
treee0a6b0bb22fede6800733ce6cb84481932e34c84
parent29589f7925619f0eae8dbc6d84a64d4e195ab176 (diff)
downloadsdl_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
-rw-r--r--src/3rd_party/CMakeLists.txt24
-rw-r--r--src/components/hmi_message_handler/include/hmi_message_handler/websocket_session.h1
-rw-r--r--src/components/hmi_message_handler/src/websocket_session.cc16
-rw-r--r--src/components/transport_manager/include/transport_manager/websocket_server/websocket_device.h2
-rw-r--r--src/components/transport_manager/include/transport_manager/websocket_server/websocket_session.h1
-rw-r--r--src/components/transport_manager/src/cloud/websocket_client_connection.cc2
-rw-r--r--src/components/transport_manager/src/websocket_server/websocket_secure_session.cc8
-rw-r--r--src/components/transport_manager/src/websocket_server/websocket_session.cc19
-rw-r--r--src/components/transport_manager/test/include/transport_manager/cloud/sample_websocket_server.h1
-rw-r--r--src/components/transport_manager/test/sample_websocket_server.cc9
-rw-r--r--src/components/transport_manager/test/websocket_sample_client/websocket_sample_client.cc7
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();