- Rename binaries: hushd/hush-cli/hush-tx → dragonxd/dragonx-cli/dragonx-tx - Default to DRAGONX chain params without -ac_* flags (randomx, blocktime=36, private=1) - Update configure.ac: AC_INIT([DragonX],[1.0.0]) - Update client version string and user-agent to /DragonX:1.0.0/ - Add chainparams.cpp with DRAGONX network parameters - Update build.sh, miner.cpp, pow.cpp for DragonX - Add bootstrap-dragonx.sh utility script - Update .gitignore for release directory
153 lines
5.0 KiB
Bash
Executable File
153 lines
5.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Copyright (c) 2016-2024 The Hush developers
|
|
# Copyright (c) 2024-2026 The DragonX developers
|
|
# Distributed under the GPLv3 software license, see the accompanying
|
|
# file COPYING or https://www.gnu.org/licenses/gpl-3.0.en.html
|
|
|
|
set -eu -o pipefail
|
|
|
|
VERSION="1.0.0"
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
RELEASE_DIR="$SCRIPT_DIR/release"
|
|
|
|
# Parse release flags
|
|
BUILD_LINUX_RELEASE=0
|
|
BUILD_WIN_RELEASE=0
|
|
BUILD_MAC_RELEASE=0
|
|
REMAINING_ARGS=()
|
|
|
|
for arg in "$@"; do
|
|
case "$arg" in
|
|
--linux-release)
|
|
BUILD_LINUX_RELEASE=1
|
|
;;
|
|
--win-release)
|
|
BUILD_WIN_RELEASE=1
|
|
;;
|
|
--mac-release)
|
|
BUILD_MAC_RELEASE=1
|
|
;;
|
|
--all-release)
|
|
BUILD_LINUX_RELEASE=1
|
|
BUILD_WIN_RELEASE=1
|
|
BUILD_MAC_RELEASE=1
|
|
;;
|
|
*)
|
|
REMAINING_ARGS+=("$arg")
|
|
;;
|
|
esac
|
|
done
|
|
|
|
# Clean artifacts that may conflict between platform builds
|
|
clean_for_platform() {
|
|
local platform="$1"
|
|
echo "Cleaning build artifacts for $platform build..."
|
|
|
|
# Use make clean if Makefile exists (safer than manual deletion)
|
|
if [ -f src/Makefile ]; then
|
|
make -C src clean 2>/dev/null || true
|
|
fi
|
|
|
|
# Remove final binaries
|
|
if [ -d src ]; then
|
|
rm -f src/dragonxd src/dragonx-cli src/dragonx-tx 2>/dev/null || true
|
|
rm -f src/dragonxd.exe src/dragonx-cli.exe src/dragonx-tx.exe 2>/dev/null || true
|
|
rm -f src/hushd src/hush-cli src/hush-tx 2>/dev/null || true
|
|
rm -f src/hushd.exe src/hush-cli.exe src/hush-tx.exe 2>/dev/null || true
|
|
fi
|
|
|
|
# Clean RandomX build for cross-platform compatibility
|
|
rm -rf src/RandomX/build 2>/dev/null || true
|
|
|
|
# Clean cryptoconditions
|
|
rm -rf src/cc/*.o src/cc/*.a 2>/dev/null || true
|
|
|
|
# Clean config cache (forces reconfigure for cross-platform)
|
|
rm -f config.status config.log 2>/dev/null || true
|
|
|
|
echo "Clean complete for $platform"
|
|
}
|
|
|
|
# Package release for a platform
|
|
package_release() {
|
|
local platform="$1"
|
|
local release_subdir="$RELEASE_DIR/dragonx-$VERSION-$platform"
|
|
|
|
echo "Packaging release for $platform..."
|
|
mkdir -p "$release_subdir"
|
|
|
|
# Copy bootstrap script
|
|
cp "$SCRIPT_DIR/util/bootstrap-dragonx.sh" "$release_subdir/"
|
|
|
|
# Copy common files
|
|
cp "$SCRIPT_DIR/contrib/asmap/asmap.dat" "$release_subdir/" 2>/dev/null || true
|
|
cp "$SCRIPT_DIR/sapling-output.params" "$release_subdir/" 2>/dev/null || true
|
|
cp "$SCRIPT_DIR/sapling-spend.params" "$release_subdir/" 2>/dev/null || true
|
|
|
|
case "$platform" in
|
|
linux-amd64)
|
|
cp "$SCRIPT_DIR/src/dragonxd" "$release_subdir/"
|
|
cp "$SCRIPT_DIR/src/dragonx-cli" "$release_subdir/"
|
|
cp "$SCRIPT_DIR/src/dragonx-tx" "$release_subdir/"
|
|
strip "$release_subdir/dragonxd" "$release_subdir/dragonx-cli" "$release_subdir/dragonx-tx"
|
|
;;
|
|
win64)
|
|
cp "$SCRIPT_DIR/src/dragonxd.exe" "$release_subdir/"
|
|
cp "$SCRIPT_DIR/src/dragonx-cli.exe" "$release_subdir/"
|
|
cp "$SCRIPT_DIR/src/dragonx-tx.exe" "$release_subdir/"
|
|
x86_64-w64-mingw32-strip "$release_subdir/"*.exe 2>/dev/null || strip "$release_subdir/"*.exe 2>/dev/null || true
|
|
;;
|
|
macos)
|
|
cp "$SCRIPT_DIR/src/dragonxd" "$release_subdir/"
|
|
cp "$SCRIPT_DIR/src/dragonx-cli" "$release_subdir/"
|
|
cp "$SCRIPT_DIR/src/dragonx-tx" "$release_subdir/"
|
|
strip "$release_subdir/dragonxd" "$release_subdir/dragonx-cli" "$release_subdir/dragonx-tx" 2>/dev/null || true
|
|
;;
|
|
esac
|
|
|
|
echo "Release packaged: $release_subdir"
|
|
ls -la "$release_subdir"
|
|
}
|
|
|
|
# Handle release builds
|
|
if [ $BUILD_LINUX_RELEASE -eq 1 ] || [ $BUILD_WIN_RELEASE -eq 1 ] || [ $BUILD_MAC_RELEASE -eq 1 ]; then
|
|
mkdir -p "$RELEASE_DIR"
|
|
|
|
if [ $BUILD_LINUX_RELEASE -eq 1 ]; then
|
|
echo "=== Building Linux release ==="
|
|
clean_for_platform linux
|
|
./util/build.sh --disable-tests "${REMAINING_ARGS[@]}"
|
|
package_release linux-amd64
|
|
fi
|
|
|
|
if [ $BUILD_WIN_RELEASE -eq 1 ]; then
|
|
echo "=== Building Windows release ==="
|
|
clean_for_platform windows
|
|
./util/build-win.sh --disable-tests "${REMAINING_ARGS[@]}"
|
|
package_release win64
|
|
fi
|
|
|
|
if [ $BUILD_MAC_RELEASE -eq 1 ]; then
|
|
echo "=== Building macOS release ==="
|
|
clean_for_platform macos
|
|
./util/build-mac.sh --disable-tests "${REMAINING_ARGS[@]}"
|
|
package_release macos
|
|
fi
|
|
|
|
echo ""
|
|
echo "=== Release builds complete ==="
|
|
ls -la "$RELEASE_DIR"/
|
|
exit 0
|
|
fi
|
|
|
|
# Standard build (auto-detect OS)
|
|
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|
./util/build.sh --disable-tests "${REMAINING_ARGS[@]}"
|
|
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
|
./util/build-mac.sh --disable-tests "${REMAINING_ARGS[@]}"
|
|
elif [[ "$OSTYPE" == "msys"* ]]; then
|
|
./util/build-win.sh --disable-tests "${REMAINING_ARGS[@]}"
|
|
else
|
|
echo "Unable to detect your OS. What are you using?"
|
|
fi
|