summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rwxr-xr-xbuild_single.sh9
-rw-r--r--builder/Dockerfile115
-rwxr-xr-xbuilder/release.sh14
-rw-r--r--contrib/depends/.gitignore3
-rw-r--r--contrib/depends/Makefile5
-rwxr-xr-xcontrib/depends/gen_toolchain.cmake.sh2
-rw-r--r--monero_libwallet2_api_c/CMakeLists.txt24
-rw-r--r--patches/wownero/0003-store-crash-fix.patch2
-rw-r--r--patches/wownero/0006-UR-functions.patch7
-rw-r--r--patches/wownero/0007-add-dummy-device-for-ledger.patch8
-rw-r--r--patches/wownero/0008-polyseed.patch15
-rw-r--r--patches/wownero/0022-fix-remove-flaky-test.patch27
-rw-r--r--patches/wownero/0025-depends-remove-icu4c-monero-project-monero-8880.patch25
-rw-r--r--patches/zano/0001-fix-build-issues.patch4
-rw-r--r--patches/zano/0002-fix-mingw-build-issues.patch34
-rw-r--r--patches/zano/0003-fix-ios-builds.patch14
-rw-r--r--patches/zano/0004-use-boost-filesystem-instead-of-stdfs.patch28
-rw-r--r--patches/zano/0005-downgrade-cmake-version-so-LIB_DEPENDS-shows-up.patch6
-rw-r--r--patches/zano/0006-increase-max-password.patch8
-rw-r--r--patches/zano/0007-relax-mutex-in-invoke-call.patch43
-rw-r--r--patches/zano/0008-fix-don-t-depend-on-locale-on-non-windows.patch39
-rw-r--r--patches/zano/0009-fix-threads-on-iOS.patch29
-rw-r--r--patches/zano/0010-workaround-no-op-MARK_AS_POD_C11.patch34
-rw-r--r--renovate.json6
m---------zano0
26 files changed, 335 insertions, 167 deletions
diff --git a/.gitignore b/.gitignore
index 7c5c5a2..304e84d 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,5 +5,6 @@ tests/wallets
.DS_Store
contrib/depends/*-*-*
contrib/depends/_
+contrib/depends/_native
contrib/depends/simplybs
*_libwallet2_api_c/build
diff --git a/build_single.sh b/build_single.sh
index f95fa87..35aa2b1 100755
--- a/build_single.sh
+++ b/build_single.sh
@@ -55,7 +55,12 @@ fi
cd $(dirname $0)
WDIR=$PWD
pushd contrib/depends
- echo env PATH="$PATH" make "$NPROC" HOST="$HOST_ABI"
+ sbs_BOOST_VERSION=1_90_0
+ if [[ "x$repo" == "xzano" ]];
+ then
+ sbs_BOOST_VERSION=1_83_0
+ fi
+ env PATH="$PATH" make "$NPROC" HOST="$HOST_ABI" BOOST_VERSION="${sbs_BOOST_VERSION}"
popd
# source contrib/depends/_native/_source_me
source contrib/depends/$HOST_ABI/_source_me
@@ -71,7 +76,7 @@ pushd ${repo}_libwallet2_api_c
EXTRA_CMAKE_FLAGS="-DCAKEWALLET=ON"
fi
pushd build/${HOST_ABI}
- cmake -DCMAKE_TOOLCHAIN_FILE=$PWD/../../../contrib/depends/${HOST_ABI}/share/toolchain.cmake $EXTRA_CMAKE_FLAGS -DUSE_DEVICE_TREZOR=OFF -DMONERO_FLAVOR=$repo -DCMAKE_BUILD_TYPE=Debug -DHOST_ABI=${HOST_ABI} ../..
+ cmake --trace-expand -DCMAKE_TOOLCHAIN_FILE=$PWD/../../../contrib/depends/${HOST_ABI}/share/toolchain.cmake $EXTRA_CMAKE_FLAGS -DUSE_DEVICE_TREZOR=OFF -DMONERO_FLAVOR=$repo -DCMAKE_BUILD_TYPE=Debug -DHOST_ABI=${HOST_ABI} ../..
make $NPROC
popd
popd
diff --git a/builder/Dockerfile b/builder/Dockerfile
index e72c308..d21ba24 100644
--- a/builder/Dockerfile
+++ b/builder/Dockerfile
@@ -15,37 +15,25 @@ RUN git config --global user.email "monero_c@mrcyjanek.net" \
FROM builder_base AS contrib_simplybs
COPY contrib/depends /w/contrib/depends
RUN cd /w/contrib/depends \
- && make simplybs
-
-FROM contrib_simplybs AS builder_aarch64_linux_android
-RUN cd /w/contrib/depends && make HOST=aarch64-linux-android && make sbs-cleanup
-
-FROM contrib_simplybs AS builder_x86_64_linux_android
-RUN cd /w/contrib/depends && make HOST=x86_64-linux-android && make sbs-cleanup
-
-FROM contrib_simplybs AS builder_armv7a_linux_androideabi
-RUN cd /w/contrib/depends && make HOST=armv7a-linux-androideabi && make sbs-cleanup
-
-FROM contrib_simplybs AS builder_aarch64_linux_gnu
-RUN cd /w/contrib/depends && make HOST=aarch64-linux-gnu && make sbs-cleanup
-
-FROM contrib_simplybs AS builder_x86_64_linux_gnu
-RUN cd /w/contrib/depends && make HOST=x86_64-linux-gnu && make sbs-cleanup
-
-FROM contrib_simplybs AS builder_x86_64_apple_darwin
-RUN cd /w/contrib/depends && make HOST=x86_64-apple-darwin && make sbs-cleanup
-
-FROM contrib_simplybs AS builder_aarch64_apple_darwin
-RUN cd /w/contrib/depends && make HOST=aarch64-apple-darwin && make sbs-cleanup
-
-FROM contrib_simplybs AS builder_aarch64_apple_ios
-RUN cd /w/contrib/depends && make HOST=aarch64-apple-ios && make sbs-cleanup
-
-FROM contrib_simplybs AS builder_aarch64_apple_ios-simulator
-RUN cd /w/contrib/depends && make HOST=aarch64-apple-ios-simulator && make sbs-cleanup
-
-FROM contrib_simplybs AS builder_x86_64-w64-mingw32
-RUN cd /w/contrib/depends && make HOST=x86_64-w64-mingw32 && make sbs-cleanup
+ && make simplybs \
+ && make HOST=aarch64-linux-android \
+ && make HOST=aarch64-linux-android BOOST_VERSION=1_83_0 \
+ && make HOST=x86_64-linux-android \
+ && make HOST=x86_64-linux-android BOOST_VERSION=1_83_0 \
+ && make HOST=armv7a-linux-androideabi \
+ && make HOST=armv7a-linux-androideabi BOOST_VERSION=1_83_0 \
+ && make HOST=aarch64-linux-gnu \
+ && make HOST=aarch64-linux-gnu BOOST_VERSION=1_83_0 \
+ && make HOST=x86_64-linux-gnu \
+ && make HOST=x86_64-apple-darwin \
+ && make HOST=x86_64-apple-darwin BOOST_VERSION=1_83_0 \
+ && make HOST=aarch64-apple-darwin \
+ && make HOST=aarch64-apple-darwin BOOST_VERSION=1_83_0 \
+ && make HOST=aarch64-apple-ios \
+ && make HOST=aarch64-apple-ios BOOST_VERSION=1_83_0 \
+ && make HOST=aarch64-apple-ios-simulator \
+ && make HOST=aarch64-apple-ios-simulator BOOST_VERSION=1_83_0 \
+ && make sbs-cleanup
FROM builder_base AS monero_c_base
COPY . /w
@@ -54,75 +42,70 @@ RUN git submodule update --init --force --recursive \
&& ./apply_patches.sh wownero \
&& ./apply_patches.sh zano
-FROM monero_c_base AS monero_c_monero_aarch64_linux_android
-COPY --from=builder_aarch64_linux_android /w/contrib/depends /w/contrib/depends
+FROM monero_c_base AS monero_c_aarch64_linux_android
+COPY --from=builder /w/contrib/depends /w/contrib/depends
RUN ./build_single.sh monero aarch64-linux-android -j$(nproc) && cd contrib/depends && make sbs-cleanup
RUN ./build_single.sh wownero aarch64-linux-android -j$(nproc) && cd contrib/depends && make sbs-cleanup
RUN ./build_single.sh zano aarch64-linux-android -j$(nproc) && cd contrib/depends && make sbs-cleanup
-FROM monero_c_base AS monero_c_monero_x86_64_linux_android
-COPY --from=builder_x86_64_linux_android /w/contrib/depends /w/contrib/depends
+FROM monero_c_base AS monero_c_x86_64_linux_android
+COPY --from=builder /w/contrib/depends /w/contrib/depends
RUN ./build_single.sh monero x86_64-linux-android -j$(nproc) && cd contrib/depends && make sbs-cleanup
RUN ./build_single.sh wownero x86_64-linux-android -j$(nproc) && cd contrib/depends && make sbs-cleanup
RUN ./build_single.sh zano x86_64-linux-android -j$(nproc) && cd contrib/depends && make sbs-cleanup
-FROM monero_c_base AS monero_c_monero_armv7a_linux_androideabi
-COPY --from=builder_armv7a_linux_androideabi /w/contrib/depends /w/contrib/depends
+FROM monero_c_base AS monero_c_armv7a_linux_androideabi
+COPY --from=builder /w/contrib/depends /w/contrib/depends
RUN ./build_single.sh monero armv7a-linux-androideabi -j$(nproc) && cd contrib/depends && make sbs-cleanup
RUN ./build_single.sh wownero armv7a-linux-androideabi -j$(nproc) && cd contrib/depends && make sbs-cleanup
RUN ./build_single.sh zano armv7a-linux-androideabi -j$(nproc) && cd contrib/depends && make sbs-cleanup
-FROM monero_c_base AS monero_c_monero_aarch64_linux_gnu
-COPY --from=builder_aarch64_linux_gnu /w/contrib/depends /w/contrib/depends
+FROM monero_c_base AS monero_c_aarch64_linux_gnu
+COPY --from=builder /w/contrib/depends /w/contrib/depends
RUN ./build_single.sh monero aarch64-linux-gnu -j$(nproc) && cd contrib/depends && make sbs-cleanup
RUN ./build_single.sh wownero aarch64-linux-gnu -j$(nproc) && cd contrib/depends && make sbs-cleanup
-RUN ./build_single.sh zano aarch64-linux-gnu -j$(nproc) && cd contrib/depends && make sbs-cleanup
-FROM monero_c_base AS monero_c_monero_x86_64_linux_gnu
-COPY --from=builder_x86_64_linux_gnu /w/contrib/depends /w/contrib/depends
+FROM monero_c_base AS monero_c_x86_64_linux_gnu
+COPY --from=builder /w/contrib/depends /w/contrib/depends
RUN ./build_single.sh monero x86_64-linux-gnu -j$(nproc) && cd contrib/depends && make sbs-cleanup
RUN ./build_single.sh wownero x86_64-linux-gnu -j$(nproc) && cd contrib/depends && make sbs-cleanup
-RUN ./build_single.sh zano x86_64-linux-gnu -j$(nproc) && cd contrib/depends && make sbs-cleanup
-FROM monero_c_base AS monero_c_monero_x86_64_apple_darwin
-COPY --from=builder_x86_64_apple_darwin /w/contrib/depends /w/contrib/depends
+FROM monero_c_base AS monero_c_x86_64_apple_darwin
+COPY --from=builder /w/contrib/depends /w/contrib/depends
RUN ./build_single.sh monero x86_64-apple-darwin -j$(nproc) && cd contrib/depends && make sbs-cleanup
RUN ./build_single.sh wownero x86_64-apple-darwin -j$(nproc) && cd contrib/depends && make sbs-cleanup
-RUN ./build_single.sh zano x86_64-apple-darwin -j$(nproc) && cd contrib/depends && make sbs-cleanup
-FROM monero_c_base AS monero_c_monero_aarch64_apple_darwin
-COPY --from=builder_aarch64_apple_darwin /w/contrib/depends /w/contrib/depends
+FROM monero_c_base AS monero_c_aarch64_apple_darwin
+COPY --from=builder /w/contrib/depends /w/contrib/depends
RUN ./build_single.sh monero aarch64-apple-darwin -j$(nproc) && cd contrib/depends && make sbs-cleanup
RUN ./build_single.sh wownero aarch64-apple-darwin -j$(nproc) && cd contrib/depends && make sbs-cleanup
-RUN ./build_single.sh zano aarch64-apple-darwin -j$(nproc) && cd contrib/depends && make sbs-cleanup
-FROM monero_c_base AS monero_c_monero_aarch64_apple_ios
-COPY --from=builder_aarch64_apple_ios /w/contrib/depends /w/contrib/depends
+FROM monero_c_base AS monero_c_aarch64_apple_ios
+COPY --from=builder /w/contrib/depends /w/contrib/depends
RUN ./build_single.sh monero aarch64-apple-ios -j$(nproc) && cd contrib/depends && make sbs-cleanup
RUN ./build_single.sh wownero aarch64-apple-ios -j$(nproc) && cd contrib/depends && make sbs-cleanup
RUN ./build_single.sh zano aarch64-apple-ios -j$(nproc) && cd contrib/depends && make sbs-cleanup
-FROM monero_c_base AS monero_c_monero_aarch64_apple_ios-simulator
-COPY --from=builder_aarch64_apple_ios_simulator /w/contrib/depends /w/contrib/depends
+FROM monero_c_base AS monero_c_aarch64_apple_ios-simulator
+COPY --from=builder /w/contrib/depends /w/contrib/depends
RUN ./build_single.sh monero aarch64-apple-ios-simulator -j$(nproc) && cd contrib/depends && make sbs-cleanup
RUN ./build_single.sh wownero aarch64-apple-ios-simulator -j$(nproc) && cd contrib/depends && make sbs-cleanup
RUN ./build_single.sh zano aarch64-apple-ios-simulator -j$(nproc) && cd contrib/depends && make sbs-cleanup
-FROM monero_c_base AS monero_c_monero_x86_64-w64-mingw32
-COPY --from=builder_x86_64-w64-mingw32 /w/contrib/depends /w/contrib/depends
+FROM monero_c_base AS monero_c_x86_64-w64-mingw32
+COPY --from=builder /w/contrib/depends /w/contrib/depends
RUN ./build_single.sh monero x86_64-w64-mingw32 -j$(nproc) && cd contrib/depends && make sbs-cleanup
RUN ./build_single.sh wownero x86_64-w64-mingw32 -j$(nproc) && cd contrib/depends && make sbs-cleanup
-RUN ./build_single.sh zano x86_64-w64-mingw32 -j$(nproc) && cd contrib/depends && make sbs-cleanup
FROM scratch AS final
-COPY --from=monero_c_monero_aarch64_linux_android /w/release/ release/
-COPY --from=monero_c_monero_x86_64_linux_android /w/release/ release/
-COPY --from=monero_c_monero_armv7a_linux_androideabi /w/release/ release/
-COPY --from=monero_c_monero_aarch64_linux_gnu /w/release/ release/
-COPY --from=monero_c_monero_x86_64_linux_gnu /w/release/ release/
-COPY --from=monero_c_monero_x86_64_apple_darwin /w/release/ release/
-COPY --from=monero_c_monero_aarch64_apple_darwin /w/release/ release/
-COPY --from=monero_c_monero_aarch64_apple_ios /w/release/ release/
-COPY --from=monero_c_monero_aarch64_apple_ios-simulator /w/release/ release/
-COPY --from=monero_c_monero_x86_64-w64-mingw32 /w/release/ release/
+COPY --from=monero_c_aarch64_linux_android /w/release/ release/
+COPY --from=monero_c_x86_64_linux_android /w/release/ release/
+COPY --from=monero_c_armv7a_linux_androideabi /w/release/ release/
+COPY --from=monero_c_aarch64_linux_gnu /w/release/ release/
+COPY --from=monero_c_x86_64_linux_gnu /w/release/ release/
+COPY --from=monero_c_x86_64_apple_darwin /w/release/ release/
+COPY --from=monero_c_aarch64_apple_darwin /w/release/ release/
+COPY --from=monero_c_aarch64_apple_ios /w/release/ release/
+COPY --from=monero_c_aarch64_apple_ios-simulator /w/release/ release/
+COPY --from=monero_c_x86_64-w64-mingw32 /w/release/ release/
diff --git a/builder/release.sh b/builder/release.sh
new file mode 100755
index 0000000..f240bac
--- /dev/null
+++ b/builder/release.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+set -xe
+
+cd $(dirname $0)
+cd ..
+img=localhost/monero_c:$(git describe --tags)
+
+docker build -t $img -f ./builder/Dockerfile
+
+docker create --name temp_extract $img
+
+docker rm temp_extract || true
+docker cp temp_extract:/w/* /release/$(git describe --tags)
+docker rm temp_extract \ No newline at end of file
diff --git a/contrib/depends/.gitignore b/contrib/depends/.gitignore
deleted file mode 100644
index e17c25c..0000000
--- a/contrib/depends/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-_
-*-*-*
-_native \ No newline at end of file
diff --git a/contrib/depends/Makefile b/contrib/depends/Makefile
index 0667624..a998193 100644
--- a/contrib/depends/Makefile
+++ b/contrib/depends/Makefile
@@ -2,8 +2,9 @@
HOST ?=
-PACKAGES = native/cmake,native/python@3.14,native/git,native/_,native/make,native/cmake-toolchain,icu4c,boost@1_90_0,zeromq,unbound,sodium,openssl,libiconv,zlib
-SIMPLYBS_HASH = f6eb673d26451799dfc9082761ae5c635b8878a0
+BOOST_VERSION ?= 1_90_0
+PACKAGES = native/cmake,native/python@3.14,native/git,native/_,native/make,native/cmake-toolchain,icu4c,boost@$(BOOST_VERSION),zeromq,unbound,sodium,openssl,libiconv,zlib
+SIMPLYBS_HASH = 184235706c2665432304ef28b106da52807a9686
all: simplybs $(if $(HOST),sbs-build-$(HOST),)
@if [ -z "$(HOST)" ]; then \
diff --git a/contrib/depends/gen_toolchain.cmake.sh b/contrib/depends/gen_toolchain.cmake.sh
index 153c9ed..1a12df7 100755
--- a/contrib/depends/gen_toolchain.cmake.sh
+++ b/contrib/depends/gen_toolchain.cmake.sh
@@ -59,7 +59,7 @@ SET(CMAKE_SYSTEM_PROCESSOR @arch@)
SET(CMAKE_BUILD_TYPE @release_type@)
SET(CMAKE_CXX_STANDARD 14)
LIST(APPEND CMAKE_PROGRAM_PATH @nativeprefix@/bin)
-
+SET(MANUAL_SUBMODULES true)
OPTION(STATIC "Link libraries statically" ON)
OPTION(TREZOR_DEBUG "Main trezor debugging switch" OFF)
OPTION(BUILD_TESTS "Build tests." OFF)
diff --git a/monero_libwallet2_api_c/CMakeLists.txt b/monero_libwallet2_api_c/CMakeLists.txt
index 69ceea4..f11c2bc 100644
--- a/monero_libwallet2_api_c/CMakeLists.txt
+++ b/monero_libwallet2_api_c/CMakeLists.txt
@@ -134,7 +134,13 @@ if (${MONERO_FLAVOR} STREQUAL "monero")
elseif(${MONERO_FLAVOR} STREQUAL "wownero")
set(WALLET_TARGETS wallet_api ${wallet_api_LIB_DEPENDS}) # wallet_api_LIB_DEPENDS
elseif(${MONERO_FLAVOR} STREQUAL "zano")
- find_package(Boost 1.71 REQUIRED COMPONENTS system filesystem thread timer date_time chrono regex serialization atomic program_options)
+ set(THREADS_PREFER_PTHREAD_FLAG ON)
+
+ set(CMAKE_THREAD_LIBS_INIT "-lpthread")
+ set(CMAKE_HAVE_THREADS_LIBRARY 1)
+ set(CMAKE_USE_PTHREADS_INIT 1)
+ set(Threads_FOUND TRUE)
+ find_package(Boost 1.71 REQUIRED COMPONENTS filesystem thread timer date_time chrono regex serialization atomic program_options)
find_package(OpenSSL REQUIRED)
set(WALLET_TARGETS
wallet
@@ -172,9 +178,25 @@ elseif(${HOST_ABI} MATCHES "-linux-")
target_link_options(wallet2_api_c PRIVATE "-Wl,-z,max-page-size=16384")
endif()
+if(${HOST_ABI} MATCHES "-apple-")
+ set(DUMMY_RT_SRC "${CMAKE_CURRENT_BINARY_DIR}/dummy_rt.c")
+ file(WRITE "${DUMMY_RT_SRC}" "/* I have no idea what is adding -lrt in the middle of nowhere. And frankly I don't care at this point */\n")
+
+ add_library(dummy_rt STATIC "${DUMMY_RT_SRC}")
+
+ target_sources(dummy_rt PRIVATE "${DUMMY_RT_SRC}")
+ target_compile_definitions(dummy_rt PRIVATE DUMMY_RT_SYMBOL)
+
+ set_target_properties(dummy_rt PROPERTIES
+ OUTPUT_NAME "rt"
+ ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
+ )
+endif()
+
target_link_libraries( wallet2_api_c
${WALLET_TARGETS}
${EXTRA_LIBS_WOWNEROSEED}
${EXTRA_LIBS_ANDROID}
+ ${EXTRA_LIBS_LINUX}
)
diff --git a/patches/wownero/0003-store-crash-fix.patch b/patches/wownero/0003-store-crash-fix.patch
index 942dd4b..1bc6a4a 100644
--- a/patches/wownero/0003-store-crash-fix.patch
+++ b/patches/wownero/0003-store-crash-fix.patch
@@ -49,7 +49,7 @@ index 6f30d4b92..27b099b6d 160000
+++ b/external/randomwow
@@ -1 +1 @@
-Subproject commit 6f30d4b924fecb231e5b683915cc75d18b3b5866
-+Subproject commit 27b099b6dd6fef6e17f58c6dfe00009e9c5df587
++Subproject commit cd137b1ea7bb9f0bcb5e77b39a5c1e08ca4b4fed
diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp
index af420569c..d53372fc9 100644
--- a/src/wallet/api/wallet.cpp
diff --git a/patches/wownero/0006-UR-functions.patch b/patches/wownero/0006-UR-functions.patch
index 7a4d779..b3cda8d 100644
--- a/patches/wownero/0006-UR-functions.patch
+++ b/patches/wownero/0006-UR-functions.patch
@@ -1022,6 +1022,13 @@ index a1d939a5a..e309cec5e 100644
bool import_key_images(std::vector<crypto::key_image> key_images, size_t offset=0, boost::optional<std::unordered_set<size_t>> selected_transfers=boost::none);
bool import_key_images(signed_tx_set & signed_tx, size_t offset=0, bool only_selected_transfers=false);
crypto::public_key get_tx_pub_key_from_received_outs(const tools::wallet2::transfer_details &td) const;
+diff --git a/external/bc-ur b/external/bc-ur
+new file mode 160000
+index 000000000..d82e7c753
+--- /dev/null
++++ b/external/bc-ur
+@@ -0,0 +1 @@
++Subproject commit d82e7c753e710b8000706dc3383b498438795208
--
2.51.0
diff --git a/patches/wownero/0007-add-dummy-device-for-ledger.patch b/patches/wownero/0007-add-dummy-device-for-ledger.patch
index 7fd3100..6f32873 100644
--- a/patches/wownero/0007-add-dummy-device-for-ledger.patch
+++ b/patches/wownero/0007-add-dummy-device-for-ledger.patch
@@ -149,7 +149,7 @@ new file mode 100644
index 000000000..f91e10651
--- /dev/null
+++ b/src/device/device_io_dummy.cpp
-@@ -0,0 +1,133 @@
+@@ -0,0 +1,135 @@
+// Copyright (c) 2017-2022, The Monero Project
+//
+// All rights reserved.
@@ -192,6 +192,8 @@ index 000000000..f91e10651
+
+#if defined(HIDAPI_DUMMY) && !defined(HAVE_HIDAPI)
+#include <boost/scope_exit.hpp>
++#include <boost/chrono.hpp>
++#include <boost/thread.hpp>
+#include "log.hpp"
+#include "device_io_dummy.hpp"
+#include "device_ledger.hpp"
@@ -250,13 +252,13 @@ index 000000000..f91e10651
+ MDEBUG("exchange(): waitsForDeviceSend");
+ // NOTE: waitsForDeviceSend should be changed by external code
+ while (waitsForDeviceSend) {
-+ std::this_thread::sleep_for(std::chrono::microseconds(1000));
++ boost::this_thread::sleep_for(boost::chrono::milliseconds(1000));
+ MDEBUG("exchange(): waitsForDeviceSend (still)");
+ }
+
+ MDEBUG("exchange(): waitsForDeviceReceive");
+ while (waitsForDeviceReceive) {
-+ std::this_thread::sleep_for(std::chrono::microseconds(1000));
++ boost::this_thread::sleep_for(boost::chrono::milliseconds(1000));
+ MDEBUG("exchange(): waitsForDeviceReceive (still)");
+ }
+
diff --git a/patches/wownero/0008-polyseed.patch b/patches/wownero/0008-polyseed.patch
index 69df1d5..aeb17b1 100644
--- a/patches/wownero/0008-polyseed.patch
+++ b/patches/wownero/0008-polyseed.patch
@@ -1441,6 +1441,21 @@ index e309cec5e..9c520fa99 100644
bool m_multisig; /*!< if > 1 spend secret key will not match spend public key */
uint32_t m_multisig_threshold;
std::vector<crypto::public_key> m_multisig_signers;
+
+diff --git a/external/polyseed b/external/polyseed
+new file mode 160000
+index 000000000..bd79f5014
+--- /dev/null
++++ b/external/polyseed
+@@ -0,0 +1 @@
++Subproject commit bd79f5014c331273357277ed8a3d756fb61b9fa1
+diff --git a/external/utf8proc b/external/utf8proc
+new file mode 160000
+index 000000000..3de4596fb
+--- /dev/null
++++ b/external/utf8proc
+@@ -0,0 +1 @@
++Subproject commit 3de4596fbe28956855df2ecb3c11c0bbc3535838
--
2.51.0
diff --git a/patches/wownero/0022-fix-remove-flaky-test.patch b/patches/wownero/0022-fix-remove-flaky-test.patch
new file mode 100644
index 0000000..4c70ca3
--- /dev/null
+++ b/patches/wownero/0022-fix-remove-flaky-test.patch
@@ -0,0 +1,27 @@
+From 3855cc39761321650484f5fba70c48dd8eb18444 Mon Sep 17 00:00:00 2001
+From: Czarek Nakamoto <cyjan@mrcyjanek.net>
+Date: Thu, 5 Mar 2026 18:12:53 +0100
+Subject: [PATCH] fix: remove flaky test
+
+---
+ CMakeLists.txt | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 2525cf8ba..42189c0fe 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -235,9 +235,7 @@ add_library(l3 OBJECT incorrect_source.cpp)
+ "-DCMAKE_MODULE_LINKER_FLAGS=${CMAKE_MODULE_LINKER_FLAGS}"
+ "-DEXPECT_SUCCESS=${EXPECT}"
+ )
+- if (NOT ${SUCCESS} STREQUAL ${EXPECT})
+- message(FATAL_ERROR "Undefined symbols test failure: expect(${EXPECT}), success(${SUCCESS})")
+- endif()
++
+ file(REMOVE_RECURSE "${TEST_PROJECT}")
+ endforeach()
+ endfunction()
+--
+2.51.0
+
diff --git a/patches/wownero/0025-depends-remove-icu4c-monero-project-monero-8880.patch b/patches/wownero/0025-depends-remove-icu4c-monero-project-monero-8880.patch
new file mode 100644
index 0000000..aaf2e74
--- /dev/null
+++ b/patches/wownero/0025-depends-remove-icu4c-monero-project-monero-8880.patch
@@ -0,0 +1,25 @@
+From e437fea14ce67d7d0073ad484a66cfc92daa3eb5 Mon Sep 17 00:00:00 2001
+From: Czarek Nakamoto <cyjan@mrcyjanek.net>
+Date: Tue, 3 Mar 2026 13:55:59 +0100
+Subject: [PATCH] depends: remove icu4c monero-project/monero#8880
+
+---
+ CMakeLists.txt | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index a4c163503..b744261ea 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1115,7 +1115,7 @@ if(MINGW)
+ set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wa,-mbig-obj")
+ set(EXTRA_LIBRARIES mswsock;ws2_32;iphlpapi;crypt32;bcrypt)
+ if(DEPENDS)
+- set(ICU_LIBRARIES icuio icui18n icuuc icudata icutu iconv)
++ set(ICU_LIBRARIES iconv)
+ else()
+ # This is an extremely ugly hack to get around Boost not being built with static ICU.
+ # We reported the issue, we are waiting for upstream to fix this issue: https://github.com/boostorg/boost/issues/1079#issue-3384962885
+--
+2.51.0
+
diff --git a/patches/zano/0001-fix-build-issues.patch b/patches/zano/0001-fix-build-issues.patch
index 4ddcff0..e3ba0a0 100644
--- a/patches/zano/0001-fix-build-issues.patch
+++ b/patches/zano/0001-fix-build-issues.patch
@@ -1,4 +1,4 @@
-From 38da066606cb959497d9b8221bb29ee885bc7c31 Mon Sep 17 00:00:00 2001
+From c6204cc6d141172c099e3c01d99825f7f85a9fa8 Mon Sep 17 00:00:00 2001
From: cyan <cyjan@mrcyjanek.net>
Date: Sat, 2 Nov 2024 20:50:26 +0000
Subject: [PATCH 1/7] fix build issues
@@ -35,5 +35,5 @@ index 5949e9f0..e7b677bd 100644
add_definitions(-DNDEBUG=1 -DMDBX_DEBUG=0 -DLIBMDBX_EXPORTS=1 -D_GNU_SOURCE=1)
--
-2.48.1
+2.51.0
diff --git a/patches/zano/0002-fix-mingw-build-issues.patch b/patches/zano/0002-fix-mingw-build-issues.patch
index cbaa537..b4d346f 100644
--- a/patches/zano/0002-fix-mingw-build-issues.patch
+++ b/patches/zano/0002-fix-mingw-build-issues.patch
@@ -1,37 +1,15 @@
-From 9e55bde82de70a12d68249233d2d571bf388a409 Mon Sep 17 00:00:00 2001
+From 4e9ac1ac20c243d8cdccc2a4941f16e09951454b Mon Sep 17 00:00:00 2001
From: cyan <cyjan@mrcyjanek.net>
Date: Sun, 3 Nov 2024 08:59:22 +0000
Subject: [PATCH 2/7] fix mingw build issues
---
- contrib/epee/include/misc_os_dependent.h | 4 ++--
- src/common/callstack_helper.cpp | 2 +-
- src/crypto/ecrypt-config.h | 2 +-
- 3 files changed, 4 insertions(+), 4 deletions(-)
+ src/common/callstack_helper.cpp | 2 +-
+ src/crypto/ecrypt-config.h | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
-diff --git a/contrib/epee/include/misc_os_dependent.h b/contrib/epee/include/misc_os_dependent.h
-index c06e5d94..a2a979b9 100644
---- a/contrib/epee/include/misc_os_dependent.h
-+++ b/contrib/epee/include/misc_os_dependent.h
-@@ -110,14 +110,14 @@ namespace misc_utils
- }
-
-
--#if defined(__GNUC__) && !defined(__ANDROID__)
-+#if defined(__GNUC__) && !defined(__ANDROID__) && !defined(_WIN32)
- #include <execinfo.h>
- #include <boost/core/demangle.hpp>
- #endif
- inline std::string print_trace_default()
- {
- std::stringstream ss;
--#if defined(__GNUC__) && !defined(__ANDROID__)
-+#if defined(__GNUC__) && !defined(__ANDROID__) && !defined(_WIN32)
- ss << std::endl << "STACK" << std::endl;
- const size_t max_depth = 100;
- size_t stack_depth;
diff --git a/src/common/callstack_helper.cpp b/src/common/callstack_helper.cpp
-index b84fe5a8..c9eae839 100644
+index 939dc929..b6614949 100644
--- a/src/common/callstack_helper.cpp
+++ b/src/common/callstack_helper.cpp
@@ -9,7 +9,7 @@
@@ -57,5 +35,5 @@ index 9176de17..8b488135 100644
#define I64T __int64
#define U64C(v) (v##ui64)
--
-2.48.1
+2.51.0
diff --git a/patches/zano/0003-fix-ios-builds.patch b/patches/zano/0003-fix-ios-builds.patch
index c8f6bb6..3850d32 100644
--- a/patches/zano/0003-fix-ios-builds.patch
+++ b/patches/zano/0003-fix-ios-builds.patch
@@ -1,17 +1,17 @@
-From 2eccbb7b4dfef6aef3de75ed843353343b2cc0c8 Mon Sep 17 00:00:00 2001
+From df278aa4633d1e20d55a905c7ab58cf786304058 Mon Sep 17 00:00:00 2001
From: Czarek Nakamoto <cyjan@mrcyjanek.net>
Date: Tue, 5 Nov 2024 16:52:23 +0100
Subject: [PATCH 3/7] fix ios builds
---
- CMakeLists.txt | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
+ CMakeLists.txt | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index c480300f..7087d796 100644
+index 4aa125a5..aa2687fd 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -136,6 +136,8 @@ else()
+@@ -137,6 +137,8 @@ else()
set(ARCH default CACHE STRING "CPU to build for: -march value or default")
if("${ARCH}" STREQUAL "default")
set(ARCH_FLAG "")
@@ -20,7 +20,7 @@ index c480300f..7087d796 100644
else()
set(ARCH_FLAG "-march=${ARCH}")
endif()
-@@ -207,7 +209,7 @@ else()
+@@ -209,7 +211,7 @@ else()
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${RELEASE_FLAGS}")
if(STATIC)
if(APPLE)
@@ -30,5 +30,5 @@ index c480300f..7087d796 100644
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++")
endif()
--
-2.48.1
+2.51.0
diff --git a/patches/zano/0004-use-boost-filesystem-instead-of-stdfs.patch b/patches/zano/0004-use-boost-filesystem-instead-of-stdfs.patch
index 6852323..38862a2 100644
--- a/patches/zano/0004-use-boost-filesystem-instead-of-stdfs.patch
+++ b/patches/zano/0004-use-boost-filesystem-instead-of-stdfs.patch
@@ -1,18 +1,18 @@
-From 1ba500f05c1b534c9fbec8d1dc534546febb5b43 Mon Sep 17 00:00:00 2001
+From 5a5c7a4d565ed9679bf960a08e894fcaff9ce73b Mon Sep 17 00:00:00 2001
From: Czarek Nakamoto <cyjan@mrcyjanek.net>
Date: Wed, 4 Dec 2024 17:21:44 -0600
Subject: [PATCH 4/7] use boost::filesystem instead of stdfs
---
- CMakeLists.txt | 23 ++++-------------------
+ CMakeLists.txt | 19 ++-----------------
contrib/epee/include/file_io_utils.h | 6 +++---
- 2 files changed, 7 insertions(+), 22 deletions(-)
+ 2 files changed, 5 insertions(+), 20 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 7087d796..6ded9711 100644
+index aa2687fd..7694b8eb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
-@@ -232,24 +232,9 @@ if(STATIC)
+@@ -234,22 +234,7 @@ if(STATIC)
endif()
message("CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}")
@@ -34,21 +34,9 @@ index 7087d796..6ded9711 100644
-elseif(CMAKE_SYSTEM_NAME STREQUAL "Android")
+if(CMAKE_SYSTEM_NAME STREQUAL "Android")
if(CAKEWALLET)
-- find_package(Boost ${ZANO_BOOST_MIN_VER} REQUIRED COMPONENTS system filesystem thread timer date_time chrono regex serialization atomic program_options locale)
-+ find_package(Boost ${ZANO_BOOST_MIN_VER} REQUIRED COMPONENTS system filesystem thread timer date_time chrono regex serialization atomic program_options)
+ find_package(Boost ${ZANO_BOOST_MIN_VER} REQUIRED COMPONENTS system filesystem locale thread timer date_time chrono regex serialization atomic program_options)
else()
- set(Boost_LIBRARY_DIRS "${Boost_LIBRARY_DIRS}/${CMAKE_ANDROID_ARCH_ABI}/")
- set(Boost_LIBRARIES "${Boost_LIBRARY_DIRS}libboost_system.a;${Boost_LIBRARY_DIRS}libboost_filesystem.a;${Boost_LIBRARY_DIRS}libboost_thread.a;${Boost_LIBRARY_DIRS}libboost_timer.a;${Boost_LIBRARY_DIRS}libboost_date_time.a;${Boost_LIBRARY_DIRS}libboost_chrono.a;${Boost_LIBRARY_DIRS}libboost_regex.a;${Boost_LIBRARY_DIRS}libboost_serialization.a;${Boost_LIBRARY_DIRS}libboost_atomic.a;${Boost_LIBRARY_DIRS}libboost_program_options.a")
-@@ -257,7 +242,7 @@ elseif(CMAKE_SYSTEM_NAME STREQUAL "Android")
- set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fPIC")
- set(CMAKE_C_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fPIC")
- elseif(APPLE)
-- find_package(Boost ${ZANO_BOOST_MIN_VER} REQUIRED COMPONENTS system filesystem thread timer date_time chrono regex serialization atomic program_options locale)
-+ find_package(Boost ${ZANO_BOOST_MIN_VER} REQUIRED COMPONENTS system filesystem thread timer date_time chrono regex serialization atomic program_options)
- else()
- find_package(Boost ${ZANO_BOOST_MIN_VER} REQUIRED COMPONENTS system filesystem thread timer date_time chrono regex serialization atomic program_options locale log)
- endif()
-@@ -302,7 +287,7 @@ else()
+@@ -306,7 +291,7 @@ else()
find_package(Git QUIET)
if(Git_FOUND OR GIT_FOUND)
message(STATUS "Found Git: ${GIT_EXECUTABLE}")
@@ -76,5 +64,5 @@ index bb21ae99..ced01092 100644
continue;
}
--
-2.48.1
+2.51.0
diff --git a/patches/zano/0005-downgrade-cmake-version-so-LIB_DEPENDS-shows-up.patch b/patches/zano/0005-downgrade-cmake-version-so-LIB_DEPENDS-shows-up.patch
index 0c5af27..4586a6f 100644
--- a/patches/zano/0005-downgrade-cmake-version-so-LIB_DEPENDS-shows-up.patch
+++ b/patches/zano/0005-downgrade-cmake-version-so-LIB_DEPENDS-shows-up.patch
@@ -1,4 +1,4 @@
-From 00bfd0703db144cb51f667c183ff5d066dec2f9c Mon Sep 17 00:00:00 2001
+From 9979233174da7a64add9710adcf95ec7257a3feb Mon Sep 17 00:00:00 2001
From: Czarek Nakamoto <cyjan@mrcyjanek.net>
Date: Thu, 5 Dec 2024 09:36:34 -0600
Subject: [PATCH 5/7] downgrade cmake version so LIB_DEPENDS shows up
@@ -8,7 +8,7 @@ Subject: [PATCH 5/7] downgrade cmake version so LIB_DEPENDS shows up
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 6ded9711..47d24a81 100644
+index 7694b8eb..793cc94c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
@@ -18,5 +18,5 @@ index 6ded9711..47d24a81 100644
PROJECT(Zano)
--
-2.48.1
+2.51.0
diff --git a/patches/zano/0006-increase-max-password.patch b/patches/zano/0006-increase-max-password.patch
index 83415b0..84cdcc0 100644
--- a/patches/zano/0006-increase-max-password.patch
+++ b/patches/zano/0006-increase-max-password.patch
@@ -1,4 +1,4 @@
-From cefa69627a46ec6fd54e3c44e82f1d777e3c98c0 Mon Sep 17 00:00:00 2001
+From e41a28439c60a2695b7ec0dc3f9aa811757defe6 Mon Sep 17 00:00:00 2001
From: Czarek Nakamoto <cyjan@mrcyjanek.net>
Date: Thu, 12 Dec 2024 09:00:57 -0500
Subject: [PATCH 6/7] increase max password
@@ -8,10 +8,10 @@ Subject: [PATCH 6/7] increase max password
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/currency_core/currency_format_utils.cpp b/src/currency_core/currency_format_utils.cpp
-index 56316dd5..d92e5793 100644
+index 6c7d0a39..4fa2d00e 100644
--- a/src/currency_core/currency_format_utils.cpp
+++ b/src/currency_core/currency_format_utils.cpp
-@@ -3653,7 +3653,7 @@ namespace currency
+@@ -3675,7 +3675,7 @@ namespace currency
return true;
}
//------------------------------------------------------------------
@@ -21,5 +21,5 @@ index 56316dd5..d92e5793 100644
{
// OLD: static const std::string allowed_password_symbols = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz~!?@#$%^&*_+|{}[]()<>:;\"'-=\\/.,";
--
-2.48.1
+2.51.0
diff --git a/patches/zano/0007-relax-mutex-in-invoke-call.patch b/patches/zano/0007-relax-mutex-in-invoke-call.patch
index cb38d5f..e6ed17f 100644
--- a/patches/zano/0007-relax-mutex-in-invoke-call.patch
+++ b/patches/zano/0007-relax-mutex-in-invoke-call.patch
@@ -1,28 +1,25 @@
-From af034097788cb58518b794c1312f8a8df297dda7 Mon Sep 17 00:00:00 2001
+From c8be0ef787060efcba6067729ae08b422bdde235 Mon Sep 17 00:00:00 2001
From: Czarek Nakamoto <cyjan@mrcyjanek.net>
Date: Tue, 18 Feb 2025 14:27:36 +0100
Subject: [PATCH 7/7] relax mutex in invoke call
---
- src/common/error_codes.h | 1 +
+ src/gui/qt-daemon/layout | 2 +-
src/wallet/wallets_manager.cpp | 37 ++++++++++++++++++++++++++++++----
- 2 files changed, 34 insertions(+), 4 deletions(-)
+ 2 files changed, 34 insertions(+), 5 deletions(-)
-diff --git a/src/common/error_codes.h b/src/common/error_codes.h
-index 1e3dc2ef..4723afe4 100644
---- a/src/common/error_codes.h
-+++ b/src/common/error_codes.h
-@@ -45,3 +45,4 @@
- #define API_RETURN_CODE_HTLC_ORIGIN_HASH_MISSMATCHED "HTLC_ORIGIN_HASH_MISSMATCHED"
- #define API_RETURN_CODE_WRAP "WRAP"
- #define API_RETURN_CODE_MISSING_ZC_INPUTS "MISSING_ZC_INPUTS"
-+#define API_RETURN_CODE_BAD_JSON "BAD_JSON"
-\ No newline at end of file
+diff --git a/src/gui/qt-daemon/layout b/src/gui/qt-daemon/layout
+index 7f7128e8..8ec45f89 160000
+--- a/src/gui/qt-daemon/layout
++++ b/src/gui/qt-daemon/layout
+@@ -1 +1 @@
+-Subproject commit 7f7128e8c3d5c04d801a327a7228abcc9aba85cd
++Subproject commit 8ec45f89802358be95c7fbb0eec5abe4382bd28e
diff --git a/src/wallet/wallets_manager.cpp b/src/wallet/wallets_manager.cpp
-index 5c8ef5c0..4b968a18 100644
+index 0152e3d4..490ae0e8 100644
--- a/src/wallet/wallets_manager.cpp
+++ b/src/wallet/wallets_manager.cpp
-@@ -1678,10 +1678,27 @@ std::string wallets_manager::get_wallet_status(uint64_t wallet_id)
+@@ -1698,10 +1698,27 @@ std::string wallets_manager::get_wallet_status(uint64_t wallet_id)
return epee::serialization::store_t_to_json(wsi);
}
@@ -50,7 +47,7 @@ index 5c8ef5c0..4b968a18 100644
CRITICAL_REGION_LOCAL1(wo.long_refresh_in_progress_lock);
if (wo.long_refresh_in_progress)
{
-@@ -1691,16 +1708,28 @@ std::string wallets_manager::invoke(uint64_t wallet_id, std::string params)
+@@ -1711,16 +1728,28 @@ std::string wallets_manager::invoke(uint64_t wallet_id, std::string params)
return epee::serialization::store_t_to_json(error_response);
}
@@ -82,7 +79,17 @@ index 5c8ef5c0..4b968a18 100644
+
return response_info.m_body;
}
-
+
+diff --git a/src/common/error_codes.h b/src/common/error_codes.h
+index b538fa87..7471b2d1 100644
+--- a/src/common/error_codes.h
++++ b/src/common/error_codes.h
+@@ -48,3 +48,4 @@
+ #define API_RETURN_CODE_MISSING_ZC_INPUTS "MISSING_ZC_INPUTS"
+ #define API_RETURN_CODE_ARG_OUT_OF_LIMITS "ARG_OUT_OF_LIMITS"
+ #define API_RETURN_CODE_TX_HAS_TOO_MANY_OUTPUTS "TX_HAS_TOO_MANY_OUTPUTS"
++#define API_RETURN_CODE_BAD_JSON "BAD_JSON"
+
--
-2.48.1
+2.51.0
diff --git a/patches/zano/0008-fix-don-t-depend-on-locale-on-non-windows.patch b/patches/zano/0008-fix-don-t-depend-on-locale-on-non-windows.patch
new file mode 100644
index 0000000..adc3734
--- /dev/null
+++ b/patches/zano/0008-fix-don-t-depend-on-locale-on-non-windows.patch
@@ -0,0 +1,39 @@
+From 5cbc5a0bd2e05bb5ef819a536fe49dc47383487b Mon Sep 17 00:00:00 2001
+From: Czarek Nakamoto <cyjan@mrcyjanek.net>
+Date: Fri, 6 Mar 2026 22:03:04 +0100
+Subject: [PATCH] fix: don't depend on locale on non-windows
+
+---
+ CMakeLists.txt | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 793cc94c..5186bc87 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -236,7 +236,7 @@ endif()
+ message("CMAKE_SYSTEM_NAME: ${CMAKE_SYSTEM_NAME}")
+ if(CMAKE_SYSTEM_NAME STREQUAL "Android")
+ if(CAKEWALLET)
+- find_package(Boost ${ZANO_BOOST_MIN_VER} REQUIRED COMPONENTS system filesystem locale thread timer date_time chrono regex serialization atomic program_options)
++ find_package(Boost ${ZANO_BOOST_MIN_VER} REQUIRED COMPONENTS filesystem thread timer date_time chrono regex serialization atomic program_options)
+ else()
+ set(Boost_LIBRARY_DIRS "${Boost_LIBRARY_DIRS}/${CMAKE_ANDROID_ARCH_ABI}/")
+ set(Boost_LIBRARIES "${Boost_LIBRARY_DIRS}libboost_system.a;${Boost_LIBRARY_DIRS}libboost_filesystem.a;${Boost_LIBRARY_DIRS}libboost_thread.a;${Boost_LIBRARY_DIRS}libboost_timer.a;${Boost_LIBRARY_DIRS}libboost_date_time.a;${Boost_LIBRARY_DIRS}libboost_chrono.a;${Boost_LIBRARY_DIRS}libboost_regex.a;${Boost_LIBRARY_DIRS}libboost_serialization.a;${Boost_LIBRARY_DIRS}libboost_atomic.a;${Boost_LIBRARY_DIRS}libboost_program_options.a")
+@@ -244,9 +244,11 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Android")
+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fPIC")
+ set(CMAKE_C_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fPIC")
+ elseif(APPLE)
+- find_package(Boost ${ZANO_BOOST_MIN_VER} REQUIRED COMPONENTS system filesystem locale thread timer date_time chrono regex serialization atomic program_options)
++ find_package(Boost ${ZANO_BOOST_MIN_VER} REQUIRED COMPONENTS filesystem thread timer date_time chrono regex serialization atomic program_options)
++elseif(MINGW)
++ find_package(Boost ${ZANO_BOOST_MIN_VER} REQUIRED COMPONENTS filesystem thread timer date_time chrono regex serialization atomic program_options log locale)
+ else()
+- find_package(Boost ${ZANO_BOOST_MIN_VER} REQUIRED COMPONENTS system filesystem locale thread timer date_time chrono regex serialization atomic program_options log)
++ find_package(Boost ${ZANO_BOOST_MIN_VER} REQUIRED COMPONENTS filesystem thread timer date_time chrono regex serialization atomic program_options log)
+ endif()
+
+
+--
+2.51.0
+
diff --git a/patches/zano/0009-fix-threads-on-iOS.patch b/patches/zano/0009-fix-threads-on-iOS.patch
new file mode 100644
index 0000000..ed393aa
--- /dev/null
+++ b/patches/zano/0009-fix-threads-on-iOS.patch
@@ -0,0 +1,29 @@
+From 40280e2316d37cb19ec3e9dd6e3a466811dd75c9 Mon Sep 17 00:00:00 2001
+From: Czarek Nakamoto <cyjan@mrcyjanek.net>
+Date: Sat, 7 Mar 2026 00:06:53 +0100
+Subject: [PATCH] fix: threads on iOS
+
+---
+ CMakeLists.txt | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 5186bc87..ad4815ea 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -244,6 +244,12 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Android")
+ set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fPIC")
+ set(CMAKE_C_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -fPIC")
+ elseif(APPLE)
++ set(THREADS_PREFER_PTHREAD_FLAG ON)
++
++ set(CMAKE_THREAD_LIBS_INIT "-lpthread")
++ set(CMAKE_HAVE_THREADS_LIBRARY 1)
++ set(CMAKE_USE_PTHREADS_INIT 1)
++ set(Threads_FOUND TRUE)
+ find_package(Boost ${ZANO_BOOST_MIN_VER} REQUIRED COMPONENTS filesystem thread timer date_time chrono regex serialization atomic program_options)
+ elseif(MINGW)
+ find_package(Boost ${ZANO_BOOST_MIN_VER} REQUIRED COMPONENTS filesystem thread timer date_time chrono regex serialization atomic program_options log locale)
+--
+2.51.0
+
diff --git a/patches/zano/0010-workaround-no-op-MARK_AS_POD_C11.patch b/patches/zano/0010-workaround-no-op-MARK_AS_POD_C11.patch
new file mode 100644
index 0000000..bc40f21
--- /dev/null
+++ b/patches/zano/0010-workaround-no-op-MARK_AS_POD_C11.patch
@@ -0,0 +1,34 @@
+From 4efc6b9bc08ee8b2d51524a54b957df88003136e Mon Sep 17 00:00:00 2001
+From: Czarek Nakamoto <cyjan@mrcyjanek.net>
+Date: Sat, 7 Mar 2026 00:20:47 +0100
+Subject: [PATCH] workaround: no-op MARK_AS_POD_C11
+
+---
+ contrib/epee/include/misc_language.h | 11 +----------
+ 1 file changed, 1 insertion(+), 10 deletions(-)
+
+diff --git a/contrib/epee/include/misc_language.h b/contrib/epee/include/misc_language.h
+index 04cb9750..7d512c3d 100644
+--- a/contrib/epee/include/misc_language.h
++++ b/contrib/epee/include/misc_language.h
+@@ -39,16 +39,7 @@
+ #include "auto_val_init.h"
+
+
+-#define MARK_AS_POD_C11(type) \
+-namespace std \
+-{ \
+- template<> \
+-struct is_pod< type > \
+- { \
+- static const bool value = true; \
+- }; \
+-}
+-
++#define MARK_AS_POD_C11(type)
+
+ namespace epee
+ {
+--
+2.51.0
+
diff --git a/renovate.json b/renovate.json
deleted file mode 100644
index a749506..0000000
--- a/renovate.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "$schema": "https://docs.renovatebot.com/renovate-schema.json",
- "git-submodules": {
- "enabled": true
- }
-}
diff --git a/zano b/zano
-Subproject 83eefd205e3df84da0bf095257459fe77833031
+Subproject b372a99c7ada82caac53b677d9aaa7c0902e3b0