public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
* [rpms/hpx] rawhide: Fix build with asio-1.38.1
@ 2026-08-21 13:51 Christoph Junghans
  0 siblings, 0 replies; only message in thread
From: Christoph Junghans @ 2026-08-21 13:51 UTC (permalink / raw)
  To: git-commits

            A new commit has been pushed.

            Repo   : rpms/hpx
            Branch : rawhide
            Commit : 32238e23ab7a9331f856ff9328a4e484a3e2d7cc
            Author : Christoph Junghans <junghans@votca.org>
            Date   : 2026-08-21T07:51:50-06:00
            Stats  : +1831/-1 in 2 file(s)
            URL    : https://src.fedoraproject.org/rpms/hpx/c/32238e23ab7a9331f856ff9328a4e484a3e2d7cc?branch=rawhide

            Log:
            Fix build with asio-1.38.1

Fixes: rhbz#2504129

---
diff --git a/7463.diff b/7463.diff
new file mode 100644
index 0000000..a3aa42b
--- /dev/null
+++ b/7463.diff
@@ -0,0 +1,1824 @@
+diff --git a/.github/workflows/windows_clang_debug.yml b/.github/workflows/windows_clang_debug.yml
+index b1ec565b812d..2329b25bb143 100644
+--- a/.github/workflows/windows_clang_debug.yml
++++ b/.github/workflows/windows_clang_debug.yml
+@@ -9,20 +9,23 @@ name: Windows CI (ClangCL, Debug)
+ 
+ on: [pull_request]
+ 
++concurrency:
++  group: ${{ github.workflow }}-${{ github.ref }}
++  cancel-in-progress: true
++
+ jobs:
+   build:
+-    runs-on: windows-latest
++    runs-on: windows-2022
+ 
+     steps:
+-    - uses: actions/checkout@v4
+-    - uses: jwlawson/actions-setup-cmake@v2.0
+-      with:
+-        cmake-version: '3.22.x'
++    - uses: actions/checkout@v7
++    - uses: lukka/get-cmake@v4.4.2
++
+     - name: Install dependencies
+       run: |
+         md C:\projects
+         $client = new-object System.Net.WebClient
+-        $client.DownloadFile("https://rostam.cct.lsu.edu/download/builder/vcpkg-export-hpx-dependencies-2024.7z","C:\projects\vcpkg-export-hpx-dependencies.7z")
++        $client.DownloadFile("https://rostam.cct.lsu.edu/download/builder/vcpkg-export-hpx-dependencies-2026.7z","C:\projects\vcpkg-export-hpx-dependencies.7z")
+         7z x C:\projects\vcpkg-export-hpx-dependencies.7z -y -oC:\projects\vcpkg
+     - name: Configure
+       shell: bash
+diff --git a/.github/workflows/windows_clang_release.yml b/.github/workflows/windows_clang_release.yml
+index c769c1bd42b7..7f2e8babea04 100644
+--- a/.github/workflows/windows_clang_release.yml
++++ b/.github/workflows/windows_clang_release.yml
+@@ -9,20 +9,23 @@ name: Windows CI (ClangCL, Release)
+ 
+ on: [pull_request]
+ 
++concurrency:
++  group: ${{ github.workflow }}-${{ github.ref }}
++  cancel-in-progress: true
++
+ jobs:
+   build:
+-    runs-on: windows-latest
++    runs-on: windows-2022
+ 
+     steps:
+-    - uses: actions/checkout@v4
+-    - uses: jwlawson/actions-setup-cmake@v2.0
+-      with:
+-        cmake-version: '3.22.x'
++    - uses: actions/checkout@v7
++    - uses: lukka/get-cmake@v4.4.2
++
+     - name: Install dependencies
+       run: |
+         md C:\projects
+         $client = new-object System.Net.WebClient
+-        $client.DownloadFile("https://rostam.cct.lsu.edu/download/builder/vcpkg-export-hpx-dependencies-2024.7z","C:\projects\vcpkg-export-hpx-dependencies.7z")
++        $client.DownloadFile("https://rostam.cct.lsu.edu/download/builder/vcpkg-export-hpx-dependencies-2026.7z","C:\projects\vcpkg-export-hpx-dependencies.7z")
+         7z x C:\projects\vcpkg-export-hpx-dependencies.7z -y -oC:\projects\vcpkg
+     - name: Configure
+       shell: bash
+diff --git a/.github/workflows/windows_debug_vs2019.yml b/.github/workflows/windows_debug_vs2019.yml
+index 864ccae71b0e..0972ee2f219f 100644
+--- a/.github/workflows/windows_debug_vs2019.yml
++++ b/.github/workflows/windows_debug_vs2019.yml
+@@ -5,29 +5,28 @@
+ # Distributed under the Boost Software License, Version 1.0. (See accompanying
+ # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ 
+-name: Windows CI (Debug, VS2019 toolset)
++name: Windows CI (Debug, VS2022 toolset, Local Runtime)
+ 
+ on: [pull_request]
+ 
+ jobs:
+   build:
+-    runs-on: windows-latest
++    runs-on: windows-2022
+ 
+     steps:
+-    - uses: actions/checkout@v4
+-    - uses: jwlawson/actions-setup-cmake@v2.0
+-      with:
+-        cmake-version: '3.22.x'
++    - uses: actions/checkout@v7
++    - uses: lukka/get-cmake@v4.4.2
++
+     - name: Install dependencies
+       run: |
+         md C:\projects
+         $client = new-object System.Net.WebClient
+-        $client.DownloadFile("https://rostam.cct.lsu.edu/download/builder/vcpkg-export-hpx-dependencies-2024.7z","C:\projects\vcpkg-export-hpx-dependencies.7z")
++        $client.DownloadFile("https://rostam.cct.lsu.edu/download/builder/vcpkg-export-hpx-dependencies-2026.7z","C:\projects\vcpkg-export-hpx-dependencies.7z")
+         7z x C:\projects\vcpkg-export-hpx-dependencies.7z -y -oC:\projects\vcpkg
+     - name: Configure
+       shell: bash
+       run: |
+-          cmake . -Bbuild -G'Visual Studio 17 2022' -T v142 \
++          cmake . -Bbuild -G'Visual Studio 17 2022' \
+               -DCMAKE_BUILD_TYPE=Debug \
+               -DCMAKE_TOOLCHAIN_FILE='C:/projects/vcpkg/scripts/buildsystems/vcpkg.cmake' \
+               -DHPX_WITH_FETCH_ASIO=ON \
+diff --git a/.github/workflows/windows_debug_vs2022.yml b/.github/workflows/windows_debug_vs2022.yml
+index cebecd992140..67e1e54f9ddf 100644
+--- a/.github/workflows/windows_debug_vs2022.yml
++++ b/.github/workflows/windows_debug_vs2022.yml
+@@ -9,20 +9,23 @@ name: Windows CI (Debug, VS2022 toolset)
+ 
+ on: [pull_request]
+ 
++concurrency:
++  group: ${{ github.workflow }}-${{ github.ref }}
++  cancel-in-progress: true
++
+ jobs:
+   build:
+-    runs-on: windows-latest
++    runs-on: windows-2022
+ 
+     steps:
+-    - uses: actions/checkout@v4
+-    - uses: jwlawson/actions-setup-cmake@v2.0
+-      with:
+-        cmake-version: '3.22.x'
++    - uses: actions/checkout@v7
++    - uses: lukka/get-cmake@v4.4.2
++
+     - name: Install dependencies
+       run: |
+         md C:\projects
+         $client = new-object System.Net.WebClient
+-        $client.DownloadFile("https://rostam.cct.lsu.edu/download/builder/vcpkg-export-hpx-dependencies-2024.7z","C:\projects\vcpkg-export-hpx-dependencies.7z")
++        $client.DownloadFile("https://rostam.cct.lsu.edu/download/builder/vcpkg-export-hpx-dependencies-2026.7z","C:\projects\vcpkg-export-hpx-dependencies.7z")
+         7z x C:\projects\vcpkg-export-hpx-dependencies.7z -y -oC:\projects\vcpkg
+     - name: Configure
+       shell: bash
+@@ -31,6 +34,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/.github/workflows/windows_debug_vs2022_fetch_boost.yml b/.github/workflows/windows_debug_vs2022_fetch_boost.yml
+index 05701b8d2ec3..682f9bfe37fa 100644
+--- a/.github/workflows/windows_debug_vs2022_fetch_boost.yml
++++ b/.github/workflows/windows_debug_vs2022_fetch_boost.yml
+@@ -8,20 +8,23 @@ name: Windows CI (Debug, VS2022 toolset) with Boost Fetch
+ 
+ on: [pull_request]
+ 
++concurrency:
++  group: ${{ github.workflow }}-${{ github.ref }}
++  cancel-in-progress: true
++
+ jobs:
+   build:
+-    runs-on: windows-latest
++    runs-on: windows-2022
+ 
+     steps:
+-      - uses: actions/checkout@v4
+-      - uses: jwlawson/actions-setup-cmake@v2.0
+-        with:
+-          cmake-version: '3.22.x'
++      - uses: actions/checkout@v7
++      - uses: lukka/get-cmake@v4.4.2
++
+       - name: Install dependencies
+         run: |
+           md C:\projects
+           $client = new-object System.Net.WebClient
+-          $client.DownloadFile("https://rostam.cct.lsu.edu/download/builder/vcpkg-export-hpx-dependencies-2024.7z","C:\projects\vcpkg-export-hpx-dependencies.7z")
++          $client.DownloadFile("https://rostam.cct.lsu.edu/download/builder/vcpkg-export-hpx-dependencies-2026.7z","C:\projects\vcpkg-export-hpx-dependencies.7z")
+           7z x C:\projects\vcpkg-export-hpx-dependencies.7z -y -oC:\projects\vcpkg
+       - name: Configure
+         shell: bash
+diff --git a/.github/workflows/windows_debug_vs2022_fetch_hwloc.yml b/.github/workflows/windows_debug_vs2022_fetch_hwloc.yml
+index cd5680f1b5da..5983a0146ace 100644
+--- a/.github/workflows/windows_debug_vs2022_fetch_hwloc.yml
++++ b/.github/workflows/windows_debug_vs2022_fetch_hwloc.yml
+@@ -9,20 +9,23 @@ name: Windows CI (Debug, VS2022 toolset) with HWLoc fetch
+ 
+ on: [pull_request]
+ 
++concurrency:
++  group: ${{ github.workflow }}-${{ github.ref }}
++  cancel-in-progress: true
++
+ jobs:
+   build:
+-    runs-on: windows-latest
++    runs-on: windows-2022
+ 
+     steps:
+-    - uses: actions/checkout@v4
+-    - uses: jwlawson/actions-setup-cmake@v2.0
+-      with:
+-        cmake-version: '3.22.x'
++    - uses: actions/checkout@v7
++    - uses: lukka/get-cmake@v4.4.2
++
+     - name: Install dependencies
+       run: |
+         md C:\projects
+         $client = new-object System.Net.WebClient
+-        $client.DownloadFile("https://rostam.cct.lsu.edu/download/builder/vcpkg-export-hpx-dependencies-2024.7z","C:\projects\vcpkg-export-hpx-dependencies.7z")
++        $client.DownloadFile("https://rostam.cct.lsu.edu/download/builder/vcpkg-export-hpx-dependencies-2026.7z","C:\projects\vcpkg-export-hpx-dependencies.7z")
+         7z x C:\projects\vcpkg-export-hpx-dependencies.7z -y -oC:\projects\vcpkg
+     - name: Configure
+       shell: bash
+diff --git a/.github/workflows/windows_release_2022.yml b/.github/workflows/windows_release_2022.yml
+index 14e96a29f989..0ff0708119af 100644
+--- a/.github/workflows/windows_release_2022.yml
++++ b/.github/workflows/windows_release_2022.yml
+@@ -8,20 +8,23 @@ name: Windows CI (Release, VS2022 toolset)
+ 
+ on: [pull_request]
+ 
++concurrency:
++  group: ${{ github.workflow }}-${{ github.ref }}
++  cancel-in-progress: true
++
+ jobs:
+   build:
+-    runs-on: windows-latest
++    runs-on: windows-2022
+ 
+     steps:
+-    - uses: actions/checkout@v4
+-    - uses: jwlawson/actions-setup-cmake@v2.0
+-      with:
+-        cmake-version: '3.22.x'
++    - uses: actions/checkout@v7
++    - uses: lukka/get-cmake@v4.4.2
++
+     - name: Install dependencies
+       run: |
+         md C:\projects
+         $client = new-object System.Net.WebClient
+-        $client.DownloadFile("https://rostam.cct.lsu.edu/download/builder/vcpkg-export-hpx-dependencies-2024.7z","C:\projects\vcpkg-export-hpx-dependencies.7z")
++        $client.DownloadFile("https://rostam.cct.lsu.edu/download/builder/vcpkg-export-hpx-dependencies-2026.7z","C:\projects\vcpkg-export-hpx-dependencies.7z")
+         7z x C:\projects\vcpkg-export-hpx-dependencies.7z -y -oC:\projects\vcpkg
+     - name: Configure
+       shell: bash
+diff --git a/.github/workflows/windows_release_gcc_mingw.yml b/.github/workflows/windows_release_gcc_mingw.yml
+index 138058764ef7..c61c96ae3ab1 100644
+--- a/.github/workflows/windows_release_gcc_mingw.yml
++++ b/.github/workflows/windows_release_gcc_mingw.yml
+@@ -8,15 +8,18 @@ name: Windows CI (Release, gcc/mingw toolset)
+ 
+ on: [pull_request]
+ 
++concurrency:
++  group: ${{ github.workflow }}-${{ github.ref }}
++  cancel-in-progress: true
++
+ jobs:
+   build:
+-    runs-on: windows-latest
++    runs-on: windows-2022
+ 
+     steps:
+-    - uses: actions/checkout@v4
+-    - uses: jwlawson/actions-setup-cmake@v2.0
+-      with:
+-        cmake-version: '3.22.x'
++    - uses: actions/checkout@v7
++    - uses: lukka/get-cmake@v4.4.2
++
+     - name: Install dependencies
+       run: |
+         choco install ninja -y
+diff --git a/.github/workflows/windows_release_static.yml b/.github/workflows/windows_release_static.yml
+index 1b0490d1b8d4..710213b2c423 100644
+--- a/.github/workflows/windows_release_static.yml
++++ b/.github/workflows/windows_release_static.yml
+@@ -9,20 +9,23 @@ name: Windows CI (Release, Static)
+ 
+ on: [pull_request]
+ 
++concurrency:
++  group: ${{ github.workflow }}-${{ github.ref }}
++  cancel-in-progress: true
++
+ jobs:
+   build:
+-    runs-on: windows-latest
++    runs-on: windows-2022
+ 
+     steps:
+-    - uses: actions/checkout@v4
+-    - uses: jwlawson/actions-setup-cmake@v2.0
+-      with:
+-        cmake-version: '3.22.x'
++    - uses: actions/checkout@v7
++    - uses: lukka/get-cmake@v4.4.2
++
+     - name: Install dependencies
+       run: |
+         md C:\projects
+         $client = new-object System.Net.WebClient
+-        $client.DownloadFile("https://rostam.cct.lsu.edu/download/builder/vcpkg-export-hpx-dependencies-2024.7z","C:\projects\vcpkg-export-hpx-dependencies.7z")
++        $client.DownloadFile("https://rostam.cct.lsu.edu/download/builder/vcpkg-export-hpx-dependencies-2026.7z","C:\projects\vcpkg-export-hpx-dependencies.7z")
+         7z x C:\projects\vcpkg-export-hpx-dependencies.7z -y -oC:\projects\vcpkg
+     - name: Configure
+       shell: bash
+diff --git a/cmake/HPX_SetupAsio.cmake b/cmake/HPX_SetupAsio.cmake
+index ea17a574472e..d8d081f3877e 100644
+--- a/cmake/HPX_SetupAsio.cmake
++++ b/cmake/HPX_SetupAsio.cmake
+@@ -14,7 +14,17 @@ if(ASIO_ROOT AND NOT Asio_ROOT)
+ endif()
+ 
+ if(NOT HPX_WITH_FETCH_ASIO)
+-  find_package(Asio 1.12.0 REQUIRED)
++  find_package(Asio 1.12.0)
++  if(NOT Asio_FOUND)
++    hpx_error(
++      "Could not find Asio. Set Asio_ROOT as a CMake or environment variable to "
++      "point to the Asio root install directory. Alternatively, set "
++      "HPX_WITH_FETCH_ASIO=ON to fetch Asio using CMake's FetchContent (this is "
++      "currently the default, but might have failed or been disabled). Note that "
++      "Asio is installed together with HPX, be careful about conflicts with "
++      "separately installed versions of Asio."
++    )
++  endif()
+ elseif(NOT TARGET Asio::asio AND NOT HPX_FIND_PACKAGE)
+   if(FETCHCONTENT_SOURCE_DIR_ASIO)
+     hpx_info(
+@@ -36,8 +46,20 @@ elseif(NOT TARGET Asio::asio AND NOT HPX_FIND_PACKAGE)
+   set(Asio_ROOT ${asio_SOURCE_DIR})
+ 
+   add_library(asio INTERFACE)
++
++  # convert ASIO tag into CMake version
++  string(REGEX REPLACE "asio-([0-9]+)-([0-9]+)-([0-9]+)" "\\1.\\2.\\3" VERSION
++                       "${HPX_WITH_ASIO_TAG}"
++  )
++
++  # starting v1.37.0 ASIO has changed its directory structure
++  set(asio_base_directory ${Asio_ROOT}/asio/include)
++  if(VERSION VERSION_GREATER "1.36.0")
++    set(asio_base_directory ${Asio_ROOT}/include)
++  endif()
++
+   target_include_directories(
+-    asio SYSTEM INTERFACE $<BUILD_INTERFACE:${Asio_ROOT}/asio/include>
++    asio SYSTEM INTERFACE $<BUILD_INTERFACE:${asio_base_directory}>
+                           $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
+   )
+ 
+@@ -48,7 +70,7 @@ elseif(NOT TARGET Asio::asio AND NOT HPX_FIND_PACKAGE)
+   )
+ 
+   install(
+-    DIRECTORY ${Asio_ROOT}/asio/include/
++    DIRECTORY ${asio_base_directory}/
+     DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
+     COMPONENT core
+     FILES_MATCHING
+diff --git a/components/iostreams/src/server/output_stream.cpp b/components/iostreams/src/server/output_stream.cpp
+index dd0a519b27f8..e71e3ab52818 100644
+--- a/components/iostreams/src/server/output_stream.cpp
++++ b/components/iostreams/src/server/output_stream.cpp
+@@ -9,7 +9,9 @@
+ #include <hpx/config.hpp>
+ #include <hpx/functional/bind_front.hpp>
+ 
++#include <hpx/io_service/io_service_pool.hpp>
+ #include <hpx/runtime_distributed/runtime_fwd.hpp>
++#include <hpx/runtime_local/runtime_local_fwd.hpp>
+ #include <hpx/serialization/serialize.hpp>
+ #include <hpx/serialization/shared_ptr.hpp>
+ #include <hpx/serialization/vector.hpp>
+@@ -19,7 +21,11 @@
+ #include <hpx/components/iostreams/server/buffer.hpp>
+ #include <hpx/components/iostreams/server/output_stream.hpp>
+ 
+-#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
+ 
+ #include <cstdint>
+ #include <functional>
+@@ -34,7 +40,7 @@ namespace hpx::iostreams::detail {
+         ar << valid;
+         if (valid)
+         {
+-            ar& data_;
++            ar & data_;
+         }
+     }
+ 
+@@ -44,7 +50,7 @@ namespace hpx::iostreams::detail {
+         ar >> valid;
+         if (valid)
+         {
+-            ar& data_;
++            ar & data_;
+         }
+     }
+ }    // namespace hpx::iostreams::detail
+@@ -60,16 +66,22 @@ namespace hpx::iostreams::server {
+ 
+     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 +98,21 @@ 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);
+-        hpx::get_thread_pool("io_pool")->get_io_service().post(
++#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())));
+-
++                threads::thread_id_ref_type(threads::get_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_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..776e973006c5 100644
+--- a/examples/async_io/async_io_low_level.cpp
++++ b/examples/async_io/async_io_low_level.cpp
+@@ -1,4 +1,4 @@
+-//  Copyright (c) 2007-2013 Hartmut Kaiser
++//  Copyright (c) 2007-2026 Hartmut Kaiser
+ //
+ //  SPDX-License-Identifier: BSL-1.0
+ //  Distributed under the Boost Software License, Version 1.0. (See accompanying
+@@ -14,6 +14,14 @@
+ #include <hpx/io_service/io_service_pool.hpp>
+ #include <hpx/iostream.hpp>
+ 
++#include <hpx/modules/io_service.hpp>
++
++#include <asio/io_context.hpp>
++#include <asio/version.hpp>
++#if ASIO_VERSION >= 103400
++#include <asio/post.hpp>
++#endif
++
+ #include <iostream>
+ #include <memory>
+ 
+@@ -39,7 +47,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..7daef54e098e 100644
+--- a/libs/core/asio/include/hpx/asio/asio_util.hpp
++++ b/libs/core/asio/include/hpx/asio/asio_util.hpp
+@@ -1,4 +1,4 @@
+-//  Copyright (c) 2007-2023 Hartmut Kaiser
++//  Copyright (c) 2007-2026 Hartmut Kaiser
+ //  Copyright (c) 2011      Bryce Lelbach
+ //
+ //  SPDX-License-Identifier: BSL-1.0
+@@ -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
+@@ -29,17 +30,17 @@ namespace hpx::util {
+ 
+     ///////////////////////////////////////////////////////////////////////////
+     HPX_CORE_EXPORT bool get_endpoint(std::string const& addr,
+-        std::uint16_t port, asio::ip::tcp::endpoint& ep,
++        std::uint16_t port, ::asio::ip::tcp::endpoint& ep,
+         bool force_ipv4 = false);
+ 
+     HPX_CORE_EXPORT std::string get_endpoint_name(
+-        asio::ip::tcp::endpoint const& ep);
++        ::asio::ip::tcp::endpoint const& ep);
+ 
+     ///////////////////////////////////////////////////////////////////////////
+     // properly resolve a give host name to the corresponding IP address
+-    HPX_CORE_EXPORT asio::ip::tcp::endpoint resolve_hostname(
++    HPX_CORE_EXPORT ::asio::ip::tcp::endpoint resolve_hostname(
+         std::string const& hostname, std::uint16_t port,
+-        asio::io_context& io_service, bool force_ipv4 = false);
++        ::asio::io_context& io_service, bool force_ipv4 = false);
+ 
+     ///////////////////////////////////////////////////////////////////////////
+     // return the public IP address of the local node
+@@ -50,43 +51,51 @@ namespace hpx::util {
+     [[nodiscard]] HPX_CORE_EXPORT std::string cleanup_ip_address(
+         std::string const& addr);
+ 
+-    using endpoint_iterator_type = asio::ip::tcp::resolver::iterator;
++    namespace detail {
+ 
+-    [[nodiscard]] endpoint_iterator_type HPX_CORE_EXPORT connect_begin(
++#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
++    }    // namespace detail
++
++    [[nodiscard]] HPX_CORE_EXPORT detail::endpoint_iterator_type connect_begin(
+         std::string const& address, std::uint16_t port,
+-        asio::io_context& io_service);
++        ::asio::io_context& io_service);
+ 
+     /// \brief Returns an iterator which when dereferenced will give an
+     ///        endpoint suitable for a call to connect() related to this
+     ///        locality
+     template <typename Locality>
+-    [[nodiscard]] endpoint_iterator_type connect_begin(
+-        Locality const& loc, asio::io_context& io_service)
++    [[nodiscard]] detail::endpoint_iterator_type connect_begin(
++        Locality const& loc, ::asio::io_context& io_service)
+     {
+         return connect_begin(loc.address(), loc.port(), io_service);
+     }
+ 
+-    [[nodiscard]] inline endpoint_iterator_type connect_end()
++    [[nodiscard]] inline detail::endpoint_iterator_type connect_end()
+     {
+         return {};
+     }
+ 
+-    [[nodiscard]] endpoint_iterator_type HPX_CORE_EXPORT accept_begin(
++    [[nodiscard]] HPX_CORE_EXPORT detail::endpoint_iterator_type accept_begin(
+         std::string const& address, std::uint16_t port,
+-        asio::io_context& io_service);
++        ::asio::io_context& io_service);
+ 
+     ///////////////////////////////////////////////////////////////////////////
+     /// \brief Returns an iterator which when dereferenced will give an
+     ///        endpoint suitable for a call to accept() related to this
+     ///        locality
+     template <typename Locality>
+-    [[nodiscard]] endpoint_iterator_type accept_begin(
+-        Locality const& loc, asio::io_context& io_service)
++    [[nodiscard]] detail::endpoint_iterator_type accept_begin(
++        Locality const& loc, ::asio::io_context& io_service)
+     {
+         return accept_begin(loc.address(), loc.port(), io_service);
+     }
+ 
+-    [[nodiscard]] inline endpoint_iterator_type accept_end()    //-V524
++    [[nodiscard]] inline detail::endpoint_iterator_type accept_end()    //-V524
+     {
+         return {};
+     }
+diff --git a/libs/core/asio/src/asio_util.cpp b/libs/core/asio/src/asio_util.cpp
+index b5443e5dfa4e..5d98ece1d553 100644
+--- a/libs/core/asio/src/asio_util.cpp
++++ b/libs/core/asio/src/asio_util.cpp
+@@ -1,4 +1,4 @@
+-//  Copyright (c) 2007-2023 Hartmut Kaiser
++//  Copyright (c) 2007-2026 Hartmut Kaiser
+ //  Copyright (c)      2011 Bryce Lelbach
+ //
+ //  SPDX-License-Identifier: BSL-1.0
+@@ -26,7 +26,9 @@
+ #include <asio/ip/host_name.hpp>
+ #include <asio/ip/tcp.hpp>
+ 
++#include <cstdint>
+ #include <exception>
++#include <string>
+ #include <system_error>
+ 
+ #if defined(HPX_WINDOWS) && !defined(HPX_HAVE_STATIC_LINKING)
+@@ -39,23 +41,30 @@
+ #pragma warning(disable : 4073)
+ #endif
+ #pragma init_seg(lib)
+-asio::detail::winsock_init<>::manual manual_winsock_init;
++::asio::detail::winsock_init<>::manual manual_winsock_init;
+ #if defined(HPX_MSVC_WARNING_PRAGMA)
+ #pragma warning(pop)
+ #endif
+ #endif
+ 
++#include <hpx/config/warnings_prefix.hpp>
++
+ ///////////////////////////////////////////////////////////////////////////////
+ namespace hpx::util {
+ 
+     ///////////////////////////////////////////////////////////////////////////
+     bool get_endpoint(std::string const& addr, std::uint16_t port,
+-        asio::ip::tcp::endpoint& ep, bool force_ipv4)
++        ::asio::ip::tcp::endpoint& ep, bool force_ipv4)
+     {
+-        using namespace asio::ip;
++        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 +73,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);
+@@ -76,17 +90,17 @@ namespace hpx::util {
+     }
+ 
+     ///////////////////////////////////////////////////////////////////////////
+-    std::string get_endpoint_name(asio::ip::tcp::endpoint const& ep)
++    std::string get_endpoint_name(::asio::ip::tcp::endpoint const& ep)
+     {
+         return ep.address().to_string();
+     }
+ 
+     ///////////////////////////////////////////////////////////////////////////
+     // properly resolve a give host name to the corresponding IP address
+-    asio::ip::tcp::endpoint resolve_hostname(std::string const& hostname,
+-        std::uint16_t port, asio::io_context& io_service, bool force_ipv4)
++    ::asio::ip::tcp::endpoint resolve_hostname(std::string const& hostname,
++        std::uint16_t port, ::asio::io_context& io_service, bool force_ipv4)
+     {
+-        using asio::ip::tcp;
++        using ::asio::ip::tcp;
+ 
+         // collect errors here
+         exception_list errors;
+@@ -108,9 +122,27 @@ namespace hpx::util {
+         {
+             // resolve the given address
+             tcp::resolver resolver(io_service);
+-            tcp::resolver::query query(hostname, std::to_string(port));
+ 
+-            asio::ip::tcp::resolver::iterator it = resolver.resolve(query);
++#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
+             if (force_ipv4)
+@@ -121,9 +153,9 @@ namespace hpx::util {
+                     ++it;
+                 }
+             }
+-
+-            HPX_ASSERT(it != asio::ip::tcp::resolver::iterator());
++            HPX_ASSERT(it != ::asio::ip::tcp::resolver::iterator());
+             return *it;
++#endif
+         }
+         catch (std::system_error const&)
+         {
+@@ -140,17 +172,30 @@ namespace hpx::util {
+     // return the public IP address of the local node
+     std::string resolve_public_ip_address()
+     {
+-        using asio::ip::tcp;
++        using ::asio::ip::tcp;
+ 
+         // collect errors here
+         exception_list errors;
+ 
+         try
+         {
+-            asio::io_context io_service;
++            ::asio::io_context io_service;
+             tcp::resolver resolver(io_service);
+-            tcp::resolver::query query(asio::ip::host_name(), "");
++
++#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();
+         }
+@@ -184,7 +229,7 @@ namespace hpx::util {
+         for (/**/; i < 2; ++i)
+         {
+ #if defined(HPX_WINDOWS)
+-            int const s = asio::detail::socket_ops::inet_pton(
++            int const s = ::asio::detail::socket_ops::inet_pton(
+                 domain[i], addr.data(), buf, &scope_id, ec);
+             if (s > 0 && !ec)
+                 break;
+@@ -201,7 +246,7 @@ namespace hpx::util {
+         }
+ 
+ #if defined(HPX_WINDOWS)
+-        if (asio::detail::socket_ops::inet_ntop(
++        if (::asio::detail::socket_ops::inet_ntop(
+                 domain[i], buf, str, INET6_ADDRSTRLEN, scope_id, ec) == nullptr)
+         {
+ #else
+@@ -214,10 +259,10 @@ namespace hpx::util {
+         return {str};
+     }
+ 
+-    endpoint_iterator_type connect_begin(std::string const& address,
+-        std::uint16_t port, asio::io_context& io_service)
++    detail::endpoint_iterator_type connect_begin(std::string const& address,
++        std::uint16_t port, ::asio::io_context& io_service)
+     {
+-        using asio::ip::tcp;
++        using ::asio::ip::tcp;
+ 
+         // collect errors here
+         exception_list errors;
+@@ -230,8 +275,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 +295,24 @@ namespace hpx::util {
+         {
+             // resolve the given address
+             tcp::resolver resolver(io_service);
+-            tcp::resolver::query query(
+-                !address.empty() ? address : asio::ip::host_name(), port_str);
+ 
++#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&)
+         {
+@@ -260,10 +325,10 @@ namespace hpx::util {
+             address, port);
+     }
+ 
+-    endpoint_iterator_type accept_begin(std::string const& address,
+-        std::uint16_t port, asio::io_context& io_service)
++    detail::endpoint_iterator_type accept_begin(std::string const& address,
++        std::uint16_t port, ::asio::io_context& io_service)
+     {
+-        using asio::ip::tcp;
++        using ::asio::ip::tcp;
+ 
+         // collect errors here
+         exception_list errors;
+@@ -276,8 +341,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 +361,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 +389,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&)
+         {
+@@ -394,3 +490,5 @@ namespace hpx::util {
+         return true;
+     }
+ }    // namespace hpx::util
++
++#include <hpx/config/warnings_suffix.hpp>
+diff --git a/libs/core/asio/src/map_hostnames.cpp b/libs/core/asio/src/map_hostnames.cpp
+index 156c40a03df2..793d1134c96a 100644
+--- a/libs/core/asio/src/map_hostnames.cpp
++++ b/libs/core/asio/src/map_hostnames.cpp
+@@ -1,4 +1,4 @@
+-//  Copyright (c) 2007-2023 Hartmut Kaiser
++//  Copyright (c) 2007-2026 Hartmut Kaiser
+ //
+ //  SPDX-License-Identifier: BSL-1.0
+ //  Distributed under the Boost Software License, Version 1.0. (See accompanying
+@@ -44,8 +44,8 @@ namespace hpx::util {
+         }
+ 
+         // do full host name resolution
+-        asio::io_context io_service;
+-        asio::ip::tcp::endpoint const ep = util::resolve_hostname(
++        ::asio::io_context io_service;
++        ::asio::ip::tcp::endpoint const ep = util::resolve_hostname(
+             prefix_ + host_name + suffix_, port, io_service, ipv4_);
+ 
+         std::string resolved_addr(util::get_endpoint_name(ep));
+diff --git a/libs/core/batch_environments/src/batch_environment.cpp b/libs/core/batch_environments/src/batch_environment.cpp
+index 2c522b01f549..97c6dde58927 100644
+--- a/libs/core/batch_environments/src/batch_environment.cpp
++++ b/libs/core/batch_environments/src/batch_environment.cpp
+@@ -140,7 +140,7 @@ namespace hpx::util {
+         bool found_agas_host = false;
+ 
+ #if defined(HPX_HAVE_NETWORKING)
+-        asio::io_context io_service;
++        ::asio::io_context io_service;
+ 
+         std::size_t agas_node_num = 0;
+         for (std::string const& s : nodes)
+@@ -161,7 +161,7 @@ namespace hpx::util {
+ 
+                 if (have_tcp)
+                 {
+-                    asio::ip::tcp::endpoint ep =
++                   ::asio::ip::tcp::endpoint ep =
+                         util::resolve_hostname(s, 0, io_service);
+ 
+                     if (0 == nodes_.count(ep))
+@@ -251,7 +251,7 @@ namespace hpx::util {
+ 
+     std::string batch_environment::host_name() const
+     {
+-        std::string hostname = asio::ip::host_name();
++        std::string hostname = ::asio::ip::host_name();
+         if (debug_)
+             std::cerr << "asio host_name: " << hostname << std::endl;
+         return hostname;
+diff --git a/libs/core/debugging/src/attach_debugger.cpp b/libs/core/debugging/src/attach_debugger.cpp
+index b9d8ec8dfde8..7f6941ab419d 100644
+--- a/libs/core/debugging/src/attach_debugger.cpp
++++ b/libs/core/debugging/src/attach_debugger.cpp
+@@ -30,7 +30,7 @@ namespace hpx::util {
+         DebugBreak();
+ #elif defined(_POSIX_VERSION) && defined(HPX_HAVE_UNISTD_H)
+         volatile int i = 0;
+-        std::cerr << "PID: " << getpid() << " on " << asio::ip::host_name()
++        std::cerr << "PID: " << getpid() << " on " << ::asio::ip::host_name()
+                   << " ready for attaching debugger. Once attached set i = 1 "
+                      "and continue"
+                   << std::endl;
+diff --git a/libs/core/executors/src/service_executors.cpp b/libs/core/executors/src/service_executors.cpp
+index 4e3ba88a2392..0aecf22a6b45 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-2026 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..b5a2aa3c5ae7 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
+@@ -91,7 +91,7 @@ namespace hpx::util {
+         bool stopped();
+ 
+         /// \brief Get an io_service to use.
+-        asio::io_context& get_io_service(int index = -1);
++        ::asio::io_context& get_io_service(int index = -1);
+ 
+         /// \brief access underlying thread handle
+         std::thread& get_os_thread_handle(std::size_t thread_num);
+@@ -122,13 +122,13 @@ namespace hpx::util {
+         void wait_locked();
+ 
+     private:
+-        using io_service_ptr = std::unique_ptr<asio::io_context>;
++        using io_service_ptr = std::unique_ptr<::asio::io_context>;
+ 
+         using raw_work_type =
+-            asio::executor_work_guard<asio::io_context::executor_type>;
++            ::asio::executor_work_guard<::asio::io_context::executor_type>;
+         using work_type = std::unique_ptr<raw_work_type>;
+ 
+-        static work_type initialize_work(asio::io_context& io_service);
++        static work_type initialize_work(::asio::io_context& io_service);
+ 
+         std::mutex mtx_;
+ 
+diff --git a/libs/core/io_service/src/io_service_pool.cpp b/libs/core/io_service/src/io_service_pool.cpp
+index 44eb3318c04b..53ff2aa29a25 100644
+--- a/libs/core/io_service/src/io_service_pool.cpp
++++ b/libs/core/io_service/src/io_service_pool.cpp
+@@ -12,11 +12,24 @@
+ #include <hpx/config/asio.hpp>
+ #include <hpx/assert.hpp>
+ #include <hpx/concurrency/barrier.hpp>
+-#include <hpx/io_service/io_service_pool.hpp>
++
+ #include <hpx/modules/errors.hpp>
+ #include <hpx/modules/logging.hpp>
+ 
++#include <hpx/io_service/io_service_pool.hpp>
++
++#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 asio support includes termios.h. The termios.h file on ppc64le defines
++// these macros, which are also used by blaze, blaze_tensor as Template names.
++// Make sure we undefine them before continuing.
++#undef VT1
++#undef VT2
+ 
+ #include <cstddef>
+ #include <memory>
+@@ -59,8 +72,8 @@ namespace hpx::util {
+         // will not exit until they are explicitly stopped.
+         for (std::size_t i = 0; i < pool_size_; ++i)
+         {
+-            std::unique_ptr<asio::io_context> p =
+-                std::make_unique<asio::io_context>();
++            std::unique_ptr<::asio::io_context> p =
++                std::make_unique<::asio::io_context>();
+             io_services_.emplace_back(HPX_MOVE(p));
+             work_.emplace_back(initialize_work(*io_services_[i]));
+         }
+@@ -178,8 +191,8 @@ namespace hpx::util {
+ 
+             for (std::size_t i = 0; i < num_threads; ++i)
+             {
+-                std::unique_ptr<asio::io_context> p =
+-                    std::make_unique<asio::io_context>();
++                std::unique_ptr<::asio::io_context> p =
++                    std::make_unique<::asio::io_context>();
+                 io_services_.emplace_back(HPX_MOVE(p));
+                 work_.emplace_back(initialize_work(*io_services_[i]));
+             }
+@@ -259,7 +272,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();
+@@ -290,12 +307,12 @@ namespace hpx::util {
+     }
+ 
+     io_service_pool::work_type io_service_pool::initialize_work(
+-        asio::io_context& io_service)
++        ::asio::io_context& io_service)
+     {
+         return std::make_unique<raw_work_type>(io_service.get_executor());
+     }
+ 
+-    asio::io_context& io_service_pool::get_io_service(int index)
++    ::asio::io_context& io_service_pool::get_io_service(int index)
+     {
+         // use this function for single group io_service pools only
+         std::lock_guard<std::mutex> l(mtx_);
+diff --git a/libs/core/lci_base/src/lci_environment.cpp b/libs/core/lci_base/src/lci_environment.cpp
+index f3e51a29eb30..3d0b75f8913b 100644
+--- a/libs/core/lci_base/src/lci_environment.cpp
++++ b/libs/core/lci_base/src/lci_environment.cpp
+@@ -178,7 +178,7 @@ namespace hpx { namespace util {
+ 
+     std::string lci_environment::get_processor_name()
+     {
+-        return asio::ip::host_name();
++        return ::asio::ip::host_name();
+     }
+ 
+     void lci_environment::finalize()
+diff --git a/libs/core/runtime_local/include/hpx/runtime_local/runtime_handlers.hpp b/libs/core/runtime_local/include/hpx/runtime_local/runtime_handlers.hpp
+index 4b322e955b73..aecb494d8088 100644
+--- a/libs/core/runtime_local/include/hpx/runtime_local/runtime_handlers.hpp
++++ b/libs/core/runtime_local/include/hpx/runtime_local/runtime_handlers.hpp
+@@ -32,5 +32,5 @@ namespace hpx::detail {
+     HPX_CORE_EXPORT threads::thread_pool_base* get_default_pool();
+     HPX_CORE_EXPORT threads::mask_type get_pu_mask(
+         threads::topology& topo, std::size_t thread_num);
+-    HPX_CORE_EXPORT asio::io_context& get_default_timer_service();
++    HPX_CORE_EXPORT ::asio::io_context& get_default_timer_service();
+ }    // namespace hpx::detail
+diff --git a/libs/core/runtime_local/src/pool_timer.cpp b/libs/core/runtime_local/src/pool_timer.cpp
+index 7487b5a72692..7b847d8a08c6 100644
+--- a/libs/core/runtime_local/src/pool_timer.cpp
++++ b/libs/core/runtime_local/src/pool_timer.cpp
+@@ -68,7 +68,7 @@ namespace hpx::util::detail {
+ 
+     private:
+         using deadline_timer =
+-            asio::basic_waitable_timer<std::chrono::steady_clock>;
++            ::asio::basic_waitable_timer<std::chrono::steady_clock>;
+ 
+         mutable mutex_type mtx_;
+         hpx::function<bool()> f_;          ///< function to call
+@@ -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/core/runtime_local/src/runtime_handlers.cpp b/libs/core/runtime_local/src/runtime_handlers.cpp
+index 9bfee95c10cc..b377cb4642bf 100644
+--- a/libs/core/runtime_local/src/runtime_handlers.cpp
++++ b/libs/core/runtime_local/src/runtime_handlers.cpp
+@@ -152,7 +152,7 @@ namespace hpx::detail {
+         return &rt->get_thread_manager().default_pool();
+     }
+ 
+-    asio::io_context& get_default_timer_service()
++    ::asio::io_context& get_default_timer_service()
+     {
+         hpx::runtime const* rt = get_runtime_ptr();
+         if (rt == nullptr)
+diff --git a/libs/core/threading_base/include/hpx/threading_base/detail/get_default_timer_service.hpp b/libs/core/threading_base/include/hpx/threading_base/detail/get_default_timer_service.hpp
+index 7249905f897b..f9786f4c4321 100644
+--- a/libs/core/threading_base/include/hpx/threading_base/detail/get_default_timer_service.hpp
++++ b/libs/core/threading_base/include/hpx/threading_base/detail/get_default_timer_service.hpp
+@@ -14,8 +14,8 @@
+ 
+ namespace hpx::threads::detail {
+ 
+-    using get_default_timer_service_type = hpx::function<asio::io_context&()>;
++    using get_default_timer_service_type = hpx::function<::asio::io_context&()>;
+     HPX_CORE_EXPORT void set_get_default_timer_service(
+         get_default_timer_service_type f);
+-    HPX_CORE_EXPORT asio::io_context& get_default_timer_service();
++    HPX_CORE_EXPORT ::asio::io_context& get_default_timer_service();
+ }    // namespace hpx::threads::detail
+diff --git a/libs/core/threading_base/src/get_default_timer_service.cpp b/libs/core/threading_base/src/get_default_timer_service.cpp
+index 5e9a4791af43..a8a51aa2c7d8 100644
+--- a/libs/core/threading_base/src/get_default_timer_service.cpp
++++ b/libs/core/threading_base/src/get_default_timer_service.cpp
+@@ -25,7 +25,7 @@ namespace hpx::threads::detail {
+         get_default_timer_service_f = HPX_MOVE(f);
+     }
+ 
+-    asio::io_context& get_default_timer_service()
++    ::asio::io_context& get_default_timer_service()
+     {
+         if (detail::get_default_timer_service_f)
+         {
+diff --git a/libs/core/threading_base/src/set_thread_state_timed.cpp b/libs/core/threading_base/src/set_thread_state_timed.cpp
+index 9b762a825935..1fb591c68fae 100644
+--- a/libs/core/threading_base/src/set_thread_state_timed.cpp
++++ b/libs/core/threading_base/src/set_thread_state_timed.cpp
+@@ -99,7 +99,7 @@ namespace hpx::threads::detail {
+ 
+         // create timer firing in correspondence with given time
+         using deadline_timer =
+-            asio::basic_waitable_timer<std::chrono::steady_clock>;
++            ::asio::basic_waitable_timer<std::chrono::steady_clock>;
+ 
+         deadline_timer t(get_default_timer_service(), abs_time);
+ 
+diff --git a/libs/full/async_distributed/include/hpx/async_distributed/packaged_action.hpp b/libs/full/async_distributed/include/hpx/async_distributed/packaged_action.hpp
+index 179c96970c3f..2969c3e698ae 100644
+--- a/libs/full/async_distributed/include/hpx/async_distributed/packaged_action.hpp
++++ b/libs/full/async_distributed/include/hpx/async_distributed/packaged_action.hpp
+@@ -55,8 +55,8 @@ namespace hpx::lcos {
+                     if (hpx::tolerate_node_faults())
+                     {
+                         if (ec ==
+-                            asio::error::make_error_code(
+-                                asio::error::connection_reset))
++                            ::asio::error::make_error_code(
++                                ::asio::error::connection_reset))
+                         {
+                             return;
+                         }
+diff --git a/libs/full/init_runtime/src/hpx_main_winsocket.cpp b/libs/full/init_runtime/src/hpx_main_winsocket.cpp
+index 6013bbd6e5ec..5ce54bef5039 100644
+--- a/libs/full/init_runtime/src/hpx_main_winsocket.cpp
++++ b/libs/full/init_runtime/src/hpx_main_winsocket.cpp
+@@ -23,10 +23,10 @@ namespace hpx { namespace detail {
+     // is executed.
+     struct winsocket_init_helper
+     {
+-        static asio::detail::winsock_init<> const& init()
++        static ::asio::detail::winsock_init<> const& init()
+         {
+-            static const asio::detail::winsock_init<> init_winsocket =
+-                asio::detail::winsock_init<>(false);
++            static const ::asio::detail::winsock_init<> init_winsocket =
++                ::asio::detail::winsock_init<>(false);
+             return init_winsocket;
+         }
+     };
+diff --git a/libs/full/parcelport_gasnet/src/parcelport_gasnet.cpp b/libs/full/parcelport_gasnet/src/parcelport_gasnet.cpp
+index 77da0c839b16..06e55455ab76 100644
+--- a/libs/full/parcelport_gasnet/src/parcelport_gasnet.cpp
++++ b/libs/full/parcelport_gasnet/src/parcelport_gasnet.cpp
+@@ -37,6 +37,11 @@
+ #include <system_error>
+ #include <type_traits>
+ 
++#include <asio/version.hpp>
++#if ASIO_VERSION >= 103400
++#include <asio/post.hpp>
++#endif
++
+ #include <hpx/config/warnings_prefix.hpp>
+ 
+ namespace hpx::parcelset {
+@@ -142,8 +147,13 @@ 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(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..12d08448fe28 100644
+--- a/libs/full/parcelport_lci/src/parcelport_lci.cpp
++++ b/libs/full/parcelport_lci/src/parcelport_lci.cpp
+@@ -39,6 +39,11 @@
+ #include <type_traits>
+ #include <vector>
+ 
++#include <asio/version.hpp>
++#if ASIO_VERSION >= 103400
++#include <asio/post.hpp>
++#endif
++
+ namespace hpx::parcelset::policies::lci {
+ 
+     parcelset::locality parcelport::here()
+@@ -98,8 +103,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(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 +177,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..14320e4e625e 100644
+--- a/libs/full/parcelport_mpi/src/parcelport_mpi.cpp
++++ b/libs/full/parcelport_mpi/src/parcelport_mpi.cpp
+@@ -35,6 +35,11 @@
+ #include <string>
+ #include <type_traits>
+ 
++#include <asio/version.hpp>
++#if ASIO_VERSION >= 103400
++#include <asio/post.hpp>
++#endif
++
+ #include <hpx/config/warnings_prefix.hpp>
+ 
+ namespace hpx::parcelset {
+@@ -181,8 +186,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;
+             }
+diff --git a/libs/full/parcelport_tcp/include/hpx/parcelport_tcp/connection_handler.hpp b/libs/full/parcelport_tcp/include/hpx/parcelport_tcp/connection_handler.hpp
+index 00d01900912a..0ef797ace408 100644
+--- a/libs/full/parcelport_tcp/include/hpx/parcelport_tcp/connection_handler.hpp
++++ b/libs/full/parcelport_tcp/include/hpx/parcelport_tcp/connection_handler.hpp
+@@ -98,7 +98,7 @@ namespace hpx::parcelset {
+             // Return the name of this locality
+             std::string get_locality_name() const override
+             {
+-                return asio::ip::host_name();
++                return ::asio::ip::host_name();
+             }
+ 
+             std::shared_ptr<sender> create_connection(
+@@ -116,7 +116,7 @@ namespace hpx::parcelset {
+                 std::shared_ptr<receiver> const& receiver_conn);
+ 
+             /// Acceptor used to listen for incoming connections.
+-            asio::ip::tcp::acceptor* acceptor_;
++            ::asio::ip::tcp::acceptor* acceptor_;
+ 
+             /// The list of accepted connections
+             mutable hpx::spinlock connections_mtx_;
+diff --git a/libs/full/parcelport_tcp/include/hpx/parcelport_tcp/receiver.hpp b/libs/full/parcelport_tcp/include/hpx/parcelport_tcp/receiver.hpp
+index ffa937bf17d4..8f47b0a465a9 100644
+--- a/libs/full/parcelport_tcp/include/hpx/parcelport_tcp/receiver.hpp
++++ b/libs/full/parcelport_tcp/include/hpx/parcelport_tcp/receiver.hpp
+@@ -56,7 +56,7 @@ namespace hpx::parcelset::policies::tcp {
+     class receiver : public parcelport_connection<receiver>
+     {
+     public:
+-        receiver(asio::io_context& io_service, std::uint64_t max_inbound_size,
++        receiver(::asio::io_context& io_service, std::uint64_t max_inbound_size,
+             connection_handler& parcelport)
+           : socket_(io_service)
+           , max_inbound_size_(max_inbound_size)
+@@ -77,7 +77,7 @@ namespace hpx::parcelset::policies::tcp {
+         }
+ 
+         // Get the socket associated with the parcelport_connection.
+-        asio::ip::tcp::socket& socket() noexcept
++        ::asio::ip::tcp::socket& socket() noexcept
+         {
+             return socket_;
+         }
+@@ -100,8 +100,8 @@ namespace hpx::parcelset::policies::tcp {
+             chunk_buffers_.clear();
+ 
+             // Issue a read operation to read the message size.
+-            using asio::buffer;
+-            std::vector<asio::mutable_buffer> buffers;
++            using ::asio::buffer;
++            std::vector<::asio::mutable_buffer> buffers;
+             buffers.emplace_back(&buffer_.size_, sizeof(buffer_.size_));
+             buffers.emplace_back(
+                 &buffer_.data_size_, sizeof(buffer_.data_size_));
+@@ -115,12 +115,12 @@ namespace hpx::parcelset::policies::tcp {
+                 {
+                     lk.unlock();
+                     // report this problem back to the handler
+-                    handler(asio::error::make_error_code(
+-                        asio::error::not_connected));
++                    handler(::asio::error::make_error_code(
++                        ::asio::error::not_connected));
+                     return;
+                 }
+ #if defined(__linux) || defined(linux) || defined(__linux__)
+-                asio::detail::socket_option::boolean<IPPROTO_TCP, TCP_QUICKACK>
++                ::asio::detail::socket_option::boolean<IPPROTO_TCP, TCP_QUICKACK>
+                     quickack(true);
+                 socket_.set_option(quickack);
+ #endif
+@@ -128,7 +128,7 @@ namespace hpx::parcelset::policies::tcp {
+                 void (receiver::*f)(std::error_code const&, std::size_t,
+                     Handler) = &receiver::handle_read_header<Handler>;
+ 
+-                asio::async_read(socket_, buffers,
++                ::asio::async_read(socket_, buffers,
+                     hpx::bind(f, shared_from_this(),
+                         placeholders::_1,    // error
+                         placeholders::_2,    // bytes_transferred
+@@ -144,7 +144,7 @@ namespace hpx::parcelset::policies::tcp {
+             if (socket_.is_open())
+             {
+                 std::error_code ec;
+-                socket_.shutdown(asio::ip::tcp::socket::shutdown_both, ec);
++                socket_.shutdown(::asio::ip::tcp::socket::shutdown_both, ec);
+ 
+                 // close the socket to give it back to the OS
+                 socket_.close(ec);
+@@ -178,8 +178,8 @@ namespace hpx::parcelset::policies::tcp {
+                 if (max_inbound_size_ != 0 && inbound_size > max_inbound_size_)
+                 {
+                     // report this problem back to the handler
+-                    handler(asio::error::make_error_code(
+-                        asio::error::operation_not_supported));
++                    handler(::asio::error::make_error_code(
++                        ::asio::error::operation_not_supported));
+                     return;
+                 }
+ 
+@@ -188,7 +188,7 @@ namespace hpx::parcelset::policies::tcp {
+                     static_cast<std::size_t>(inbound_size);
+ #endif
+                 // receive buffers
+-                std::vector<asio::mutable_buffer> buffers;
++                std::vector<::asio::mutable_buffer> buffers;
+ 
+                 // determine the size of the chunk buffer
+                 auto const num_zero_copy_chunks = static_cast<std::size_t>(
+@@ -215,7 +215,7 @@ namespace hpx::parcelset::policies::tcp {
+                     // add main buffer holding data that was serialized normally
+                     buffer_.data_.resize(
+                         static_cast<std::size_t>(inbound_size));
+-                    buffers.emplace_back(asio::buffer(buffer_.data_));
++                    buffers.emplace_back(::asio::buffer(buffer_.data_));
+ 
+                     // Start an asynchronous call to receive the data.
+                     f = &receiver::handle_read_chunk_data<Handler>;
+@@ -225,7 +225,7 @@ namespace hpx::parcelset::policies::tcp {
+                     // add main buffer holding data that was serialized normally
+                     buffer_.data_.resize(
+                         static_cast<std::size_t>(inbound_size));
+-                    buffers.emplace_back(asio::buffer(buffer_.data_));
++                    buffers.emplace_back(::asio::buffer(buffer_.data_));
+ 
+                     // Start an asynchronous call to receive the data.
+                     f = &receiver::handle_read_data<Handler>;
+@@ -238,18 +238,18 @@ namespace hpx::parcelset::policies::tcp {
+                         lk.unlock();
+ 
+                         // report this problem back to the handler
+-                        handler(asio::error::make_error_code(
+-                            asio::error::not_connected));
++                        handler(::asio::error::make_error_code(
++                            ::asio::error::not_connected));
+                         return;
+                     }
+ 
+ #if defined(__linux) || defined(linux) || defined(__linux__)
+-                    asio::detail::socket_option::boolean<IPPROTO_TCP,
++                    ::asio::detail::socket_option::boolean<IPPROTO_TCP,
+                         TCP_QUICKACK>
+                         quickack(true);
+                     socket_.set_option(quickack);
+ #endif
+-                    asio::async_read(socket_, buffers,
++                    ::asio::async_read(socket_, buffers,
+                         hpx::bind(f, shared_from_this(),
+                             placeholders::_1,    // error,
+                             util::protect(handler)));
+@@ -271,7 +271,7 @@ namespace hpx::parcelset::policies::tcp {
+             else
+             {
+                 // receive buffers
+-                std::vector<asio::mutable_buffer> buffers;
++                std::vector<::asio::mutable_buffer> buffers;
+ 
+                 // add appropriately sized chunk buffers for the zero-copy data
+                 auto const num_zero_copy_chunks = static_cast<std::size_t>(
+@@ -359,18 +359,18 @@ namespace hpx::parcelset::policies::tcp {
+                         lk.unlock();
+ 
+                         // report this problem back to the handler
+-                        handler(asio::error::make_error_code(
+-                            asio::error::not_connected));
++                        handler(::asio::error::make_error_code(
++                            ::asio::error::not_connected));
+                         return;
+                     }
+ 
+ #if defined(__linux) || defined(linux) || defined(__linux__)
+-                    asio::detail::socket_option::boolean<IPPROTO_TCP,
++                    ::asio::detail::socket_option::boolean<IPPROTO_TCP,
+                         TCP_QUICKACK>
+                         quickack(true);
+                     socket_.set_option(quickack);
+ #endif
+-                    asio::async_read(socket_, buffers,
++                    ::asio::async_read(socket_, buffers,
+                         hpx::bind(f, shared_from_this(),
+                             placeholders::_1,    // error,
+                             util::protect(handler)));
+@@ -425,13 +425,13 @@ namespace hpx::parcelset::policies::tcp {
+                         lk.unlock();
+ 
+                         // report this problem back to the handler
+-                        handler(asio::error::make_error_code(
+-                            asio::error::not_connected));
++                        handler(::asio::error::make_error_code(
++                            ::asio::error::not_connected));
+                         return;
+                     }
+ 
+-                    asio::async_write(socket_,
+-                        asio::buffer(&ack_, sizeof(ack_)),
++                    ::asio::async_write(socket_,
++                        ::asio::buffer(&ack_, sizeof(ack_)),
+                         hpx::bind(f, shared_from_this(),
+                             placeholders::_1,    // error,
+                             util::protect(handler)));
+@@ -460,7 +460,7 @@ namespace hpx::parcelset::policies::tcp {
+         }
+ 
+         // Socket for the parcelport_connection.
+-        asio::ip::tcp::socket socket_;
++        ::asio::ip::tcp::socket socket_;
+ 
+         std::uint64_t max_inbound_size_;
+ 
+diff --git a/libs/full/parcelport_tcp/include/hpx/parcelport_tcp/sender.hpp b/libs/full/parcelport_tcp/include/hpx/parcelport_tcp/sender.hpp
+index 59f23f2dd2e0..18ddf681347a 100644
+--- a/libs/full/parcelport_tcp/include/hpx/parcelport_tcp/sender.hpp
++++ b/libs/full/parcelport_tcp/include/hpx/parcelport_tcp/sender.hpp
+@@ -57,7 +57,7 @@ namespace hpx::parcelset::policies::tcp {
+ 
+     public:
+         // Construct a sending parcelport_connection with the given io_context.
+-        sender(asio::io_context& io_service,
++        sender(::asio::io_context& io_service,
+             parcelset::locality const& locality_id,
+             [[maybe_unused]] parcelset::parcelport* pp)
+           : socket_(io_service)
+@@ -75,7 +75,7 @@ namespace hpx::parcelset::policies::tcp {
+             if (socket_.is_open())
+             {
+                 std::error_code ec;
+-                socket_.shutdown(asio::ip::tcp::socket::shutdown_both, ec);
++                socket_.shutdown(::asio::ip::tcp::socket::shutdown_both, ec);
+ 
+                 // close the socket to give it back to the OS
+                 socket_.close(ec);
+@@ -83,7 +83,7 @@ namespace hpx::parcelset::policies::tcp {
+         }
+ 
+         // Get the socket associated with the parcelport_connection.
+-        asio::ip::tcp::socket& socket() noexcept
++        ::asio::ip::tcp::socket& socket() noexcept
+         {
+             return socket_;
+         }
+@@ -97,7 +97,7 @@ namespace hpx::parcelset::policies::tcp {
+         {
+ #if defined(HPX_DEBUG)
+             std::error_code ec;
+-            asio::ip::tcp::socket::endpoint_type const endpoint =
++            ::asio::ip::tcp::socket::endpoint_type const endpoint =
+                 socket_.remote_endpoint(ec);
+ 
+             locality const& impl = parcel_locality_id.get<locality>();
+@@ -143,7 +143,7 @@ namespace hpx::parcelset::policies::tcp {
+ #endif
+             // Write the serialized data to the socket. We use "gather-write"
+             // to send both the header and the data in a single write operation.
+-            std::vector<asio::const_buffer> buffers;
++            std::vector<::asio::const_buffer> buffers;
+             buffers.emplace_back(&buffer_.size_, sizeof(buffer_.size_));
+             buffers.emplace_back(
+                 &buffer_.data_size_, sizeof(buffer_.data_size_));
+@@ -161,7 +161,7 @@ namespace hpx::parcelset::policies::tcp {
+                         sizeof(parcel_buffer_type::transmission_chunk_type));
+ 
+                 // add main buffer holding data which was serialized normally
+-                buffers.emplace_back(asio::buffer(buffer_.data_));
++                buffers.emplace_back(::asio::buffer(buffer_.data_));
+ 
+                 // now add chunks themselves, those hold zero-copy serialized chunks
+                 for (serialization::serialization_chunk& c : buffer_.chunks_)
+@@ -174,7 +174,7 @@ namespace hpx::parcelset::policies::tcp {
+             else
+             {
+                 // add main buffer holding data which was serialized normally
+-                buffers.emplace_back(asio::buffer(buffer_.data_));
++                buffers.emplace_back(::asio::buffer(buffer_.data_));
+             }
+ 
+             // this additional wrapping of the handler into a bind object is
+@@ -183,7 +183,7 @@ namespace hpx::parcelset::policies::tcp {
+             void (sender::*f)(std::error_code const&, std::size_t) =
+                 &sender::handle_write;
+ 
+-            asio::async_write(socket_, buffers,
++            ::asio::async_write(socket_, buffers,
+                 hpx::bind(f, shared_from_this(), hpx::placeholders::_1,
+                     hpx::placeholders::_2));
+         }
+@@ -241,7 +241,7 @@ namespace hpx::parcelset::policies::tcp {
+ 
+             // now handle the acknowledgment byte which is sent by the receiver
+ #if defined(__linux) || defined(linux) || defined(__linux__)
+-            asio::detail::socket_option::boolean<IPPROTO_TCP, TCP_QUICKACK>
++            ::asio::detail::socket_option::boolean<IPPROTO_TCP, TCP_QUICKACK>
+                 quickack(true);
+             socket_.set_option(quickack);
+ #endif
+@@ -249,7 +249,7 @@ namespace hpx::parcelset::policies::tcp {
+             void (sender::*f)(std::error_code const&) =
+                 &sender::handle_read_ack;
+ 
+-            asio::async_read(socket_, asio::buffer(&ack_, sizeof(ack_)),
++            ::asio::async_read(socket_, asio::buffer(&ack_, sizeof(ack_)),
+                 hpx::bind(f, shared_from_this(), placeholders::_1));
+         }
+ 
+@@ -271,7 +271,7 @@ namespace hpx::parcelset::policies::tcp {
+         }
+ 
+         // Socket for the parcelport_connection.
+-        asio::ip::tcp::socket socket_;
++        ::asio::ip::tcp::socket socket_;
+ 
+         bool ack_;
+ 
+diff --git a/libs/full/parcelport_tcp/src/connection_handler_tcp.cpp b/libs/full/parcelport_tcp/src/connection_handler_tcp.cpp
+index e4e81a285c38..7189f5fb14d4 100644
+--- a/libs/full/parcelport_tcp/src/connection_handler_tcp.cpp
++++ b/libs/full/parcelport_tcp/src/connection_handler_tcp.cpp
+@@ -86,18 +86,18 @@ namespace hpx::parcelset::policies::tcp {
+ 
+     bool connection_handler::do_run()
+     {
+-        using asio::ip::tcp;
+-        asio::io_context& io_service = io_service_pool_.get_io_service();
++        using ::asio::ip::tcp;
++        ::asio::io_context& io_service = io_service_pool_.get_io_service();
+         if (nullptr == acceptor_)
+             acceptor_ = new tcp::acceptor(io_service);
+ 
+         // initialize network
+         std::size_t tried = 0;
+         exception_list errors;
+-        util::endpoint_iterator_type const end = util::accept_end();
+-        for (util::endpoint_iterator_type it =
++        util::detail::endpoint_iterator_type const end = util::accept_end();
++        for (util::detail::endpoint_iterator_type it =
+                  util::accept_begin(here_.get<locality>(), io_service);
+-             it != end; ++it, ++tried)
++            it != end; ++it, ++tried)
+         {
+             try
+             {
+@@ -156,14 +156,14 @@ namespace hpx::parcelset::policies::tcp {
+     std::shared_ptr<sender> connection_handler::create_connection(
+         parcelset::locality const& l, error_code& ec)
+     {
+-        asio::io_context& io_service = io_service_pool_.get_io_service();
++        ::asio::io_context& io_service = io_service_pool_.get_io_service();
+ 
+         // The parcel gets serialized inside the connection constructor, no
+         // need to keep the original parcel alive after this call returned.
+         auto sender_connection = std::make_shared<sender>(io_service, l, this);
+ 
+         // Connect to the target locality, retry if needed
+-        std::error_code error = asio::error::try_again;
++        std::error_code error = ::asio::error::try_again;
+         for (std::size_t i = 0; i < HPX_MAX_NETWORK_RETRIES; ++i)
+         {
+             // The acceptor is only nullptr when the parcelport has been stopped.
+@@ -173,12 +173,12 @@ namespace hpx::parcelset::policies::tcp {
+                 return std::shared_ptr<sender>();
+             try
+             {
+-                util::endpoint_iterator_type end = util::connect_end();
+-                for (util::endpoint_iterator_type it =
++                util::detail::endpoint_iterator_type end = util::connect_end();
++                for (util::detail::endpoint_iterator_type it =
+                          util::connect_begin(l.get<locality>(), io_service);
+-                     it != end; ++it)
++                    it != end; ++it)
+                 {
+-                    asio::ip::tcp::socket& s = sender_connection->socket();
++                    ::asio::ip::tcp::socket& s = sender_connection->socket();
+                     s.close();
+                     s.connect(*it, error);
+                     if (!error)
+@@ -227,10 +227,10 @@ namespace hpx::parcelset::policies::tcp {
+ 
+         // make sure the Nagle algorithm is disabled for this socket,
+         // disable lingering on close
+-        asio::ip::tcp::socket& s = sender_connection->socket();
++        ::asio::ip::tcp::socket& s = sender_connection->socket();
+ 
+-        s.set_option(asio::ip::tcp::no_delay(true));
+-        s.set_option(asio::socket_base::linger(true, 0));
++        s.set_option(::asio::ip::tcp::no_delay(true));
++        s.set_option(::asio::socket_base::linger(true, 0));
+ 
+ #if defined(HPX_HOLDON_TO_OUTGOING_CONNECTIONS)
+         {
+@@ -289,7 +289,7 @@ namespace hpx::parcelset::policies::tcp {
+             // handle this incoming connection
+             std::shared_ptr<receiver> c(receiver_conn);
+ 
+-            asio::io_context& io_service = io_service_pool_.get_io_service();
++            ::asio::io_context& io_service = io_service_pool_.get_io_service();
+             receiver_conn.reset(new receiver(
+                 io_service, get_max_inbound_message_size(), *this));
+             acceptor_->async_accept(receiver_conn->socket(),
+@@ -303,9 +303,9 @@ namespace hpx::parcelset::policies::tcp {
+             }
+ 
+             // disable Nagle algorithm, disable lingering on close
+-            asio::ip::tcp::socket& s = c->socket();
+-            s.set_option(asio::ip::tcp::no_delay(true));
+-            s.set_option(asio::socket_base::linger(true, 0));
++            ::asio::ip::tcp::socket& s = c->socket();
++            s.set_option(::asio::ip::tcp::no_delay(true));
++            s.set_option(::asio::socket_base::linger(true, 0));
+ 
+             // now accept the incoming connection by starting to read from the
+             // socket
+@@ -329,7 +329,7 @@ namespace hpx::parcelset::policies::tcp {
+             return;
+         }
+ 
+-        if (e != asio::error::operation_aborted && e != asio::error::eof)
++        if (e != ::asio::error::operation_aborted && e != ::asio::error::eof)
+         {
+             LPT_(error).format(
+                 "handle read operation completion: error: {}", e.message());
+diff --git a/libs/full/parcelset/src/parcelhandler.cpp b/libs/full/parcelset/src/parcelhandler.cpp
+index b01da355a72f..1b2c5c148f1b 100644
+--- a/libs/full/parcelset/src/parcelhandler.cpp
++++ b/libs/full/parcelset/src/parcelhandler.cpp
+@@ -910,12 +910,12 @@ namespace hpx::parcelset {
+             // If we are in a stopped state, ignore some errors
+             if (hpx::is_stopped_or_shutting_down())
+             {
+-                using asio::error::make_error_code;
+-                if (ec == make_error_code(asio::error::connection_aborted) ||
+-                    ec == make_error_code(asio::error::connection_reset) ||
+-                    ec == make_error_code(asio::error::broken_pipe) ||
+-                    ec == make_error_code(asio::error::not_connected) ||
+-                    ec == make_error_code(asio::error::eof))
++                using ::asio::error::make_error_code;
++                if (ec == make_error_code(::asio::error::connection_aborted) ||
++                    ec == make_error_code(::asio::error::connection_reset) ||
++                    ec == make_error_code(::asio::error::broken_pipe) ||
++                    ec == make_error_code(::asio::error::not_connected) ||
++                    ec == make_error_code(::asio::error::eof))
+                 {
+                     return;
+                 }
+@@ -923,7 +923,7 @@ namespace hpx::parcelset {
+             else if (hpx::tolerate_node_faults())
+             {
+                 if (ec ==
+-                    asio::error::make_error_code(asio::error::connection_reset))
++                    ::asio::error::make_error_code(::asio::error::connection_reset))
+                 {
+                     return;
+                 }

diff --git a/hpx.spec b/hpx.spec
index cda576e..8c0d07b 100644
--- a/hpx.spec
+++ b/hpx.spec
@@ -1,12 +1,14 @@
 Name:           hpx
 Version:        1.11.0
-Release:        4%{?dist}
+Release:        5%{?dist}
 Summary:        General Purpose C++ Runtime System
 License:        BSL-1.0
 URL:            https://hpx.stellar-group.org/
 Source0:        https://github.com/STEllAR-GROUP/hpx/archive/v%{version}/%{name}-%{version}.tar.gz
 # from upstream https://github.com/STEllAR-GROUP/hpx/issues/6867#issuecomment-3829261348
 Patch0:         gcc-16.patch
+# from upstream https://github.com/TheHPXProject/hpx/issues/7428#issuecomment-5168078573
+Patch1:         https://patch-diff.githubusercontent.com/raw/TheHPXProject/hpx/pull/7463.diff
 
 BuildRequires:  gcc-c++ >= 4.9
 BuildRequires:  gperftools-devel
@@ -279,6 +281,10 @@ done
 %{_libdir}/lib*.so*
 
 %changelog
+* Fri Aug 21 2026 Christoph Junghans <junghans@votca.org> - 1.11.0-5
+- Fix build with asio-1.38.1
+- Fixes: rhbz#2504129
+
 * Thu Jul 16 2026 Fedora Release Engineering <releng@fedoraproject.org> - 1.11.0-4
 - Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild
 

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2026-08-21 13:51 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-08-21 13:51 [rpms/hpx] rawhide: Fix build with asio-1.38.1 Christoph Junghans

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox