From 10a1b27de121655fd520115bc72241237833a57e Mon Sep 17 00:00:00 2001 From: dan_s Date: Wed, 25 Feb 2026 23:50:14 -0600 Subject: [PATCH] reorganizing release ouput to cleaner directory structure --- .gitignore | 1 + build-docker-release.sh | 12 +++++++++--- build.sh | 2 +- util/build-mac.sh | 31 +++++++++++++++++++++++++++++++ util/build-win.sh | 11 ++++++++++- 5 files changed, 52 insertions(+), 5 deletions(-) diff --git a/.gitignore b/.gitignore index eedc10499..e3a32e146 100644 --- a/.gitignore +++ b/.gitignore @@ -175,6 +175,7 @@ src/RandomX/build-linux/ src/RandomX/build-win64/ src/wallet-utility.exe src/.build_target +release/ # other repos/ \ No newline at end of file diff --git a/build-docker-release.sh b/build-docker-release.sh index 73d415693..67602fe69 100755 --- a/build-docker-release.sh +++ b/build-docker-release.sh @@ -11,22 +11,28 @@ make clean 2>/dev/null || true rm -rf depends/built depends/x86_64-unknown-linux-gnu depends/work make -C depends clean 2>/dev/null || true +# Limit parallelism to avoid OOM kills inside Docker. +# Each C++ compilation can use 1-2 GB RAM; cap at ~half of nproc. +JOBS=$(( $(nproc) / 2 )) +[ "$JOBS" -lt 1 ] && JOBS=1 + # Build RandomX for Linux (clean, since host build is different arch/libc) cd src/RandomX rm -rf build-linux mkdir -p build-linux && cd build-linux cmake -DARCH=native .. -make -j$(nproc) +make -j"$JOBS" cd /hush3 # Run the normal build -./util/build.sh --disable-tests -j$(nproc) +./util/build.sh --disable-tests -j"$JOBS" # Package release echo "Creating Linux release package..." VERSION=$(grep -oP 'define\(_CLIENT_VERSION.*?,\s*\K[0-9]+' configure.ac | head -3 | tr '\n' '.' | sed 's/\.$//') VERSION=${VERSION:-3.10.5} -RELEASE_DIR="release-linux" +UBUNTU_VERSION=$(grep -oP 'VERSION_ID="\K[^"]+' /etc/os-release 2>/dev/null || echo "unknown") +RELEASE_DIR="release/linux-${UBUNTU_VERSION}" mkdir -p "$RELEASE_DIR" strip -s src/hushd src/hush-cli src/hush-tx diff --git a/build.sh b/build.sh index 03e9b152d..26a7a4b73 100755 --- a/build.sh +++ b/build.sh @@ -56,7 +56,7 @@ if [[ "${1:-}" == "--linux-release" ]]; then echo "Building Linux release inside Ubuntu 20.04 Docker container..." sudo docker build -t hush-builder -f Dockerfile.build . sudo docker run --rm -e HOST_UID=$(id -u) -e HOST_GID=$(id -g) -v "$SCRIPT_DIR:/hush3" hush-builder "$@" - echo "Docker build complete. Release is in release-linux/" + echo "Docker build complete. Release is in release/linux-/" exit $? fi diff --git a/util/build-mac.sh b/util/build-mac.sh index 1e8ebb5f7..fe975760d 100755 --- a/util/build-mac.sh +++ b/util/build-mac.sh @@ -97,3 +97,34 @@ CXXFLAGS="${EXTRA_CXXFLAGS} -I$PREFIX/include" \ ./configure --prefix="${PREFIX}" --with-gui=no "$HARDENING_ARG" "$LCOV_ARG" make "$@" V=1 NO_GTEST=1 STATIC=1 + +# Package release +echo "Creating macOS release package..." +VERSION=$(grep -oP 'define\(_CLIENT_VERSION.*?,\s*\K[0-9]+' configure.ac | head -3 | tr '\n' '.' | sed 's/\.$//') +VERSION=${VERSION:-3.10.5} +RELEASE_DIR="release/mac" +mkdir -p "$RELEASE_DIR" + +# Strip binaries +strip src/hushd src/hush-cli src/hush-tx 2>/dev/null || true + +# Copy binaries +cp src/hushd src/hush-cli src/hush-tx "$RELEASE_DIR/" + +# Copy wrapper scripts +cp src/hush-arrakis-chain src/dragonxd src/dragonx-cli "$RELEASE_DIR/" 2>/dev/null || true + +# Copy required data files +cp asmap.dat sapling-spend.params sapling-output.params "$RELEASE_DIR/" 2>/dev/null || true + +# Copy bootstrap script +cp contrib/bootstrap/bootstrap-dragonx.sh "$RELEASE_DIR/" 2>/dev/null || true + +# Create ZIP +rm -f "$RELEASE_DIR/hush-${VERSION}-mac.zip" +cd "$RELEASE_DIR" +zip -9 "hush-${VERSION}-mac.zip" * +cd .. + +echo "Release package created: $RELEASE_DIR/hush-${VERSION}-mac.zip" +ls -lh "$RELEASE_DIR/hush-${VERSION}-mac.zip" diff --git a/util/build-win.sh b/util/build-win.sh index 9e0f14c18..8117353d9 100755 --- a/util/build-win.sh +++ b/util/build-win.sh @@ -39,6 +39,15 @@ fi cd $WD sed -i 's/-lboost_system-mt /-lboost_system-mt-s /' configure + +# Clean any stale native-compiled objects before cross-compiling. +# If objects were previously built with the native Linux compiler (ELF format), +# make won't recompile them for Windows (COFF format), causing link failures. +if [ -f src/libbitcoin_server.a ]; then + echo "Cleaning previous build objects to ensure Windows cross-compilation..." + cd src/ && make clean 2>/dev/null || true && cd .. +fi + cd src/ CC="${CC} -g " CXX="${CXX} -g " make V=1 hushd.exe hush-cli.exe hush-tx.exe @@ -47,7 +56,7 @@ cd $WD echo "Creating Windows release package..." VERSION=$(grep -oP 'define\(_CLIENT_VERSION.*?,\s*\K[0-9]+' configure.ac | head -3 | tr '\n' '.' | sed 's/\.$//') VERSION=${VERSION:-3.10.5} -RELEASE_DIR="release-win64" +RELEASE_DIR="release/windows" mkdir -p "$RELEASE_DIR" # Strip binaries