[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