Download raw body.
kea: build fix for boost 1.87
This builds with both boost 1.84 and boost 1.87.
Merging the patch from https://946488.bugs.gentoo.org/attachment.cgi?id=914160
into what we had wasn't hard but not entirely mechanical, so a runtime
check by someone who uses this would be nice.
kea's changelog only mentions a build fix for 1.87 only for the 2.7.x
development version, so we'll get to carry patches for a while whether
we update or not.
Index: Makefile
===================================================================
RCS file: /cvs/ports/net/kea/Makefile,v
diff -u -p -r1.41 Makefile
--- Makefile 17 Dec 2024 07:42:47 -0000 1.41
+++ Makefile 20 Apr 2025 18:08:34 -0000
@@ -2,7 +2,7 @@ COMMENT= high-performance and extensible
VERSION= 2.4.1
PORTROACH= limitw:1,even
-REVISION= 0
+REVISION= 1
DISTNAME= kea-${VERSION}
PKGNAME-main= kea-${VERSION:S/-P/pl/}
Index: patches/patch-src_lib_asiolink_io_service_cc
===================================================================
RCS file: /cvs/ports/net/kea/patches/patch-src_lib_asiolink_io_service_cc,v
diff -u -p -r1.1 patch-src_lib_asiolink_io_service_cc
--- patches/patch-src_lib_asiolink_io_service_cc 17 Dec 2024 07:42:47 -0000 1.1
+++ patches/patch-src_lib_asiolink_io_service_cc 20 Apr 2025 17:36:32 -0000
@@ -1,38 +1,106 @@
https://github.com/isc-projects/kea/pull/143
+https://946488.bugs.gentoo.org/attachment.cgi?id=914160
Index: src/lib/asiolink/io_service.cc
--- src/lib/asiolink/io_service.cc.orig
+++ src/lib/asiolink/io_service.cc
-@@ -25,7 +25,7 @@ class IOServiceImpl { (public)
+@@ -24,8 +24,7 @@ class IOServiceImpl { (private)
+ public:
/// \brief The constructor
IOServiceImpl() :
- io_service_(),
+- io_service_(),
- work_(new boost::asio::io_service::work(io_service_)) {
-+ work_(boost::asio::make_work_guard(io_service_)) {
++ io_context_() {
};
/// \brief The destructor.
-@@ -73,7 +73,7 @@ class IOServiceImpl { (public)
+@@ -37,7 +36,7 @@ class IOServiceImpl { (private)
+ /// This method does not return control to the caller until
+ /// the \c stop() method is called via some handler.
+ void run() {
+- io_service_.run();
++ io_context_.run();
+ };
+
+ /// \brief Run the underlying event loop for a single event.
+@@ -46,7 +45,7 @@ class IOServiceImpl { (private)
+ /// first handler has completed. (If no handlers are ready when
+ /// it is run, it will block until one is.)
+ void run_one() {
+- io_service_.run_one();
++ io_context_.run_one();
+ };
+
+ /// \brief Run the underlying event loop for a ready events.
+@@ -54,32 +53,32 @@ class IOServiceImpl { (private)
+ /// This method executes handlers for all ready events and returns.
+ /// It will return immediately if there are no ready events.
+ void poll() {
+- io_service_.poll();
++ io_context_.poll();
+ };
+
+ /// \brief Stop the underlying event loop.
+ ///
+ /// This will return the control to the caller of the \c run() method.
+ void stop() {
+- io_service_.stop();
++ io_context_.stop();
+ }
+
+ /// \brief Indicates if the IOService has been stopped.
+ ///
+ /// \return true if the IOService has been stopped, false otherwise.
+ bool stopped() const {
+- return (io_service_.stopped());
++ return (io_context_.stopped());
+ }
/// \brief Restarts the IOService in preparation for a subsequent \c run() invocation.
void restart() {
- io_service_.reset();
-+ io_service_.restart();
++ io_context_.restart();
}
/// \brief Removes IO service work object to let it finish running
-@@ -96,12 +96,12 @@ class IOServiceImpl { (public)
+ /// when all handlers have been invoked.
+ void stopWork() {
+- work_.reset();
++ io_context_.stop();
+ }
+
+ /// \brief Return the native \c io_service object used in this wrapper.
+@@ -88,20 +87,19 @@ class IOServiceImpl { (private)
+ /// that share the same \c io_service with the authoritative server.
+ /// It will eventually be removed once the wrapper interface is
+ /// generalized.
+- boost::asio::io_service& get_io_service() {
+- return (io_service_);
++ boost::asio::io_context& get_io_context() {
++ return (io_context_);
+ }
+
+ /// \brief Post a callback on the IO service
///
/// \param callback The callback to be run on the IO service.
void post(const std::function<void ()>& callback) {
- io_service_.post(callback);
-+ boost::asio::post(io_service_, callback);
++ boost::asio::post(io_context_, callback);
}
private:
- boost::asio::io_service io_service_;
+- boost::asio::io_service io_service_;
- boost::shared_ptr<boost::asio::io_service::work> work_;
-+ boost::asio::executor_work_guard<boost::asio::io_service::executor_type> work_;
++ boost::asio::io_context io_context_;
};
IOService::IOService() : io_impl_(new IOServiceImpl()) {
+@@ -147,7 +145,7 @@ IOService::stopWork() {
+
+ boost::asio::io_service&
+ IOService::get_io_service() {
+- return (io_impl_->get_io_service());
++ return (io_impl_->get_io_context());
+ }
+
+ void
kea: build fix for boost 1.87