Files
agrarian/contrib/build-linux-wallet.sh
T
2026-05-01 00:52:13 +00:00

105 lines
2.4 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
JOBS="${JOBS:-1}"
HOST="${HOST:-x86_64-pc-linux-gnu}"
PREFIX="$ROOT/depends/$HOST"
BASE_CONFIG="$PREFIX/share/config.site"
BUILD_HOST="${BUILD_HOST:-$("$ROOT/depends/config.guess")}"
NATIVE_BIN="$ROOT/depends/build/$BUILD_HOST/bin"
PROTOC="$NATIVE_BIN/protoc"
require_cmd() {
if ! command -v "$1" >/dev/null 2>&1; then
echo "Missing required command: $1" >&2
exit 1
fi
}
require_path() {
if [[ ! -e "$1" ]]; then
echo "Missing required path: $1" >&2
exit 1
fi
}
reset_qt_configure_state() {
local qt_work="$ROOT/depends/work/build/$HOST/qt"
[[ -d "$qt_work" ]] || return 0
echo "Clearing stale Qt configure state for $HOST..."
rm -rf "$qt_work"
}
ensure_native_protoc() {
local archive found
if [[ -x "$PROTOC" ]]; then
return 0
fi
archive="$(find "$ROOT/depends/built/$HOST/native_protobuf" \
-name 'native_protobuf-*.tar.gz' -type f 2>/dev/null | sort | tail -n 1 || true)"
if [[ -n "$archive" ]]; then
echo "Extracting native protoc from $archive"
mkdir -p "$ROOT/depends/build/$BUILD_HOST"
tar -xzf "$archive" -C "$ROOT/depends/build/$BUILD_HOST" ./bin/protoc
fi
if [[ -x "$PROTOC" ]]; then
return 0
fi
found="$(find "$ROOT/depends/build" "$ROOT/depends/work/staging" \
-path '*/bin/protoc' -type f 2>/dev/null | sort | head -n 1 || true)"
if [[ -n "$found" ]]; then
echo "Staging native protoc from $found"
mkdir -p "$NATIVE_BIN"
cp "$found" "$PROTOC"
chmod +x "$PROTOC"
fi
require_path "$PROTOC"
}
cd "$ROOT"
require_cmd make
require_cmd pkg-config
require_cmd gcc
require_cmd g++
require_cmd cmake
require_cmd ninja
reset_qt_configure_state
echo "Building native depends for $HOST..."
make -C depends HOST="$HOST" NO_QT=0 -j"$JOBS"
require_path "$BASE_CONFIG"
ensure_native_protoc
if [[ ! -f configure ]]; then
./autogen.sh
fi
echo "Configuring Ubuntu Qt6 wallet build..."
CONFIG_SITE="$BASE_CONFIG" ./configure \
--disable-maintainer-mode \
--disable-tests \
--disable-bench \
--with-gui=qt6 \
--with-qtdbus=no \
--with-protoc-bindir="$NATIVE_BIN"
echo "Building Ubuntu Qt wallet with JOBS=$JOBS..."
make -j"$JOBS"
echo "Linux wallet build complete:"
echo " $ROOT/src/qt/agrarian-qt"
echo " $ROOT/src/agrariand"
echo " $ROOT/src/agrarian-cli"
echo " $ROOT/src/agrarian-tx"