macOS and Windows users currently cannot run 4.8.0 at all. The release that fixes
the August 2026 consensus flaw exists as a Linux x86_64 binary only, so everyone else is
still on 4.7.0 — which stalls in the affected range and never recovers. That is a live
problem for anyone holding RVN on those platforms right now.
I built 4.8.0 for macOS arm64 and Windows x64 from the tagged source and have both
running against mainnet. Posting the full procedure and patches here rather than asking
anyone to trust binaries from a stranger — a maintainer-signed release would be far more
useful, and I am happy to open a PR with any part of this.
(The v4.8.0 tag lives in 2miners/Ravencoin, whose issue tracker is disabled, so I am
raising it here. Please redirect me if there is a better venue.)
Happy to open a PR with any of this.
Result
- macOS:
Raven-Qt.app (Apple Silicon native, arm64), ravend, raven-cli
- Windows:
raven-qt.exe (Qt statically linked, no runtime DLLs), ravend.exe, raven-cli.exe
- A mainnet wallet stalled at height 4,472,087 resynced and crossed
4,489,527 – 4,491,615 in 21 seconds, with zero bad-blk-height rejections
getnetworkinfo → "subversion": "/Ravencoin:4.8.0/", "version": 4080000
Note the macOS side: the official 4.7.0 macOS binary is x86_64 and runs under Rosetta
on M-series Macs. depends/ has no aarch64-darwin support at all, so an arm64 build
needs the fixes below.
Consensus, signing and cryptographic code is untouched. Exactly one line under src/
affects the node (item 10).
Build environment
macOS 26.5 / Apple clang 21, mingw-w64 GCC 16.2. The build scripts are from 2017–2019,
so most of what follows is toolchain drift rather than bugs in Ravencoin. Roughly half
of these only appear on a macOS host, so anyone who has only cross-compiled from Linux
will not have hit them.
depends
-
config.sub predates arm64 macOS. It rejects arm64-apple-darwin but accepts
aarch64-apple-darwin. Refreshing depends/config.{sub,guess} is not enough — every
library tarball carries its own copy. Using HOST=aarch64-apple-darwin sidesteps all
of them at once; the emitted code is identical.
-
openssl.mk has no aarch64-darwin target, and passes no AR/RANLIB. Without
them the macOS BSD ar refuses the mingw COFF objects
(ranlib: warning: ... not a mach-o file) and writes a 96-byte empty archive, then
exits 0. depends caches that as a successful build, and the failure only surfaces
much later as undefined reference to OPENSSL_init_crypto while linking ravend.exe.
This cost the most time by far — a size sanity-check on depends artifacts would have
caught it immediately.
-
builders/darwin.mk invokes the compiler by absolute path (xcrun -f clang),
which skips the SDK selection xcrun clang would have done. Modern macOS has no
/usr/include, so even <cstddef> fails to resolve. Needs -isysroot.
Separately: the existing build_darwin_CC: = ... lines have a stray colon, so those
variables are never actually set.
-
Boost 1.71 vs clang 21, two issues:
- derives from
std::unary_function, removed from libc++ →
-D_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTION
mpl::integral_c casts value-1 back into the 0..3 enums in numeric/conversion,
i.e. -1, rejected since clang 16 — and clang 21 no longer has
-Wno-enum-constexpr-conversion, so it cannot be suppressed. Giving those three
enums a fixed underlying type (enum foo : int) widens the legal range without
changing any enumerator.
- The main tree needs the same macro; configure's Boost::Thread probe fails without it.
-
BDB 4.8 finds no arm64 mutex implementation, falls back to UNIX/fcntl, then aborts
with "Unable to find a mutex implementation". --with-mutex=POSIX/pthreads/library
fixes it — in-process locking only, wallet.dat format unaffected.
-
qt.mk assumes GNU sed. BSD sed silently ignores the 0,/re/ address form and
treats \0 as a literal 0. Two patches therefore appear to apply while changing
nothing, and Qt's configure then fails with Project ERROR: failed to parse default search paths from compiler output because LIBRARY_PATH vanished from
toolchain.prf. The clang.conf rewrite also has to be gated on darwin targets, or
the host qmake is built with the mingw compiler and dies on -stdlib=libc++.
-
native_ccache (2017) no longer configures, and the .dmg helpers
(native_biplist etc.) invoke a bare python. Neither is needed to build the wallet.
Dropping them via the command line is a trap: a command-line native_packages= also
discards the native_packages += lines in depends/Makefile, taking
native_protobuf with it.
-
miniupnpc 2.0 vs GCC 16 — several warnings are now hard errors, and its
Makefile.mingw defines its own CFLAGS, so the environment variable is ignored.
-
qrencode returns the bare VERSION macro, which current autoheader no longer
emits (only PACKAGE_VERSION).
Main tree
-
RAND_screen() was removed in OpenSSL 1.1 (util.cpp:139), so Windows fails to
link. Guarding it on OPENSSL_VERSION_NUMBER is enough — 1.1+ seeds its PRNG from
the OS. This is the only functional change I needed.
-
-lssp collides on modern mingw, which provides the stack protector in the CRT:
multiple definition of __stack_chk_fail. Making AC_CHECK_LIB([ssp]) conditional
on AC_CHECK_FUNC([__stack_chk_fail]) keeps hardening enabled either way.
-
~60 files rely on <stdexcept> / <limits> arriving transitively.
CXXFLAGS="-include stdexcept -include limits" at make time fixes all of them
without touching source. It must not go into configure: autoconf's legacy link
probe declares extern "C" int exit ();, which conflicts with the real exit(int)
and breaks Boost detection.
Bugs in released 4.8.0 (all platforms)
Found while testing, unrelated to the build:
-
The market price display is wrong. ravengui.cpp queries Binance's RVNBTC, but
that market has been delisted. The endpoint still answers with a stale price of about
10 sat — roughly 2.4× reality. Cross-checking the live RVNUSDT and BTCUSDT markets
gives ~4.4 sat, which matches other exchanges. The wallet presents the stale number as
fact. (It also still calls API v1, long deprecated.)
-
IPFS links never open on macOS. QDesktopServices::openUrl() returns true even when
LaunchServices declines, and every call site discards the return value, so the action is
silently dead with no feedback.
-
Two Clear buttons do nothing. AssignQualifier::clear() and FreezeAddress::clear()
are declared as plain methods, so SLOT(clear()) never resolves — visible as
QObject::connect: No such slot in the debug log.
MyRestrictedAssetsTableModel::updateDisplayUnit() has the same problem.
Patches
Branch: https://github.com/PLAYX1/Ravencoin/tree/macos-windows-gui-4.8.0
Two commits — build fixes and defect fixes are separated from interface changes so they
can be taken piecemeal. I can rebase, split them further, or open a PR against whichever
branch you prefer.
I can also test macOS/Windows builds on Apple Silicon against mainnet if that helps.
macOS and Windows users currently cannot run 4.8.0 at all. The release that fixes
the August 2026 consensus flaw exists as a Linux x86_64 binary only, so everyone else is
still on 4.7.0 — which stalls in the affected range and never recovers. That is a live
problem for anyone holding RVN on those platforms right now.
I built 4.8.0 for macOS arm64 and Windows x64 from the tagged source and have both
running against mainnet. Posting the full procedure and patches here rather than asking
anyone to trust binaries from a stranger — a maintainer-signed release would be far more
useful, and I am happy to open a PR with any part of this.
(The
v4.8.0tag lives in2miners/Ravencoin, whose issue tracker is disabled, so I amraising it here. Please redirect me if there is a better venue.)
Happy to open a PR with any of this.
Result
Raven-Qt.app(Apple Silicon native, arm64),ravend,raven-cliraven-qt.exe(Qt statically linked, no runtime DLLs),ravend.exe,raven-cli.exe4,489,527 – 4,491,615 in 21 seconds, with zero
bad-blk-heightrejectionsgetnetworkinfo→"subversion": "/Ravencoin:4.8.0/","version": 4080000Note the macOS side: the official 4.7.0 macOS binary is x86_64 and runs under Rosetta
on M-series Macs.
depends/has no aarch64-darwin support at all, so an arm64 buildneeds the fixes below.
Consensus, signing and cryptographic code is untouched. Exactly one line under
src/affects the node (item 10).
Build environment
macOS 26.5 / Apple clang 21, mingw-w64 GCC 16.2. The build scripts are from 2017–2019,
so most of what follows is toolchain drift rather than bugs in Ravencoin. Roughly half
of these only appear on a macOS host, so anyone who has only cross-compiled from Linux
will not have hit them.
depends
config.subpredates arm64 macOS. It rejectsarm64-apple-darwinbut acceptsaarch64-apple-darwin. Refreshingdepends/config.{sub,guess}is not enough — everylibrary tarball carries its own copy. Using
HOST=aarch64-apple-darwinsidesteps allof them at once; the emitted code is identical.
openssl.mkhas no aarch64-darwin target, and passes noAR/RANLIB. Withoutthem the macOS BSD
arrefuses the mingw COFF objects(
ranlib: warning: ... not a mach-o file) and writes a 96-byte empty archive, thenexits 0. depends caches that as a successful build, and the failure only surfaces
much later as
undefined reference to OPENSSL_init_cryptowhile linkingravend.exe.This cost the most time by far — a size sanity-check on depends artifacts would have
caught it immediately.
builders/darwin.mkinvokes the compiler by absolute path (xcrun -f clang),which skips the SDK selection
xcrun clangwould have done. Modern macOS has no/usr/include, so even<cstddef>fails to resolve. Needs-isysroot.Separately: the existing
build_darwin_CC: = ...lines have a stray colon, so thosevariables are never actually set.
Boost 1.71 vs clang 21, two issues:
std::unary_function, removed from libc++ →-D_LIBCPP_ENABLE_CXX17_REMOVED_UNARY_BINARY_FUNCTIONmpl::integral_ccastsvalue-1back into the 0..3 enums innumeric/conversion,i.e.
-1, rejected since clang 16 — and clang 21 no longer has-Wno-enum-constexpr-conversion, so it cannot be suppressed. Giving those threeenums a fixed underlying type (
enum foo : int) widens the legal range withoutchanging any enumerator.
BDB 4.8 finds no arm64 mutex implementation, falls back to UNIX/fcntl, then aborts
with "Unable to find a mutex implementation".
--with-mutex=POSIX/pthreads/libraryfixes it — in-process locking only,
wallet.datformat unaffected.qt.mkassumes GNU sed. BSD sed silently ignores the0,/re/address form andtreats
\0as a literal0. Two patches therefore appear to apply while changingnothing, and Qt's configure then fails with
Project ERROR: failed to parse default search paths from compiler outputbecauseLIBRARY_PATHvanished fromtoolchain.prf. Theclang.confrewrite also has to be gated on darwin targets, orthe host qmake is built with the mingw compiler and dies on
-stdlib=libc++.native_ccache(2017) no longer configures, and the.dmghelpers(
native_biplistetc.) invoke a barepython. Neither is needed to build the wallet.Dropping them via the command line is a trap: a command-line
native_packages=alsodiscards the
native_packages +=lines independs/Makefile, takingnative_protobufwith it.miniupnpc 2.0 vs GCC 16 — several warnings are now hard errors, and its
Makefile.mingwdefines its ownCFLAGS, so the environment variable is ignored.qrencode returns the bare
VERSIONmacro, which current autoheader no longeremits (only
PACKAGE_VERSION).Main tree
RAND_screen()was removed in OpenSSL 1.1 (util.cpp:139), so Windows fails tolink. Guarding it on
OPENSSL_VERSION_NUMBERis enough — 1.1+ seeds its PRNG fromthe OS. This is the only functional change I needed.
-lsspcollides on modern mingw, which provides the stack protector in the CRT:multiple definition of __stack_chk_fail. MakingAC_CHECK_LIB([ssp])conditionalon
AC_CHECK_FUNC([__stack_chk_fail])keeps hardening enabled either way.~60 files rely on
<stdexcept>/<limits>arriving transitively.CXXFLAGS="-include stdexcept -include limits"atmaketime fixes all of themwithout touching source. It must not go into
configure: autoconf's legacy linkprobe declares
extern "C" int exit ();, which conflicts with the realexit(int)and breaks Boost detection.
Bugs in released 4.8.0 (all platforms)
Found while testing, unrelated to the build:
The market price display is wrong.
ravengui.cppqueries Binance'sRVNBTC, butthat market has been delisted. The endpoint still answers with a stale price of about
10 sat — roughly 2.4× reality. Cross-checking the live
RVNUSDTandBTCUSDTmarketsgives ~4.4 sat, which matches other exchanges. The wallet presents the stale number as
fact. (It also still calls API v1, long deprecated.)
IPFS links never open on macOS.
QDesktopServices::openUrl()returns true even whenLaunchServices declines, and every call site discards the return value, so the action is
silently dead with no feedback.
Two Clear buttons do nothing.
AssignQualifier::clear()andFreezeAddress::clear()are declared as plain methods, so
SLOT(clear())never resolves — visible asQObject::connect: No such slotin the debug log.MyRestrictedAssetsTableModel::updateDisplayUnit()has the same problem.Patches
Branch: https://github.com/PLAYX1/Ravencoin/tree/macos-windows-gui-4.8.0
Two commits — build fixes and defect fixes are separated from interface changes so they
can be taken piecemeal. I can rebase, split them further, or open a PR against whichever
branch you prefer.
I can also test macOS/Windows builds on Apple Silicon against mainnet if that helps.