From bcc652e1d6ca1a559b49e63cb1d33bd8d997de0b Mon Sep 17 00:00:00 2001 From: acktarius Date: Wed, 6 May 2026 13:07:42 -0400 Subject: [PATCH 01/11] Partial: CMakeLists.txt and phmap.h from 1c5f598 --- CMakeLists.txt | 3 ++- external/parallel_hashmap/phmap.h | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3ac2b6ed9..753c037f1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -112,7 +112,8 @@ else() endif() if(MINGW) set(WARNINGS "${WARNINGS} -Wno-error=unused-value") - set(MINGW_FLAG "-DWIN32_LEAN_AND_MEAN") + # Boost.Bind: avoid deprecated global placeholders (_1, _2) pragma on newer Boost + set(MINGW_FLAG "-DWIN32_LEAN_AND_MEAN -DBOOST_BIND_GLOBAL_PLACEHOLDERS") include_directories(SYSTEM src/platform/mingw) else() set(MINGW_FLAG "") diff --git a/external/parallel_hashmap/phmap.h b/external/parallel_hashmap/phmap.h index 37f0f7c14..194e4f600 100644 --- a/external/parallel_hashmap/phmap.h +++ b/external/parallel_hashmap/phmap.h @@ -2753,7 +2753,7 @@ class parallel_hash_set std::is_nothrow_default_constructible::value&& std::is_nothrow_default_constructible::value) {} -#if (__cplusplus >= 201703L || _MSVC_LANG >= 201402) && (defined(_MSC_VER) || defined(__clang__) || (defined(__GNUC__) && __GNUC__ > 6)) +#if (__cplusplus >= 201703L || (defined(_MSVC_LANG) && _MSVC_LANG >= 201402)) && (defined(_MSC_VER) || defined(__clang__) || (defined(__GNUC__) && __GNUC__ > 6)) explicit parallel_hash_set(size_t bucket_cnt, const hasher& hash_param = hasher(), const key_equal& eq = key_equal(), From 53aabca8def88cfbf827614032c2fec14851dbf5 Mon Sep 17 00:00:00 2001 From: acktarius Date: Wed, 29 Apr 2026 12:56:03 -0400 Subject: [PATCH 02/11] fix build errors: Mutable buffer: SERVICE_TABLE_ENTRY expects LPSTR in main.cpp * windows: undef ERROR in CheckpointList.h * MinGW: main.cpp, use static char[] for service name --- src/PaymentGateService/main.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/PaymentGateService/main.cpp b/src/PaymentGateService/main.cpp index 6307e6fc8..e0bd308c6 100644 --- a/src/PaymentGateService/main.cpp +++ b/src/PaymentGateService/main.cpp @@ -123,8 +123,10 @@ int daemonize() { int runDaemon() { #ifdef _WIN32 + // Mutable buffer: SERVICE_TABLE_ENTRY expects LPSTR (non-const); string literals are const. + static char serviceDisplayName[] = "Payment Gate"; SERVICE_TABLE_ENTRY serviceTable[] { - { "Payment Gate", serviceMain }, + { serviceDisplayName, serviceMain }, { NULL, NULL } }; From aaecd40324da87e73b23e8373b6afcab108564f4 Mon Sep 17 00:00:00 2001 From: acktarius Date: Wed, 29 Apr 2026 16:38:32 -0400 Subject: [PATCH 03/11] attempt to fix macOs boost warning. * new boost version, probably 1.90.0 and base on our use should not break...TBC --- .github/workflows/check.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index 94eb5f4a4..f777efb53 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -406,14 +406,15 @@ jobs: - name: Install dependencies run: | - brew install boost@1.85 + brew install boost + brew list --versions boost - name: Build id: build run: | mkdir build cd build - cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON -DSTATIC=ON -DBOOST_ROOT=/usr/local/opt/boost@1.85 + cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON -DSTATIC=ON -DBOOST_ROOT="$(brew --prefix boost) make -j2 - name: Prepare release From 13ab6938c53be48022a3ca147c3eb40be97f974f Mon Sep 17 00:00:00 2001 From: acktarius Date: Wed, 29 Apr 2026 16:55:16 -0400 Subject: [PATCH 04/11] address nodejs 20 -> 24 warnings --- .github/workflows/check.yml | 16 ++++++++-------- .github/workflows/windows.yml | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index f777efb53..b728bb54b 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -27,10 +27,10 @@ jobs: echo "release_name=${release_name}" >> $env:GITHUB_OUTPUT - name: Install msbuild - uses: microsoft/setup-msbuild@v2 + uses: microsoft/setup-msbuild@v3 - name: Restore Boost - uses: actions/cache@v4 + uses: actions/cache@v5 id: restore-boost with: path: ${{env.BOOST_ROOT}} @@ -64,7 +64,7 @@ jobs: cp build/tests/Release/*_tests.exe build/conceal - name: Upload To GH Artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: ${{ steps.setup.outputs.release_name }} path: build/conceal @@ -148,7 +148,7 @@ jobs: cp build/tests/*_tests.exe build/conceal - name: Upload To GH Artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: ${{ steps.setup.outputs.release_name }} path: build/conceal @@ -217,7 +217,7 @@ jobs: cp build/tests/*_tests build/conceal - name: Upload To GH Artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: ${{ steps.setup.outputs.release_name }} path: build/conceal @@ -287,7 +287,7 @@ jobs: cp build/tests/*_tests build/conceal - name: Upload To GH Artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: ${{ steps.setup.outputs.release_name }} path: build/conceal @@ -357,7 +357,7 @@ jobs: cp build/tests/*_tests build/conceal - name: Upload To GH Artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: ${{ steps.setup.outputs.release_name }} path: build/conceal @@ -427,7 +427,7 @@ jobs: cp build/tests/*_tests build/conceal - name: Upload To GH Artifacts - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v6 with: name: ${{ steps.setup.outputs.release_name }} path: build/conceal diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 38b3522a7..9807a1cc3 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -15,7 +15,7 @@ jobs: - uses: actions/checkout@master - name: Setup msbuild - uses: microsoft/setup-msbuild@v2 + uses: microsoft/setup-msbuild@v3 - name: Restore Boost uses: actions/cache@v4 From cc852276388155611004f955725a00003f6dd89b Mon Sep 17 00:00:00 2001 From: acktarius Date: Wed, 29 Apr 2026 17:15:34 -0400 Subject: [PATCH 05/11] fix typo in macOs cmake command --- .github/workflows/check.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index b728bb54b..ffe8d7eb0 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -414,7 +414,7 @@ jobs: run: | mkdir build cd build - cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON -DSTATIC=ON -DBOOST_ROOT="$(brew --prefix boost) + cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON -DSTATIC=ON -DBOOST_ROOT="$(brew --prefix boost)" make -j2 - name: Prepare release From 1290239931c8c525788d9606b59e8502ba4e189a Mon Sep 17 00:00:00 2001 From: acktarius Date: Wed, 29 Apr 2026 17:26:38 -0400 Subject: [PATCH 06/11] tweak CMakeLists for macOS , boost configuration. --- CMakeLists.txt | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 753c037f1..abaa02ab5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -145,6 +145,10 @@ if(APPLE) add_definitions(/DHAVE_ROTR) endif() +if(POLICY CMP0167) + cmake_policy(SET CMP0167 OLD) +endif() + if(STATIC) set(Boost_NO_BOOST_CMAKE ON) set(Boost_USE_STATIC_LIBS ON) @@ -152,7 +156,17 @@ if(STATIC) endif() #set(Boost_DEBUG on) -find_package(Boost 1.55 REQUIRED COMPONENTS system filesystem thread date_time chrono regex serialization program_options) +set(BOOST_COMPONENTS filesystem thread date_time chrono regex serialization program_options) + +if(APPLE) + find_package(Boost 1.55 COMPONENTS system ${BOOST_COMPONENTS}) + if(NOT Boost_FOUND) + message(STATUS "Boost.System library not found; retrying without system component") + find_package(Boost 1.55 REQUIRED COMPONENTS ${BOOST_COMPONENTS}) + endif() +else() + find_package(Boost 1.55 REQUIRED COMPONENTS system ${BOOST_COMPONENTS}) +endif() include_directories(SYSTEM ${Boost_INCLUDE_DIRS}) if(MINGW) From ca91637f55fbf84ddf0bacc88b07f4ada802c381 Mon Sep 17 00:00:00 2001 From: acktarius Date: Wed, 29 Apr 2026 17:41:03 -0400 Subject: [PATCH 07/11] tweak InProcessNode.h, InProcessNode.cpp for compatibility with boost 1.90.0 for macOS build --- src/InProcessNode/InProcessNode.cpp | 6 +++++- src/InProcessNode/InProcessNode.h | 13 +++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/InProcessNode/InProcessNode.cpp b/src/InProcessNode/InProcessNode.cpp index e72be2730..a955868dc 100644 --- a/src/InProcessNode/InProcessNode.cpp +++ b/src/InProcessNode/InProcessNode.cpp @@ -63,7 +63,11 @@ void InProcessNode::init(const Callback& callback) { protocol.addObserver(this); core.addObserver(this); - work.reset(new boost::asio::io_service::work(ioService)); +#if BOOST_VERSION >= 106600 + work.reset(new InProcessNodeWork(ioService.get_executor())); +#else + work.reset(new InProcessNodeWork(ioService)); +#endif workerThread.reset(new std::thread(&InProcessNode::workerFunc, this)); state = INITIALIZED; diff --git a/src/InProcessNode/InProcessNode.h b/src/InProcessNode/InProcessNode.h index a9b926875..1c7bd6ab7 100644 --- a/src/InProcessNode/InProcessNode.h +++ b/src/InProcessNode/InProcessNode.h @@ -18,11 +18,20 @@ #include #include +#include namespace cn { class core; +#if BOOST_VERSION >= 106600 +using InProcessNodeIoContext = boost::asio::io_context; +using InProcessNodeWork = boost::asio::executor_work_guard; +#else +using InProcessNodeIoContext = boost::asio::io_service; +using InProcessNodeWork = boost::asio::io_service::work; +#endif + class InProcessNode : public INode, public cn::ICryptoNoteProtocolObserver, public cn::ICoreObserver { public: InProcessNode(cn::ICore& core, cn::ICryptoNoteProtocolQuery& protocol); @@ -135,9 +144,9 @@ class InProcessNode : public INode, public cn::ICryptoNoteProtocolObserver, publ cn::ICryptoNoteProtocolQuery& protocol; tools::ObserverManager observerManager; - boost::asio::io_service ioService; + InProcessNodeIoContext ioService; std::unique_ptr workerThread; - std::unique_ptr work; + std::unique_ptr work; BlockchainExplorerDataBuilder blockchainExplorerDataBuilder; From 9f069f211514fa84a2250853675540162e6c921c Mon Sep 17 00:00:00 2001 From: acktarius Date: Wed, 29 Apr 2026 18:19:05 -0400 Subject: [PATCH 08/11] address boost io_context per version --- src/InProcessNode/InProcessNode.cpp | 44 +++++++++++++++++------------ src/InProcessNode/InProcessNode.h | 12 +++++++- 2 files changed, 37 insertions(+), 19 deletions(-) diff --git a/src/InProcessNode/InProcessNode.cpp b/src/InProcessNode/InProcessNode.cpp index a955868dc..f1de35903 100644 --- a/src/InProcessNode/InProcessNode.cpp +++ b/src/InProcessNode/InProcessNode.cpp @@ -63,7 +63,7 @@ void InProcessNode::init(const Callback& callback) { protocol.addObserver(this); core.addObserver(this); -#if BOOST_VERSION >= 106600 +#if BOOST_VERSION >= 109000 work.reset(new InProcessNodeWork(ioService.get_executor())); #else work.reset(new InProcessNodeWork(ioService)); @@ -73,7 +73,7 @@ void InProcessNode::init(const Callback& callback) { state = INITIALIZED; } - ioService.post(std::bind(callback, ec)); + postIoService(std::bind(callback, ec)); } bool InProcessNode::shutdown() { @@ -93,10 +93,18 @@ bool InProcessNode::doShutdown() { work.reset(); ioService.stop(); workerThread->join(); - ioService.reset(); + resetIoService(); return true; } +void InProcessNode::resetIoService() { +#if BOOST_VERSION >= 109000 + ioService.restart(); +#else + ioService.reset(); +#endif +} + void InProcessNode::workerFunc() { ioService.run(); } @@ -111,7 +119,7 @@ void InProcessNode::getNewBlocks(std::vector&& knownBlockIds, std: return; } - ioService.post( + postIoService( std::bind(&InProcessNode::getNewBlocksAsync, this, std::move(knownBlockIds), @@ -185,7 +193,7 @@ void InProcessNode::getTransactionOutsGlobalIndices(const crypto::Hash& transact return; } - ioService.post( + postIoService( std::bind(&InProcessNode::getTransactionOutsGlobalIndicesAsync, this, std::cref(transactionHash), @@ -235,7 +243,7 @@ void InProcessNode::getRandomOutsByAmounts(std::vector&& amounts, uint return; } - ioService.post( + postIoService( std::bind(&InProcessNode::getRandomOutsByAmountsAsync, this, std::move(amounts), @@ -292,7 +300,7 @@ void InProcessNode::relayTransaction(const cn::Transaction& transaction, const C return; } - ioService.post( + postIoService( std::bind(&InProcessNode::relayTransactionAsync, this, transaction, @@ -461,7 +469,7 @@ void InProcessNode::queryBlocks(std::vector&& knownBlockIds, uint6 return; } - ioService.post( + postIoService( std::bind(&InProcessNode::queryBlocksLiteAsync, this, std::move(knownBlockIds), @@ -523,7 +531,7 @@ void InProcessNode::getPoolSymmetricDifference(std::vector&& known return; } - ioService.post([this, knownPoolTxIds, knownBlockId, &isBcActual, &newTxs, &deletedTxIds, callback] () mutable { + postIoService([this, knownPoolTxIds, knownBlockId, &isBcActual, &newTxs, &deletedTxIds, callback] () mutable { this->getPoolSymmetricDifferenceAsync(std::move(knownPoolTxIds), knownBlockId, isBcActual, newTxs, deletedTxIds, callback); }); } @@ -556,7 +564,7 @@ void InProcessNode::getMultisignatureOutputByGlobalIndex(uint64_t amount, uint32 return; } - ioService.post([this, amount, gindex, &out, callback]() mutable { + postIoService([this, amount, gindex, &out, callback]() mutable { this->getOutByMSigGIndexAsync(amount, gindex, out, callback); }); } @@ -581,7 +589,7 @@ void InProcessNode::getBlocks(const std::vector& blockHeights, std::ve return; } - ioService.post( + postIoService( std::bind( static_cast< void(InProcessNode::*)( @@ -665,7 +673,7 @@ void InProcessNode::getBlocks(const std::vector& blockHashes, std: return; } - ioService.post( + postIoService( std::bind( static_cast< void(InProcessNode::*)( @@ -728,7 +736,7 @@ void InProcessNode::getBlocks(uint64_t timestampBegin, uint64_t timestampEnd, ui return; } - ioService.post( + postIoService( std::bind( static_cast< void(InProcessNode::*)( @@ -804,7 +812,7 @@ void InProcessNode::getTransactions(const std::vector& transaction return; } - ioService.post( + postIoService( std::bind( static_cast< void(InProcessNode::*)( @@ -869,7 +877,7 @@ void InProcessNode::getPoolTransactions(uint64_t timestampBegin, uint64_t timest return; } - ioService.post( + postIoService( std::bind( &InProcessNode::getPoolTransactionsAsync, this, @@ -928,7 +936,7 @@ void InProcessNode::getTransactionsByPaymentId(const crypto::Hash& paymentId, st return; } - ioService.post( + postIoService( std::bind( &InProcessNode::getTransactionsByPaymentIdAsync, this, @@ -949,7 +957,7 @@ void InProcessNode::getTransaction(const crypto::Hash &transactionHash, cn::Tran return; } - ioService.post( + postIoService( std::bind( static_cast< void (InProcessNode::*)( @@ -1044,7 +1052,7 @@ void InProcessNode::isSynchronized(bool& syncStatus, const Callback& callback) { return; } - ioService.post( + postIoService( std::bind( &InProcessNode::isSynchronizedAsync, this, diff --git a/src/InProcessNode/InProcessNode.h b/src/InProcessNode/InProcessNode.h index 1c7bd6ab7..e8abb6b6f 100644 --- a/src/InProcessNode/InProcessNode.h +++ b/src/InProcessNode/InProcessNode.h @@ -24,7 +24,7 @@ namespace cn { class core; -#if BOOST_VERSION >= 106600 +#if BOOST_VERSION >= 109000 using InProcessNodeIoContext = boost::asio::io_context; using InProcessNodeWork = boost::asio::executor_work_guard; #else @@ -133,6 +133,16 @@ class InProcessNode : public INode, public cn::ICryptoNoteProtocolObserver, publ std::error_code doGetTransaction(const crypto::Hash &transactionHash, cn::Transaction &transaction); void workerFunc(); bool doShutdown(); + void resetIoService(); + + template + void postIoService(Handler handler) { +#if BOOST_VERSION >= 109000 + boost::asio::post(ioService, handler); +#else + ioService.post(handler); +#endif + } enum State { NOT_INITIALIZED, From e6d7aa216d097c12370c3f7349d3c9854f74c7c2 Mon Sep 17 00:00:00 2001 From: acktarius Date: Thu, 30 Apr 2026 13:08:34 -0400 Subject: [PATCH 09/11] version bump beta * bump to 6.7.4-beta.1 in order to propose on upstream/development * update contributing flow --- CMakeLists.txt | 2 +- CONTRIBUTING.md | 8 +++++--- src/CryptoNoteConfig.h | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index abaa02ab5..6b195f9fd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.5) include(CheckCXXCompilerFlag) -set(VERSION "6.7.3") +set(VERSION "6.7.4-beta.1") set(VERSION_BUILD_NO "Trebopala") # Packaged from main commits set(COMMIT 1db6e66) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ab99bfa93..300b2bc7f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,12 +1,14 @@ Development Process -Developers work in their own trees, then submit pull requests when they think their feature or bug fix is ready. +Contributors should work from their own fork of the repository (not push branches directly to the upstream repo unless they are maintainers with that workflow). When you start a change, create a branch named `/`: use a three-letter identifier derived from your name or handle, then a short topic (often kebab-case words). Examples for someone named John Doe: `jdo/fix`, `doe/dependencies`. + +Open pull requests against the upstream **`development`** branch when you consider your feature or bug fix ready. The patch will be accepted if there is broad consensus that it is a good thing. Developers should expect to rework and resubmit patches if they don't match the project's coding conventions or are controversial. -The master branch is regularly built and tested, but is not guaranteed to be completely stable. Tags are regularly created to indicate new official, stable release versions of Conceal. +The `development` branch is regularly built and tested, but is not guaranteed to be completely stable. Tags are regularly created to indicate new official, stable release versions of Conceal. -Feature branches are created when there are major new features being worked on by several people. +Feature branches on upstream may be created when there are major new features being worked on by several people. From time to time a pull request will become outdated. If this occurs, and the pull is no longer automatically mergeable; a comment on the pull will be used to issue a warning of closure. The pull will be closed 15 days after the warning if action is not taken by the author. Pull requests closed in this manner will have their corresponding issue labeled 'stagnant'. diff --git a/src/CryptoNoteConfig.h b/src/CryptoNoteConfig.h index 4bde41c38..c9384feab 100644 --- a/src/CryptoNoteConfig.h +++ b/src/CryptoNoteConfig.h @@ -1,6 +1,6 @@ // Copyright (c) 2012-2017 The Cryptonote developers // Copyright (c) 2017-2018 The Circle Foundation & Conceal Devs -// Copyright (c) 2018-2023 Conceal Network & Conceal Devs +// Copyright (c) 2018-2026 Conceal Network & Conceal Devs // // // Distributed under the MIT/X11 software license, see the accompanying From 2f32453fc916dbdd65f9203539fb35fc52d2bb82 Mon Sep 17 00:00:00 2001 From: acktarius Date: Tue, 5 May 2026 16:15:37 -0400 Subject: [PATCH 10/11] add permissions to workflows --- .github/workflows/check.yml | 14 +++++++++++++- .github/workflows/macOS.yml | 6 ++++-- .github/workflows/ubuntu22.yml | 2 ++ .github/workflows/ubuntu24.yml | 4 +++- .github/workflows/windows.yml | 2 ++ 5 files changed, 24 insertions(+), 4 deletions(-) diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index ffe8d7eb0..5604b8c97 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -12,6 +12,8 @@ jobs: build-windows: name: Windows runs-on: windows-2022 + permissions: + contents: write env: BOOST_ROOT: C:/local/boost_1_83_0 steps: @@ -99,6 +101,8 @@ jobs: build-mingw: name: MinGW runs-on: windows-2022 + permissions: + contents: write defaults: run: shell: msys2 {0} @@ -183,6 +187,8 @@ jobs: build-ubuntu22: name: Ubuntu 22.04 runs-on: ubuntu-22.04 + permissions: + contents: write steps: - uses: actions/checkout@master @@ -253,6 +259,8 @@ jobs: build-ubuntu24: name: Ubuntu 24.04 runs-on: ubuntu-24.04 + permissions: + contents: write steps: - uses: actions/checkout@master @@ -323,6 +331,8 @@ jobs: build-ubuntu22-clang: name: Ubuntu 22.04 clang runs-on: ubuntu-22.04 + permissions: + contents: write steps: - uses: actions/checkout@master @@ -392,7 +402,9 @@ jobs: build-macos: name: macOS - runs-on: macos-13 + runs-on: macos-15-intel + permissions: + contents: write steps: - uses: actions/checkout@master diff --git a/.github/workflows/macOS.yml b/.github/workflows/macOS.yml index 03aab0c24..63ca808dd 100644 --- a/.github/workflows/macOS.yml +++ b/.github/workflows/macOS.yml @@ -4,11 +4,13 @@ on: push: tags: - "*" - + jobs: build-macos: name: macOS - runs-on: macos-13 + runs-on: macos-15-intel + permissions: + contents: write steps: - uses: actions/checkout@master diff --git a/.github/workflows/ubuntu22.yml b/.github/workflows/ubuntu22.yml index e82b4d8b0..f841ee39a 100644 --- a/.github/workflows/ubuntu22.yml +++ b/.github/workflows/ubuntu22.yml @@ -9,6 +9,8 @@ jobs: build-ubuntu22: name: Ubuntu 22.04 runs-on: ubuntu-22.04 + permissions: + contents: write steps: - uses: actions/checkout@master diff --git a/.github/workflows/ubuntu24.yml b/.github/workflows/ubuntu24.yml index 2e2e338f6..ce5c12dc6 100644 --- a/.github/workflows/ubuntu24.yml +++ b/.github/workflows/ubuntu24.yml @@ -4,11 +4,13 @@ on: push: tags: - "*" - + jobs: build-ubuntu24: name: Ubuntu 24.04 runs-on: ubuntu-24.04 + permissions: + contents: write steps: - uses: actions/checkout@master diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 9807a1cc3..c147ce0c5 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -9,6 +9,8 @@ jobs: build-windows: name: Windows runs-on: windows-2022 + permissions: + contents: write env: BOOST_ROOT: C:/local/boost_1_83_0 steps: From be4e1026f3f933ad3fa0566f10b588fda3cd4e0e Mon Sep 17 00:00:00 2001 From: acktarius Date: Wed, 6 May 2026 13:39:57 -0400 Subject: [PATCH 11/11] add definition BOOST_ASIO_HAS_IO_CONTEXT * using CMake macro instead of Boost version check --- CMakeLists.txt | 4 ++++ src/InProcessNode/InProcessNode.cpp | 4 ++-- src/InProcessNode/InProcessNode.h | 5 ++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b195f9fd..243555180 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -169,6 +169,10 @@ else() endif() include_directories(SYSTEM ${Boost_INCLUDE_DIRS}) +if(Boost_VERSION AND NOT Boost_VERSION VERSION_LESS 1.90.0) + add_definitions(-DBOOST_ASIO_HAS_IO_CONTEXT) +endif() + if(MINGW) set(Boost_LIBRARIES "${Boost_LIBRARIES};ws2_32;mswsock;bcrypt") elseif(APPLE) diff --git a/src/InProcessNode/InProcessNode.cpp b/src/InProcessNode/InProcessNode.cpp index f1de35903..59ff26582 100644 --- a/src/InProcessNode/InProcessNode.cpp +++ b/src/InProcessNode/InProcessNode.cpp @@ -63,7 +63,7 @@ void InProcessNode::init(const Callback& callback) { protocol.addObserver(this); core.addObserver(this); -#if BOOST_VERSION >= 109000 +#if defined(BOOST_ASIO_HAS_IO_CONTEXT) work.reset(new InProcessNodeWork(ioService.get_executor())); #else work.reset(new InProcessNodeWork(ioService)); @@ -98,7 +98,7 @@ bool InProcessNode::doShutdown() { } void InProcessNode::resetIoService() { -#if BOOST_VERSION >= 109000 +#if defined(BOOST_ASIO_HAS_IO_CONTEXT) ioService.restart(); #else ioService.reset(); diff --git a/src/InProcessNode/InProcessNode.h b/src/InProcessNode/InProcessNode.h index e8abb6b6f..c4cdf5d53 100644 --- a/src/InProcessNode/InProcessNode.h +++ b/src/InProcessNode/InProcessNode.h @@ -18,13 +18,12 @@ #include #include -#include namespace cn { class core; -#if BOOST_VERSION >= 109000 +#if defined(BOOST_ASIO_HAS_IO_CONTEXT) using InProcessNodeIoContext = boost::asio::io_context; using InProcessNodeWork = boost::asio::executor_work_guard; #else @@ -137,7 +136,7 @@ class InProcessNode : public INode, public cn::ICryptoNoteProtocolObserver, publ template void postIoService(Handler handler) { -#if BOOST_VERSION >= 109000 +#if defined(BOOST_ASIO_HAS_IO_CONTEXT) boost::asio::post(ioService, handler); #else ioService.post(handler);