#!/bin/bash # Käännä kipina-node binäärit kaikille alustoille set -e SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" OUT="$SCRIPT_DIR/frontend/public/download" HASH_FILE="$OUT/.build-hash" mkdir -p "$OUT" # Tarkistetaan onko native-node muuttunut edellisen buildin jälkeen CURRENT_HASH=$(git -C "$SCRIPT_DIR" log -1 --format=%H -- native-node/ Cargo.toml Cargo.lock) if [ -n "$(git -C "$SCRIPT_DIR" status --porcelain -- native-node/ Cargo.toml Cargo.lock)" ]; then CURRENT_HASH="dirty-$(git -C "$SCRIPT_DIR" status --porcelain | md5sum | awk '{print $1}')" fi if [ -f "$HASH_FILE" ] && [ "$(cat "$HASH_FILE")" = "$CURRENT_HASH" ]; then echo "=== Kipinä Node — ei muutoksia, ohitetaan build ===" ls -lh "$OUT"/kipina-node-* 2>/dev/null || true exit 0 fi echo "=== Kipinä Node — Binary Build ===" # macOS ARM (natiivi) echo "[1/4] macOS ARM64..." cd "$SCRIPT_DIR" cargo build --release -p native-node --no-default-features 2>&1 | tail -1 cp target/release/native-node "$OUT/kipina-node-macos-arm64" echo " $(ls -lh "$OUT/kipina-node-macos-arm64" | awk '{print $5}')" # Linux x86_64 (Docker) echo "[2/4] Linux x86_64..." docker run --rm \ -v "$SCRIPT_DIR":/app -w /app \ --platform linux/amd64 \ rust:slim \ bash -c "apt-get update -qq && apt-get install -y -qq pkg-config libssl-dev >/dev/null 2>&1 && cargo build --release -p native-node --no-default-features 2>&1 | tail -1 && cp target/release/native-node /app/frontend/public/download/kipina-node-linux-x86_64" echo " $(ls -lh "$OUT/kipina-node-linux-x86_64" | awk '{print $5}')" # Linux ARM64 (Docker) echo "[3/4] Linux ARM64..." docker run --rm \ -v "$SCRIPT_DIR":/app -w /app \ --platform linux/arm64 \ rust:slim \ bash -c "apt-get update -qq && apt-get install -y -qq pkg-config libssl-dev >/dev/null 2>&1 && cargo build --release -p native-node --no-default-features 2>&1 | tail -1 && cp target/release/native-node /app/frontend/public/download/kipina-node-linux-arm64" echo " $(ls -lh "$OUT/kipina-node-linux-arm64" | awk '{print $5}')" # Windows x86_64 (Docker + mingw-w64) echo "[4/4] Windows x86_64..." docker run --rm \ -v "$SCRIPT_DIR":/app -w /app \ --platform linux/amd64 \ rust:slim \ bash -c "apt-get update -qq && apt-get install -y -qq gcc-mingw-w64-x86-64 pkg-config libssl-dev >/dev/null 2>&1 && rustup target add x86_64-pc-windows-gnu && cargo build --release -p native-node --no-default-features --target x86_64-pc-windows-gnu 2>&1 | tail -1 && cp target/x86_64-pc-windows-gnu/release/native-node.exe /app/frontend/public/download/kipina-node-windows-x86_64.exe" echo " $(ls -lh "$OUT/kipina-node-windows-x86_64.exe" | awk '{print $5}')" # Tallennetaan onnistuneen buildin hash echo "$CURRENT_HASH" > "$HASH_FILE" echo "" echo "=== Binäärit valmiina ===" ls -lh "$OUT"/kipina-node-*