[packages/websocketpp] - fixes for boost 1.87, rel 2
baggins
baggins at pld-linux.org
Tue Dec 24 04:12:45 CET 2024
commit 2c191f2f0373123a7af6cbaa4693a55c27c8a297
Author: Jan Rękorajski <baggins at pld-linux.org>
Date: Tue Dec 24 03:29:17 2024 +0100
- fixes for boost 1.87, rel 2
boost-1.87.patch | 272 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
websocketpp.spec | 10 +-
2 files changed, 278 insertions(+), 4 deletions(-)
---
diff --git a/websocketpp.spec b/websocketpp.spec
index c8dc6d6..ae7836e 100644
--- a/websocketpp.spec
+++ b/websocketpp.spec
@@ -6,7 +6,7 @@ Summary: C++ WebSocket Protocol Library
Summary(pl.UTF-8): Biblioteka C++ do obsługi protokołu WebSocket
Name: websocketpp
Version: 0.8.2
-Release: 1
+Release: 2
License: BSD
Group: Development/Libraries
#Source0Download: https://github.com/zaphoyd/websocketpp/releases
@@ -16,6 +16,7 @@ Source1: websocketpp.pc
Patch0: %{name}-cmake_noarch.patch
Patch1: %{name}-cmake-configversion-compatibility.patch
Patch2: %{name}-tests.patch
+Patch3: boost-1.87.patch
URL: https://www.zaphoyd.com/websocketpp/
BuildRequires: boost-devel >= 1.39
BuildRequires: cmake >= 2.8.8
@@ -65,9 +66,10 @@ oparty o Boost Asio.
%prep
%setup -q
-%patch0 -p1
-%patch1 -p1
-%patch2 -p1
+%patch -P 0 -p1
+%patch -P 1 -p1
+%patch -P 2 -p1
+%patch -P 3 -p1
%build
install -d build
diff --git a/boost-1.87.patch b/boost-1.87.patch
new file mode 100644
index 0000000..4c38946
--- /dev/null
+++ b/boost-1.87.patch
@@ -0,0 +1,272 @@
+diff -ur websocketpp-0.8.2/test/endpoint/endpoint.cpp websocketpp-0.8.2.boost/test/endpoint/endpoint.cpp
+--- websocketpp-0.8.2/test/endpoint/endpoint.cpp 2020-04-19 20:25:17.000000000 +0200
++++ websocketpp-0.8.2.boost/test/endpoint/endpoint.cpp 2024-12-24 03:26:29.136666560 +0100
+@@ -53,7 +53,7 @@
+
+ BOOST_AUTO_TEST_CASE( initialize_server_asio_external ) {
+ websocketpp::server<websocketpp::config::asio> s;
+- boost::asio::io_service ios;
++ boost::asio::io_context ios;
+ s.init_asio(&ios);
+ }
+
+@@ -141,8 +141,8 @@
+ server1.init_asio();
+ server2.init_asio();
+
+- boost::asio::ip::tcp::endpoint ep1(boost::asio::ip::address::from_string("127.0.0.1"), 12345);
+- boost::asio::ip::tcp::endpoint ep2(boost::asio::ip::address::from_string("127.0.0.1"), 23456);
++ boost::asio::ip::tcp::endpoint ep1(boost::asio::ip::make_address("127.0.0.1"), 12345);
++ boost::asio::ip::tcp::endpoint ep2(boost::asio::ip::make_address("127.0.0.1"), 23456);
+
+ server1.listen(ep1, ec);
+ BOOST_CHECK(!ec);
+diff -ur websocketpp-0.8.2/websocketpp/common/asio.hpp websocketpp-0.8.2.boost/websocketpp/common/asio.hpp
+--- websocketpp-0.8.2/websocketpp/common/asio.hpp 2020-04-19 20:25:17.000000000 +0200
++++ websocketpp-0.8.2.boost/websocketpp/common/asio.hpp 2024-12-24 03:08:44.339999743 +0100
+@@ -72,6 +72,9 @@
+ #ifdef ASIO_STANDALONE
+ namespace asio {
+ using namespace ::asio;
++ #if ASIO_VERSION >= 103300
++ using io_service = io_context;
++ #endif
+ // Here we assume that we will be using std::error_code with standalone
+ // Asio. This is probably a good assumption, but it is possible in rare
+ // cases that local Asio versions would be used.
+@@ -93,6 +96,9 @@
+ #else
+ namespace asio {
+ using namespace boost::asio;
++ #if BOOST_VERSION >= 108700
++ using io_service = io_context;
++ #endif
+
+ // See note above about boost <1.49 compatibility
+ #if (BOOST_VERSION/100000) == 1 && ((BOOST_VERSION/100)%1000) > 48
+diff -ur websocketpp-0.8.2/websocketpp/transport/asio/connection.hpp websocketpp-0.8.2.boost/websocketpp/transport/asio/connection.hpp
+--- websocketpp-0.8.2/websocketpp/transport/asio/connection.hpp 2020-04-19 20:25:17.000000000 +0200
++++ websocketpp-0.8.2.boost/websocketpp/transport/asio/connection.hpp 2024-12-24 03:08:44.339999743 +0100
+@@ -573,7 +573,7 @@
+ lib::error_code const & ec)
+ {
+ if (ec == transport::error::operation_aborted ||
+- (post_timer && lib::asio::is_neg(post_timer->expires_from_now())))
++ (post_timer && lib::asio::is_neg(post_timer->expiry() - std::chrono::steady_clock::now())))
+ {
+ m_alog->write(log::alevel::devel,"post_init cancelled");
+ return;
+@@ -679,7 +679,7 @@
+ // Whatever aborted it will be issuing the callback so we are safe to
+ // return
+ if (ec == lib::asio::error::operation_aborted ||
+- lib::asio::is_neg(m_proxy_data->timer->expires_from_now()))
++ lib::asio::is_neg(m_proxy_data->timer->expiry() - std::chrono::steady_clock::now()))
+ {
+ m_elog->write(log::elevel::devel,"write operation aborted");
+ return;
+@@ -751,7 +751,7 @@
+ // Whatever aborted it will be issuing the callback so we are safe to
+ // return
+ if (ec == lib::asio::error::operation_aborted ||
+- lib::asio::is_neg(m_proxy_data->timer->expires_from_now()))
++ lib::asio::is_neg(m_proxy_data->timer->expiry() - std::chrono::steady_clock::now()))
+ {
+ m_elog->write(log::elevel::devel,"read operation aborted");
+ return;
+@@ -1012,18 +1012,18 @@
+ */
+ lib::error_code interrupt(interrupt_handler handler) {
+ if (config::enable_multithreading) {
+- m_io_service->post(m_strand->wrap(handler));
++ lib::asio::post(*m_io_service, m_strand->wrap(handler));
+ } else {
+- m_io_service->post(handler);
++ lib::asio::post(*m_io_service, handler);
+ }
+ return lib::error_code();
+ }
+
+ lib::error_code dispatch(dispatch_handler handler) {
+ if (config::enable_multithreading) {
+- m_io_service->post(m_strand->wrap(handler));
++ lib::asio::post(*m_io_service, m_strand->wrap(handler));
+ } else {
+- m_io_service->post(handler);
++ lib::asio::post(*m_io_service, handler);
+ }
+ return lib::error_code();
+ }
+@@ -1095,7 +1095,7 @@
+ callback, lib::asio::error_code const & ec)
+ {
+ if (ec == lib::asio::error::operation_aborted ||
+- lib::asio::is_neg(shutdown_timer->expires_from_now()))
++ lib::asio::is_neg(shutdown_timer->expiry() - std::chrono::steady_clock::now()))
+ {
+ m_alog->write(log::alevel::devel,"async_shutdown cancelled");
+ return;
+diff -ur websocketpp-0.8.2/websocketpp/transport/asio/endpoint.hpp websocketpp-0.8.2.boost/websocketpp/transport/asio/endpoint.hpp
+--- websocketpp-0.8.2/websocketpp/transport/asio/endpoint.hpp 2020-04-19 20:25:17.000000000 +0200
++++ websocketpp-0.8.2.boost/websocketpp/transport/asio/endpoint.hpp 2024-12-24 03:20:20.306666482 +0100
+@@ -86,7 +86,7 @@
+ /// Type of timer handle
+ typedef lib::shared_ptr<lib::asio::steady_timer> timer_ptr;
+ /// Type of a shared pointer to an io_service work object
+- typedef lib::shared_ptr<lib::asio::io_service::work> work_ptr;
++ typedef lib::shared_ptr<lib::asio::executor_work_guard<lib::asio::io_context::executor_type>> work_ptr;
+
+ /// Type of socket pre-bind handler
+ typedef lib::function<lib::error_code(acceptor_ptr)> tcp_pre_bind_handler;
+@@ -95,7 +95,7 @@
+ explicit endpoint()
+ : m_io_service(NULL)
+ , m_external_io_service(false)
+- , m_listen_backlog(lib::asio::socket_base::max_connections)
++ , m_listen_backlog(lib::asio::socket_base::max_listen_connections)
+ , m_reuse_addr(false)
+ , m_state(UNINITIALIZED)
+ {
+@@ -135,7 +135,7 @@
+ , m_io_service(src.m_io_service)
+ , m_external_io_service(src.m_external_io_service)
+ , m_acceptor(src.m_acceptor)
+- , m_listen_backlog(lib::asio::socket_base::max_connections)
++ , m_listen_backlog(lib::asio::socket_base::max_listen_connections)
+ , m_reuse_addr(src.m_reuse_addr)
+ , m_elog(src.m_elog)
+ , m_alog(src.m_alog)
+@@ -159,7 +159,7 @@
+ rhs.m_io_service = NULL;
+ rhs.m_external_io_service = false;
+ rhs.m_acceptor = NULL;
+- rhs.m_listen_backlog = lib::asio::socket_base::max_connections;
++ rhs.m_listen_backlog = lib::asio::socket_base::max_listen_connections;
+ rhs.m_state = UNINITIALIZED;
+
+ // TODO: this needs to be updated
+@@ -330,7 +330,7 @@
+ *
+ * New values affect future calls to listen only.
+ *
+- * The default value is specified as *::asio::socket_base::max_connections
++ * The default value is specified as *::asio::socket_base::max_listen_connections
+ * which uses the operating system defined maximum queue length. Your OS
+ * may restrict or silently lower this value. A value of zero may cause
+ * all connections to be rejected.
+@@ -558,9 +558,9 @@
+ {
+ using lib::asio::ip::tcp;
+ tcp::resolver r(*m_io_service);
+- tcp::resolver::query query(host, service);
+- tcp::resolver::iterator endpoint_iterator = r.resolve(query);
+- tcp::resolver::iterator end;
++ auto results = r.resolve(host, service);
++ tcp::resolver::results_type::iterator endpoint_iterator = results.begin();
++ tcp::resolver::results_type::iterator end = results.end();
+ if (endpoint_iterator == end) {
+ m_elog->write(log::elevel::library,
+ "asio::listen could not resolve the supplied host or service");
+@@ -666,7 +666,7 @@
+
+ /// wraps the reset method of the internal io_service object
+ void reset() {
+- m_io_service->reset();
++ m_io_service->restart();
+ }
+
+ /// wraps the stopped method of the internal io_service object
+@@ -687,7 +687,7 @@
+ * @since 0.3.0
+ */
+ void start_perpetual() {
+- m_work.reset(new lib::asio::io_service::work(*m_io_service));
++ m_work.reset(new lib::asio::executor_work_guard<lib::asio::io_context::executor_type>(m_io_service->get_executor()));
+ }
+
+ /// Clears the endpoint's perpetual flag, allowing it to exit when empty
+@@ -883,8 +883,6 @@
+ port = pu->get_port_str();
+ }
+
+- tcp::resolver::query query(host,port);
+-
+ if (m_alog->static_test(log::alevel::devel)) {
+ m_alog->write(log::alevel::devel,
+ "starting async DNS resolve for "+host+":"+port);
+@@ -905,7 +903,7 @@
+
+ if (config::enable_multithreading) {
+ m_resolver->async_resolve(
+- query,
++ host, port,
+ tcon->get_strand()->wrap(lib::bind(
+ &type::handle_resolve,
+ this,
+@@ -918,7 +916,7 @@
+ );
+ } else {
+ m_resolver->async_resolve(
+- query,
++ host, port,
+ lib::bind(
+ &type::handle_resolve,
+ this,
+@@ -966,10 +964,10 @@
+
+ void handle_resolve(transport_con_ptr tcon, timer_ptr dns_timer,
+ connect_handler callback, lib::asio::error_code const & ec,
+- lib::asio::ip::tcp::resolver::iterator iterator)
++ lib::asio::ip::tcp::resolver::results_type results)
+ {
+ if (ec == lib::asio::error::operation_aborted ||
+- lib::asio::is_neg(dns_timer->expires_from_now()))
++ lib::asio::is_neg(dns_timer->expiry() - std::chrono::steady_clock::now()))
+ {
+ m_alog->write(log::alevel::devel,"async_resolve cancelled");
+ return;
+@@ -987,9 +985,8 @@
+ std::stringstream s;
+ s << "Async DNS resolve successful. Results: ";
+
+- lib::asio::ip::tcp::resolver::iterator it, end;
+- for (it = iterator; it != end; ++it) {
+- s << (*it).endpoint() << " ";
++ for (auto it : results) {
++ s << it.endpoint() << " ";
+ }
+
+ m_alog->write(log::alevel::devel,s.str());
+@@ -1012,9 +1009,8 @@
+ );
+
+ if (config::enable_multithreading) {
+- lib::asio::async_connect(
+- tcon->get_raw_socket(),
+- iterator,
++ tcon->get_raw_socket().async_connect(
++ results.begin()->endpoint(),
+ tcon->get_strand()->wrap(lib::bind(
+ &type::handle_connect,
+ this,
+@@ -1025,9 +1021,8 @@
+ ))
+ );
+ } else {
+- lib::asio::async_connect(
+- tcon->get_raw_socket(),
+- iterator,
++ tcon->get_raw_socket().async_connect(
++ results.begin()->endpoint(),
+ lib::bind(
+ &type::handle_connect,
+ this,
+@@ -1077,7 +1072,7 @@
+ connect_handler callback, lib::asio::error_code const & ec)
+ {
+ if (ec == lib::asio::error::operation_aborted ||
+- lib::asio::is_neg(con_timer->expires_from_now()))
++ lib::asio::is_neg(con_timer->expiry() - std::chrono::steady_clock::now()))
+ {
+ m_alog->write(log::alevel::devel,"async_connect cancelled");
+ return;
================================================================
---- gitweb:
http://git.pld-linux.org/gitweb.cgi/packages/websocketpp.git/commitdiff/2c191f2f0373123a7af6cbaa4693a55c27c8a297
More information about the pld-cvs-commit
mailing list