asio: 1.24.0 -> 1.36.0 (#414478)

This commit is contained in:
Weijia Wang
2025-12-05 10:45:25 +00:00
committed by GitHub
21 changed files with 3241 additions and 140 deletions
+5
View File
@@ -16,6 +16,11 @@
- All Log4Shell vulnerability scanners were removed, as they were all unmaintained upstream and are no longer relevant given that the vulnerability has been fixed upstream for several years.
- `asio` (standalone version of `boost::asio`) has been updated from 1.24.0 to 1.36.0. Some breaking changes were introduced between these
two versions, and the one affected most was the removal of `asio::io_service` in favor of `asio::io_context` in 1.33.0. `asio_1_32_0` is
retained for packages that have not completed migration. `asio_1_10` has been removed as no packages depend on it anymore.
`asio` also no longer propagates `boost` as it is used independent from `boost` in most cases.
- `python3packages.pillow-avif-plugin` has been removed as the functionality is included in `python3packages.pillow` directly since version 11.3.
## Other Notable Changes {#sec-nixpkgs-release-26.05-notable-changes}
+69
View File
@@ -0,0 +1,69 @@
{
lib,
stdenv,
fetchFromGitHub,
autoreconfHook,
pkg-config,
openssl,
boost,
testers,
asioVersion ? "1.36.0",
}:
stdenv.mkDerivation (finalAttrs: {
pname = "asio";
version = asioVersion;
src = fetchFromGitHub {
owner = "chriskohlhoff";
repo = "asio";
tag = "asio-${lib.replaceStrings [ "." ] [ "-" ] finalAttrs.version}";
hash =
{
# Preserve 1.32.0 because some project depends on asio/io_service.hpp
"1.32.0" = "sha256-PBoa4OAOOmHas9wCutjz80rWXc3zGONntb9vTQk3FNY=";
"1.36.0" = "sha256-BhJpE5+t0WXsuQ5CtncU0P8Kf483uFoV+OGlFLc7TpQ=";
}
.${asioVersion} or (throw "Unsupported asio version. Please use overrideAttrs directly");
};
sourceRoot = "${finalAttrs.src.name}/asio";
nativeBuildInputs = [
autoreconfHook
pkg-config
];
# Only used for test coverage
checkInputs = [
openssl
boost
];
configureFlags = lib.optionals finalAttrs.finalPackage.doCheck [
# Only used in tests, "HAVE_BOOST_COROUTINE"
"--enable-boost-coroutine"
# There is also the "--with-boost" flag, but
# after several tests, it doesn't make any difference
# in the output.
];
enableParallelBuilding = true;
doCheck = true;
passthru.tests.pkg-config = testers.hasPkgConfigModules {
package = finalAttrs.finalPackage;
versionCheck = true;
};
meta = {
homepage = "https://think-async.com/Asio";
description = "Cross-platform C++ library for network and low-level I/O programming";
license = lib.licenses.boost;
maintainers = with lib.maintainers; [ aleksana ];
platforms = lib.platforms.unix;
pkgConfigModules = [ "asio" ];
};
})
+17 -3
View File
@@ -1,6 +1,20 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7dbc2c3..cfdd98d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -11,7 +11,6 @@ project(Crow
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
-include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/CPM.cmake)
# Make sure Findasio.cmake module is found
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 67c458c..2873530 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -5,18 +5,9 @@
@@ -5,18 +5,9 @@ set(CMAKE_POLICY_DEFAULT_CMP0077 new)
set(CMAKE_POLICY_WARNING_CMP0126 new)
include(${CMAKE_SOURCE_DIR}/cmake/compiler_options.cmake)
@@ -9,7 +23,7 @@
+find_package(Catch2 REQUIRED)
-CPMAddPackage(Catch2
- VERSION 3.7.0
- VERSION 3.10.0
- GITHUB_REPOSITORY catchorg/Catch2
- OPTIONS
- "CATCH_INSTALL_DOCS Off"
@@ -19,4 +33,4 @@
-
enable_testing()
set(TEST_SRCS
# list the test sources
+4 -2
View File
@@ -10,13 +10,13 @@
stdenv.mkDerivation (finalAttrs: {
pname = "crow";
version = "1.2.1.2";
version = "1.3.0.0";
src = fetchFromGitHub {
owner = "CrowCpp";
repo = "Crow";
tag = "v${finalAttrs.version}";
hash = "sha256-iQ2owNry4LOmMxyO5L7O7XZB5vwUf+ZuZL76hZ6FThk=";
hash = "sha256-QLYQ0RouqDDvhnBF79O/9M7IwlF0eQ3HTqR6bXWm574=";
};
patches = [
@@ -30,6 +30,8 @@ stdenv.mkDerivation (finalAttrs: {
cmakeFlags = [
(lib.cmakeBool "CROW_BUILD_EXAMPLES" false)
# Requires more non-trivial patches to get around CPM
(lib.cmakeBool "CROW_GENERATE_SBOM" false)
];
doCheck = true;
-2
View File
@@ -21,7 +21,6 @@
speexdsp,
hamlib_4,
wxGTK32,
sioclient,
dbus,
apple-sdk_15,
nix-update-script,
@@ -133,7 +132,6 @@ stdenv.mkDerivation (finalAttrs: {
speexdsp
hamlib_4
wxGTK32
sioclient
python3.pkgs.numpy
]
++ (
+4 -3
View File
@@ -8,7 +8,7 @@
qt6,
libusb1,
protobuf,
asio,
asio_1_32_0,
}:
stdenv.mkDerivation (finalAttrs: {
@@ -25,7 +25,7 @@ stdenv.mkDerivation (finalAttrs: {
postPatch = ''
substituteInPlace {hidviz,libhidx{,/libhidx{,_server{,_daemon}}}}/CMakeLists.txt \
--replace-fail 'cmake_minimum_required(VERSION 3.2)' 'cmake_minimum_required(VERSION 3.10)'
substituteInPlace libhidx/cmake_modules/Findasio.cmake --replace-fail '/usr/include/asio' '${lib.getDev asio}/include/asio'
substituteInPlace libhidx/cmake_modules/Findasio.cmake --replace-fail '/usr/include/asio' '${lib.getDev asio_1_32_0}/include/asio'
substituteInPlace libhidx/libhidx/src/Connector.cc --replace-fail '/usr/local/libexec' "$out/libexec"
'';
@@ -39,7 +39,8 @@ stdenv.mkDerivation (finalAttrs: {
qt6.qtwebengine
libusb1
protobuf
asio
# depends on io_service
asio_1_32_0
];
meta = with lib; {
+6
View File
@@ -22,6 +22,12 @@ stdenv.mkDerivation rec {
hash = "sha256-AhByaw1KnEDuRfKiN+/vQMbkG0BJ6Z3+h+QT8scFzAY=";
};
patches = [
# https://github.com/STEllAR-GROUP/hpx/pull/6731
# Fix build with asio >= 1.34.0
./remove_deprecated_asio_features.patch
];
propagatedBuildInputs = [ hwloc ];
buildInputs = [
asio
@@ -0,0 +1,557 @@
From f073c54f9c69108707dc477c890592049fcd95db Mon Sep 17 00:00:00 2001
From: Hartmut Kaiser <hartmut.kaiser@gmail.com>
Date: Mon, 30 Jun 2025 09:49:03 -0500
Subject: [PATCH 1/2] Removing deprecated Asio features
Signed-off-by: Hartmut Kaiser <hartmut.kaiser@gmail.com>
---
.../iostreams/src/server/output_stream.cpp | 30 ++++--
examples/async_io/async_io_low_level.cpp | 5 +
libs/core/asio/include/hpx/asio/asio_util.hpp | 6 ++
libs/core/asio/src/asio_util.cpp | 102 +++++++++++++++++-
libs/core/executors/src/service_executors.cpp | 10 +-
.../hpx/io_service/io_service_pool.hpp | 4 +
libs/core/io_service/src/io_service_pool.cpp | 4 +
libs/core/runtime_local/src/pool_timer.cpp | 2 +-
.../src/parcelport_gasnet.cpp | 6 ++
.../parcelport_lci/src/parcelport_lci.cpp | 13 ++-
.../parcelport_mpi/src/parcelport_mpi.cpp | 6 ++
11 files changed, 168 insertions(+), 20 deletions(-)
diff --git a/components/iostreams/src/server/output_stream.cpp b/components/iostreams/src/server/output_stream.cpp
index dd0a519b27f8..40f8ee0758a3 100644
--- a/components/iostreams/src/server/output_stream.cpp
+++ b/components/iostreams/src/server/output_stream.cpp
@@ -34,7 +34,7 @@ namespace hpx::iostreams::detail {
ar << valid;
if (valid)
{
- ar& data_;
+ ar & data_;
}
}
@@ -44,7 +44,7 @@ namespace hpx::iostreams::detail {
ar >> valid;
if (valid)
{
- ar& data_;
+ ar & data_;
}
}
} // namespace hpx::iostreams::detail
@@ -53,23 +53,29 @@ namespace hpx::iostreams::server {
///////////////////////////////////////////////////////////////////////////
void output_stream::call_write_async(std::uint32_t locality_id,
std::uint64_t count, detail::buffer const& in, hpx::id_type /*this_id*/)
- { // {{{
+ {
// Perform the IO operation.
pending_output_.output(locality_id, count, in, write_f, mtx_);
- } // }}}
+ }
void output_stream::write_async(std::uint32_t locality_id,
std::uint64_t count, detail::buffer const& buf_in)
- { // {{{
+ {
// Perform the IO in another OS thread.
detail::buffer in(buf_in);
// we need to capture the GID of the component to keep it alive long
// enough.
hpx::id_type this_id = this->get_id();
+#if ASIO_VERSION >= 103400
+ asio::post(hpx::get_thread_pool("io_pool")->get_io_service(),
+ hpx::bind_front(&output_stream::call_write_async, this, locality_id,
+ count, HPX_MOVE(in), HPX_MOVE(this_id)));
+#else
hpx::get_thread_pool("io_pool")->get_io_service().post(
hpx::bind_front(&output_stream::call_write_async, this, locality_id,
count, HPX_MOVE(in), HPX_MOVE(this_id)));
- } // }}}
+#endif
+ }
///////////////////////////////////////////////////////////////////////////
void output_stream::call_write_sync(std::uint32_t locality_id,
@@ -86,16 +92,22 @@ namespace hpx::iostreams::server {
void output_stream::write_sync(std::uint32_t locality_id,
std::uint64_t count, detail::buffer const& buf_in)
- { // {{{
+ {
// Perform the IO in another OS thread.
detail::buffer in(buf_in);
+#if ASIO_VERSION >= 103400
+ asio::post(hpx::get_thread_pool("io_pool")->get_io_service(),
+ hpx::bind_front(&output_stream::call_write_sync, this, locality_id,
+ count, std::ref(in),
+ threads::thread_id_ref_type(threads::get_outer_self_id())));
+#else
hpx::get_thread_pool("io_pool")->get_io_service().post(
hpx::bind_front(&output_stream::call_write_sync, this, locality_id,
count, std::ref(in),
threads::thread_id_ref_type(threads::get_outer_self_id())));
-
+#endif
// Sleep until the worker thread wakes us up.
this_thread::suspend(threads::thread_schedule_state::suspended,
"output_stream::write_sync");
- } // }}}
+ }
} // namespace hpx::iostreams::server
diff --git a/examples/async_io/async_io_low_level.cpp b/examples/async_io/async_io_low_level.cpp
index 75312984bf7f..153e5d124930 100644
--- a/examples/async_io/async_io_low_level.cpp
+++ b/examples/async_io/async_io_low_level.cpp
@@ -39,7 +39,12 @@ hpx::future<int> async_io(char const* string_to_write)
hpx::get_runtime().get_thread_pool("io_pool");
// ... and schedule the handler to run on one of its OS-threads.
+#if ASIO_VERSION >= 103400
+ asio::post(
+ pool->get_io_service(), hpx::bind(&do_async_io, string_to_write, p));
+#else
pool->get_io_service().post(hpx::bind(&do_async_io, string_to_write, p));
+#endif
return p->get_future();
}
diff --git a/libs/core/asio/include/hpx/asio/asio_util.hpp b/libs/core/asio/include/hpx/asio/asio_util.hpp
index 286536692102..e79bb15c4cb1 100644
--- a/libs/core/asio/include/hpx/asio/asio_util.hpp
+++ b/libs/core/asio/include/hpx/asio/asio_util.hpp
@@ -17,6 +17,7 @@
#endif
#include <asio/io_context.hpp>
#include <asio/ip/tcp.hpp>
+#include <asio/version.hpp>
/* The asio support includes termios.h.
* The termios.h file on ppc64le defines these macros, which
@@ -50,7 +51,12 @@ namespace hpx::util {
[[nodiscard]] HPX_CORE_EXPORT std::string cleanup_ip_address(
std::string const& addr);
+#if ASIO_VERSION >= 103400
+ using endpoint_iterator_type =
+ asio::ip::basic_resolver_iterator<asio::ip::tcp>;
+#else
using endpoint_iterator_type = asio::ip::tcp::resolver::iterator;
+#endif
[[nodiscard]] endpoint_iterator_type HPX_CORE_EXPORT connect_begin(
std::string const& address, std::uint16_t port,
diff --git a/libs/core/asio/src/asio_util.cpp b/libs/core/asio/src/asio_util.cpp
index b5443e5dfa4e..bd248f3345d0 100644
--- a/libs/core/asio/src/asio_util.cpp
+++ b/libs/core/asio/src/asio_util.cpp
@@ -54,8 +54,13 @@ namespace hpx::util {
{
using namespace asio::ip;
std::error_code ec;
+#if ASIO_VERSION >= 103400
+ address_v4 const addr4 = //-V821
+ make_address_v4(addr.c_str(), ec);
+#else
address_v4 const addr4 = //-V821
address_v4::from_string(addr.c_str(), ec);
+#endif
if (!ec)
{ // it's an IPV4 address
ep = tcp::endpoint(address(addr4), port);
@@ -64,8 +69,13 @@ namespace hpx::util {
if (!force_ipv4)
{
+#if ASIO_VERSION >= 103400
+ address_v6 const addr6 = //-V821
+ make_address_v6(addr.c_str(), ec);
+#else
address_v6 const addr6 = //-V821
address_v6::from_string(addr.c_str(), ec);
+#endif
if (!ec)
{ // it's an IPV6 address
ep = tcp::endpoint(address(addr6), port);
@@ -108,8 +118,26 @@ namespace hpx::util {
{
// resolve the given address
tcp::resolver resolver(io_service);
- tcp::resolver::query query(hostname, std::to_string(port));
+#if ASIO_VERSION >= 103400
+ auto resolver_results = resolver.resolve(
+ asio::ip::tcp::v4(), hostname, std::to_string(port));
+
+ auto it = resolver_results.begin();
+ auto end = resolver_results.begin();
+
+ // skip ipv6 results, if required
+ if (it == end && !force_ipv4)
+ {
+ resolver_results = resolver.resolve(
+ asio::ip::tcp::v6(), hostname, std::to_string(port));
+ it = resolver_results.begin();
+ }
+
+ HPX_ASSERT(it != end);
+ return *it;
+#else
+ tcp::resolver::query query(hostname, std::to_string(port));
asio::ip::tcp::resolver::iterator it = resolver.resolve(query);
// skip ipv6 results, if required
@@ -121,9 +149,9 @@ namespace hpx::util {
++it;
}
}
-
HPX_ASSERT(it != asio::ip::tcp::resolver::iterator());
return *it;
+#endif
}
catch (std::system_error const&)
{
@@ -149,8 +177,21 @@ namespace hpx::util {
{
asio::io_context io_service;
tcp::resolver resolver(io_service);
+
+#if ASIO_VERSION >= 103400
+ auto resolver_results = resolver.resolve(
+ asio::ip::tcp::v4(), asio::ip::host_name(), "");
+ auto it = resolver_results.begin();
+ if (it == resolver_results.end())
+ {
+ resolver_results = resolver.resolve(
+ asio::ip::tcp::v6(), asio::ip::host_name(), "");
+ it = resolver_results.begin();
+ }
+#else
tcp::resolver::query query(asio::ip::host_name(), "");
tcp::resolver::iterator it = resolver.resolve(query);
+#endif
tcp::endpoint endpoint = *it;
return endpoint.address().to_string();
}
@@ -230,8 +271,14 @@ namespace hpx::util {
tcp::endpoint ep;
if (util::get_endpoint(address, port, ep))
{
+#if ASIO_VERSION >= 103400
+ auto resolver_results =
+ tcp::resolver::results_type::create(ep, address, port_str);
+ return resolver_results.begin();
+#else
return {
tcp::resolver::results_type::create(ep, address, port_str)};
+#endif
}
}
catch (std::system_error const&)
@@ -244,10 +291,24 @@ namespace hpx::util {
{
// resolve the given address
tcp::resolver resolver(io_service);
+
+#if ASIO_VERSION >= 103400
+ auto resolver_results = resolver.resolve(asio::ip::tcp::v4(),
+ !address.empty() ? address : asio::ip::host_name(), port_str);
+ auto it = resolver_results.begin();
+ if (it == resolver_results.end())
+ {
+ resolver_results = resolver.resolve(asio::ip::tcp::v6(),
+ !address.empty() ? address : asio::ip::host_name(),
+ port_str);
+ it = resolver_results.begin();
+ }
+ return it;
+#else
tcp::resolver::query query(
!address.empty() ? address : asio::ip::host_name(), port_str);
-
return {resolver.resolve(query)};
+#endif
}
catch (std::system_error const&)
{
@@ -276,8 +337,14 @@ namespace hpx::util {
tcp::endpoint ep;
if (util::get_endpoint(address, port, ep))
{
+#if ASIO_VERSION >= 103400
+ auto resolver_results =
+ tcp::resolver::results_type::create(ep, address, port_str);
+ return resolver_results.begin();
+#else
return {
tcp::resolver::results_type::create(ep, address, port_str)};
+#endif
}
}
catch (std::system_error const&)
@@ -290,9 +357,21 @@ namespace hpx::util {
{
// resolve the given address
tcp::resolver resolver(io_service);
+#if ASIO_VERSION >= 103400
+ auto resolver_results =
+ resolver.resolve(asio::ip::tcp::v4(), address, port_str);
+ auto it = resolver_results.begin();
+ if (it == resolver_results.end())
+ {
+ resolver_results =
+ resolver.resolve(asio::ip::tcp::v6(), address, port_str);
+ it = resolver_results.begin();
+ }
+ return it;
+#else
tcp::resolver::query query(address, port_str);
-
return {resolver.resolve(query)};
+#endif
}
catch (std::system_error const&)
{
@@ -306,9 +385,22 @@ namespace hpx::util {
{
// resolve the given address
tcp::resolver resolver(io_service);
- tcp::resolver::query query(asio::ip::host_name(), port_str);
+#if ASIO_VERSION >= 103400
+ auto resolver_results = resolver.resolve(
+ asio::ip::tcp::v4(), asio::ip::host_name(), port_str);
+ auto it = resolver_results.begin();
+ if (it == resolver_results.end())
+ {
+ resolver_results = resolver.resolve(
+ asio::ip::tcp::v6(), asio::ip::host_name(), port_str);
+ it = resolver_results.begin();
+ }
+ return it;
+#else
+ tcp::resolver::query query(asio::ip::host_name(), port_str);
return {resolver.resolve(query)};
+#endif
}
catch (std::system_error const&)
{
diff --git a/libs/core/executors/src/service_executors.cpp b/libs/core/executors/src/service_executors.cpp
index 4e3ba88a2392..3e39e59ede45 100644
--- a/libs/core/executors/src/service_executors.cpp
+++ b/libs/core/executors/src/service_executors.cpp
@@ -1,4 +1,4 @@
-// Copyright (c) 2023 Hartmut Kaiser
+// Copyright (c) 2023-2025 Hartmut Kaiser
//
// SPDX-License-Identifier: BSL-1.0
// Distributed under the Boost Software License, Version 1.0. (See accompanying
@@ -10,12 +10,20 @@
#include <hpx/io_service/io_service_pool.hpp>
#include <asio/io_context.hpp>
+#include <asio/version.hpp>
+#if ASIO_VERSION >= 103400
+#include <asio/post.hpp>
+#endif
namespace hpx::parallel::execution::detail {
void service_executor::post(
hpx::util::io_service_pool* pool, hpx::function<void()>&& f)
{
+#if ASIO_VERSION >= 103400
+ asio::post(pool->get_io_service(), HPX_MOVE(f));
+#else
pool->get_io_service().post(HPX_MOVE(f));
+#endif
}
} // namespace hpx::parallel::execution::detail
diff --git a/libs/core/io_service/include/hpx/io_service/io_service_pool.hpp b/libs/core/io_service/include/hpx/io_service/io_service_pool.hpp
index 8d800f36d18d..8441886b9a1d 100644
--- a/libs/core/io_service/include/hpx/io_service/io_service_pool.hpp
+++ b/libs/core/io_service/include/hpx/io_service/io_service_pool.hpp
@@ -19,6 +19,10 @@
#endif
#include <asio/executor_work_guard.hpp>
#include <asio/io_context.hpp>
+#include <asio/version.hpp>
+#if ASIO_VERSION >= 103400
+#include <asio/post.hpp>
+#endif
// The boost asio support includes termios.h. The termios.h file on ppc64le
// defines these macros, which are also used by blaze, blaze_tensor as Template
diff --git a/libs/core/io_service/src/io_service_pool.cpp b/libs/core/io_service/src/io_service_pool.cpp
index 44eb3318c04b..ca2fe443e219 100644
--- a/libs/core/io_service/src/io_service_pool.cpp
+++ b/libs/core/io_service/src/io_service_pool.cpp
@@ -259,7 +259,11 @@ namespace hpx::util {
for (std::size_t i = 0; i < pool_size_; ++i)
{
work_.emplace_back(initialize_work(*io_services_[i]));
+#if ASIO_VERSION >= 103400
+ io_services_[i]->restart();
+#else
io_services_[i]->reset();
+#endif
}
continue_barrier_->wait();
diff --git a/libs/core/runtime_local/src/pool_timer.cpp b/libs/core/runtime_local/src/pool_timer.cpp
index 7487b5a72692..d2723d2452e8 100644
--- a/libs/core/runtime_local/src/pool_timer.cpp
+++ b/libs/core/runtime_local/src/pool_timer.cpp
@@ -146,7 +146,7 @@ namespace hpx::util::detail {
}
HPX_ASSERT(timer_ != nullptr);
- timer_->expires_from_now(time_duration.value());
+ timer_->expires_at(time_duration.from_now());
timer_->async_wait(hpx::bind_front( //-V779
&pool_timer::timer_handler, this->shared_from_this()));
diff --git a/libs/full/parcelport_gasnet/src/parcelport_gasnet.cpp b/libs/full/parcelport_gasnet/src/parcelport_gasnet.cpp
index 77da0c839b16..16160af101b7 100644
--- a/libs/full/parcelport_gasnet/src/parcelport_gasnet.cpp
+++ b/libs/full/parcelport_gasnet/src/parcelport_gasnet.cpp
@@ -142,8 +142,14 @@ namespace hpx::parcelset {
for (std::size_t i = 0; i != io_service_pool_.size(); ++i)
{
+#if ASIO_VERSION >= 103400
+ asio::post(
+ io_service_pool_.get_io_service(static_cast<int>(i)),
+ hpx::bind(&parcelport::io_service_work, this));
+#else
io_service_pool_.get_io_service(int(i)).post(
hpx::bind(&parcelport::io_service_work, this));
+#endif
}
return true;
}
diff --git a/libs/full/parcelport_lci/src/parcelport_lci.cpp b/libs/full/parcelport_lci/src/parcelport_lci.cpp
index d9083191376a..40cf14faba5c 100644
--- a/libs/full/parcelport_lci/src/parcelport_lci.cpp
+++ b/libs/full/parcelport_lci/src/parcelport_lci.cpp
@@ -98,8 +98,13 @@ namespace hpx::parcelset::policies::lci {
sender_p->run();
for (std::size_t i = 0; i != io_service_pool_.size(); ++i)
{
+#if ASIO_VERSION >= 103400
+ asio::post(io_service_pool_.get_io_service(static_cast<int>(i)),
+ hpx::bind(&parcelport::io_service_work, this));
+#else
io_service_pool_.get_io_service(int(i)).post(
hpx::bind(&parcelport::io_service_work, this));
+#endif
}
return true;
}
@@ -167,10 +172,10 @@ namespace hpx::parcelset::policies::lci {
static_cast<int>(hpx::get_local_worker_thread_num());
HPX_ASSERT(prg_thread_id < config_t::progress_thread_num);
for (int i = prg_thread_id * config_t::ndevices /
- config_t::progress_thread_num;
- i < (prg_thread_id + 1) * config_t::ndevices /
- config_t::progress_thread_num;
- ++i)
+ config_t::progress_thread_num;
+ i < (prg_thread_id + 1) * config_t::ndevices /
+ config_t::progress_thread_num;
+ ++i)
{
devices_to_progress.push_back(&devices[i]);
}
diff --git a/libs/full/parcelport_mpi/src/parcelport_mpi.cpp b/libs/full/parcelport_mpi/src/parcelport_mpi.cpp
index e30025899e76..c319c54df7ef 100644
--- a/libs/full/parcelport_mpi/src/parcelport_mpi.cpp
+++ b/libs/full/parcelport_mpi/src/parcelport_mpi.cpp
@@ -181,8 +181,14 @@ namespace hpx::parcelset {
for (std::size_t i = 0; i != io_service_pool_.size(); ++i)
{
+#if ASIO_VERSION >= 103400
+ asio::post(
+ io_service_pool_.get_io_service(static_cast<int>(i)),
+ hpx::bind(&parcelport::io_service_work, this));
+#else
io_service_pool_.get_io_service(static_cast<int>(i))
.post(hpx::bind(&parcelport::io_service_work, this));
+#endif
}
return true;
}
From 85805f56579fe6fa6c5905daa0d228eba26c40c3 Mon Sep 17 00:00:00 2001
From: Hartmut Kaiser <hartmut.kaiser@gmail.com>
Date: Mon, 30 Jun 2025 10:31:26 -0500
Subject: [PATCH 2/2] Changing some CIs to use Asio 1.34.2
Signed-off-by: Hartmut Kaiser <hartmut.kaiser@gmail.com>
---
.github/workflows/linux_debug.yml | 1 +
.github/workflows/macos_debug.yml | 1 +
.github/workflows/windows_debug_vs2022.yml | 1 +
libs/full/parcelport_lci/src/parcelport_lci.cpp | 2 ++
4 files changed, 5 insertions(+)
diff --git a/.github/workflows/linux_debug.yml b/.github/workflows/linux_debug.yml
index 551e6d7215b2..0048b533326f 100644
--- a/.github/workflows/linux_debug.yml
+++ b/.github/workflows/linux_debug.yml
@@ -26,6 +26,7 @@ jobs:
-DCMAKE_BUILD_TYPE=Debug \
-DHPX_WITH_MALLOC=system \
-DHPX_WITH_FETCH_ASIO=ON \
+ -DHPX_WITH_ASIO_TAG=asio-1-34-2 \
-DHPX_WITH_EXAMPLES=ON \
-DHPX_WITH_TESTS=ON \
-DHPX_WITH_TESTS_MAX_THREADS_PER_LOCALITY=2 \
diff --git a/.github/workflows/macos_debug.yml b/.github/workflows/macos_debug.yml
index 7d0936730d54..5406fc0be0f1 100644
--- a/.github/workflows/macos_debug.yml
+++ b/.github/workflows/macos_debug.yml
@@ -29,6 +29,7 @@ jobs:
-GNinja \
-DCMAKE_BUILD_TYPE=Debug \
-DHPX_WITH_FETCH_ASIO=ON \
+ -DHPX_WITH_ASIO_TAG=asio-1-34-2 \
-DHPX_WITH_EXAMPLES=ON \
-DHPX_WITH_TESTS=ON \
-DHPX_WITH_TESTS_MAX_THREADS_PER_LOCALITY=3 \
diff --git a/.github/workflows/windows_debug_vs2022.yml b/.github/workflows/windows_debug_vs2022.yml
index cebecd992140..f91765418163 100644
--- a/.github/workflows/windows_debug_vs2022.yml
+++ b/.github/workflows/windows_debug_vs2022.yml
@@ -31,6 +31,7 @@ jobs:
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_TOOLCHAIN_FILE='C:/projects/vcpkg/scripts/buildsystems/vcpkg.cmake' \
-DHPX_WITH_FETCH_ASIO=ON \
+ -DHPX_WITH_ASIO_TAG=asio-1-34-2 \
-DHPX_WITH_EXAMPLES=ON \
-DHPX_WITH_TESTS=ON \
-DHPX_WITH_TESTS_EXAMPLES=ON \
diff --git a/libs/full/parcelport_lci/src/parcelport_lci.cpp b/libs/full/parcelport_lci/src/parcelport_lci.cpp
index 40cf14faba5c..b9d1bcf293e9 100644
--- a/libs/full/parcelport_lci/src/parcelport_lci.cpp
+++ b/libs/full/parcelport_lci/src/parcelport_lci.cpp
@@ -171,6 +171,7 @@ namespace hpx::parcelset::policies::lci {
int prg_thread_id =
static_cast<int>(hpx::get_local_worker_thread_num());
HPX_ASSERT(prg_thread_id < config_t::progress_thread_num);
+ // clang-format off
for (int i = prg_thread_id * config_t::ndevices /
config_t::progress_thread_num;
i < (prg_thread_id + 1) * config_t::ndevices /
@@ -179,6 +180,7 @@ namespace hpx::parcelset::policies::lci {
{
devices_to_progress.push_back(&devices[i]);
}
+ // clang-format on
}
}
}
+3 -2
View File
@@ -2,7 +2,7 @@
lib,
stdenv,
fetchFromGitHub,
asio,
asio_1_32_0,
boost,
check,
openssl,
@@ -25,7 +25,8 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ cmake ];
buildInputs = [
asio
# depends on io_service
asio_1_32_0
boost.dev
check
openssl
+3 -2
View File
@@ -5,7 +5,7 @@
fetchpatch,
cmake,
boost,
asio,
asio_1_32_0,
openssl,
zlib,
}:
@@ -34,7 +34,8 @@ stdenv.mkDerivation rec {
nativeBuildInputs = [ cmake ];
buildInputs = [
boost
asio
# Depends on io_service
asio_1_32_0
openssl
zlib
];
+4 -3
View File
@@ -2,7 +2,7 @@
lib,
stdenv,
fetchFromGitHub,
asio,
asio_1_32_0,
glib,
jsoncpp,
libcap_ng,
@@ -81,7 +81,8 @@ stdenv.mkDerivation rec {
];
buildInputs = [
asio
# Depends on io_service
asio_1_32_0
glib
jsoncpp
libcap_ng
@@ -101,7 +102,7 @@ stdenv.mkDerivation rec {
(lib.mesonOption "bash-completion" "enabled")
(lib.mesonOption "test_programs" "disabled")
(lib.mesonOption "unit_tests" "disabled")
(lib.mesonOption "asio_path" "${asio}")
(lib.mesonOption "asio_path" "${asio_1_32_0}")
(lib.mesonOption "dbus_policy_dir" "${placeholder "out"}/share/dbus-1/system.d")
(lib.mesonOption "dbus_system_service_dir" "${placeholder "out"}/share/dbus-1/system-services")
(lib.mesonOption "systemd_system_unit_dir" "${placeholder "out"}/lib/systemd/system")
+3 -2
View File
@@ -5,7 +5,7 @@
fetchFromGitHub,
cmake,
git,
asio,
asio_1_32_0,
catch2,
spdlog,
udev,
@@ -47,7 +47,8 @@ stdenv.mkDerivation rec {
git
];
buildInputs = [
asio
# Depends on io_service
asio_1_32_0
catch2
spdlog
];
-39
View File
@@ -1,39 +0,0 @@
{
lib,
stdenv,
fetchFromGitHub,
cmake,
asio,
rapidjson,
websocketpp,
}:
stdenv.mkDerivation {
pname = "sioclient";
version = "3.1.0-unstable-2023-11-10";
src = fetchFromGitHub {
owner = "socketio";
repo = "socket.io-client-cpp";
rev = "0dc2f7afea17a0e5bfb5e9b1e6d6f26ab1455cef";
hash = "sha256-iUKWDv/CS2e68cCSM0QUobkfz2A8ZjJ7S0zw7rowQJ0=";
};
nativeBuildInputs = [
cmake
];
buildInputs = [
asio
rapidjson
websocketpp
];
meta = with lib; {
description = "C++11 implementation of Socket.IO client";
homepage = "https://github.com/socketio/socket.io-client-cpp";
license = licenses.mit;
maintainers = with maintainers; [ wegank ];
platforms = platforms.unix;
};
}
+4
View File
@@ -18,10 +18,14 @@ stdenv.mkDerivation rec {
};
patches = [
# Fix build with cmake4
(fetchpatch {
url = "https://github.com/zaphoyd/websocketpp/commit/deb0a334471362608958ce59a6b0bcd3e5b73c24.patch?full_index=1";
hash = "sha256-bFCHwtRuCFz9vr4trmmBLziPSlEx6SNjsTcBv9zV8go=";
})
# Fix build with boost187/newer asio
# https://github.com/zaphoyd/websocketpp/pull/1164
./websocketpp-0.8.2-boost-1.87-compat.patch
];
nativeBuildInputs = [ cmake ];
File diff suppressed because it is too large Load Diff
-9
View File
@@ -1,9 +0,0 @@
{ callPackage, ... }@args:
callPackage ./generic.nix (
args
// {
version = "1.10.8";
sha256 = "0jgdl4fxw0hwy768rl3lhdc0czz7ak7czf3dg10j21pdpfpfvpi6";
}
)
@@ -1,9 +0,0 @@
{ callPackage, ... }@args:
callPackage ./generic.nix (
args
// {
version = "1.24.0";
sha256 = "sha256-iXaBLCShGGAPb88HGiBgZjCmmv5MCr7jsN6lKOaCxYU=";
}
)
@@ -1,32 +0,0 @@
{
lib,
stdenv,
fetchurl,
boost,
openssl,
version,
sha256,
...
}:
stdenv.mkDerivation {
pname = "asio";
inherit version;
src = fetchurl {
url = "mirror://sourceforge/asio/asio-${version}.tar.bz2";
inherit sha256;
};
propagatedBuildInputs = [ boost ];
buildInputs = [ openssl ];
meta = with lib; {
homepage = "http://asio.sourceforge.net/";
description = "Cross-platform C++ library for network and low-level I/O programming";
license = licenses.boost;
broken = stdenv.hostPlatform.isDarwin && lib.versionOlder version "1.16.1";
platforms = platforms.unix;
};
}
@@ -1,8 +1,9 @@
{
lib,
asioSupport ? true,
asio,
asio_1_32_0,
boost,
boost186,
log4cxxSupport ? false,
log4cxx,
snappySupport ? false,
@@ -23,30 +24,6 @@
stdenv,
}:
let
/*
Check if null or false
Example:
let result = enableFeature null
=> "OFF"
let result = enableFeature false
=> "OFF"
let result = enableFeature «derivation»
=> "ON"
*/
enableCmakeFeature = p: if (p == null || p == false) then "OFF" else "ON";
defaultOptionals = [
protobuf
]
++ lib.optional snappySupport snappy.dev
++ lib.optional zlibSupport zlib
++ lib.optional zstdSupport zstd
++ lib.optional log4cxxSupport log4cxx
++ lib.optional asioSupport asio
++ lib.optional (!asioSupport) boost;
in
stdenv.mkDerivation (finalAttrs: {
pname = "libpulsar";
version = "3.7.2";
@@ -61,21 +38,38 @@ stdenv.mkDerivation (finalAttrs: {
nativeBuildInputs = [
cmake
pkg-config
protobuf # protoc
]
++ defaultOptionals
++ lib.optional gtestSupport gtest.dev;
buildInputs = [
jsoncpp
openssl
curl
protobuf
]
++ defaultOptionals;
++ lib.optional snappySupport snappy.dev
++ lib.optional zlibSupport zlib
++ lib.optional zstdSupport zstd
++ lib.optional log4cxxSupport log4cxx
++ lib.optionals asioSupport [
# io_service was removed in 1.33.0
asio_1_32_0
boost
]
++ lib.optionals (!asioSupport) [
# io_service was removed in 1.87.0
boost186
];
strictDeps = true;
cmakeFlags = [
"-DBUILD_TESTS=${enableCmakeFeature gtestSupport}"
"-DUSE_LOG4CXX=${enableCmakeFeature log4cxxSupport}"
"-DUSE_ASIO=${enableCmakeFeature asioSupport}"
(lib.cmakeBool "BUILD_TESTS" gtestSupport)
(lib.cmakeBool "USE_LOG4CXX" log4cxxSupport)
# We enable USE_ASIO here so at least we can
# have newer boost minus boost::asio
(lib.cmakeBool "USE_ASIO" asioSupport)
];
doInstallCheck = true;
+2
View File
@@ -309,6 +309,7 @@ mapAliases {
artichoke = throw "artichoke has been removed due to being archived upstream."; # Added 2025-11-04
artim-dark = aritim-dark; # Added 2025-07-27
aseprite-unfree = throw "'aseprite-unfree' has been renamed to/replaced by 'aseprite'"; # Converted to throw 2025-10-27
asio_1_10 = throw "'asio_1_10' has been removed as it is outdated and unused. Use 'asio' instead"; # Added 2025-12-03
asitop = throw "'asitop' has been renamed to/replaced by 'macpm'"; # Converted to throw 2025-10-27
asterisk_18 = throw "asterisk_18: Asterisk 18 is end of life and has been removed"; # Added 2025-10-19
atlassian-cli = appfire-cli; # Added 2025-09-29
@@ -1435,6 +1436,7 @@ mapAliases {
sierra-breeze-enhanced = throw "'sierra-breeze-enhanced' has been removed, as it is only compatible with Plasma 5, which is EOL"; # Added 2025-08-20
signal-desktop-source = throw "'signal-desktop-source' has been renamed to/replaced by 'signal-desktop'"; # Converted to throw 2025-10-27
simplesamlphp = throw "'simplesamlphp' was removed because it was unmaintained in nixpkgs"; # Added 2025-10-17
sioclient = throw "'sioclient' has been removed as it is no longer used by freedv, and doesn't build with newer asio"; # Added 2025-12-03
siproxd = throw "'siproxd' has been removed as it was unmaintained and incompatible with newer libosip versions"; # Added 2025-05-18
sipwitch = throw "'sipwitch' has been removed because it has been marked as broken since at least November 2024."; # Added 2025-10-01
sisco.lv2 = throw "'sisco.lv2' has been removed as it was unmaintained and broken"; # Added 2025-08-26
+2 -2
View File
@@ -6850,8 +6850,8 @@ with pkgs;
argparse-manpage = with python3Packages; toPythonApplication argparse-manpage;
asio_1_10 = callPackage ../development/libraries/asio/1.10.nix { };
asio = callPackage ../development/libraries/asio { };
asio_1_32_0 = callPackage ../by-name/as/asio/package.nix { asioVersion = "1.32.0"; };
asio_1_36_0 = callPackage ../by-name/as/asio/package.nix { asioVersion = "1.36.0"; };
aspell = callPackage ../development/libraries/aspell { };