#!/bin/bash # Build bootable Alpine Linux ISO for Archipelago Bitcoin Node OS # Supports building on macOS (via Docker) and Linux (native) set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" # Configuration ARCHIPELAGO_VERSION="${ARCHIPELAGO_VERSION:-0.1.0}" ALPINE_VERSION="${ALPINE_VERSION:-3.19}" ARCH="${ARCH:-x86_64}" BUILD_TYPE="${BUILD_TYPE:-iso}" # iso or disk OUTPUT_DIR="${OUTPUT_DIR:-$SCRIPT_DIR/results}" echo "🔨 Building Archipelago Alpine Linux Image" echo " Version: $ARCHIPELAGO_VERSION" echo " Alpine: $ALPINE_VERSION" echo " Architecture: $ARCH" echo " Build Type: $BUILD_TYPE" echo "" # Detect build environment if [[ "$OSTYPE" == "darwin"* ]]; then BUILD_ENV="macos" USE_DOCKER=true elif [[ "$OSTYPE" == "linux-gnu"* ]]; then BUILD_ENV="linux" USE_DOCKER=false else echo "❌ Unsupported OS: $OSTYPE" exit 1 fi echo "🌍 Build Environment: $BUILD_ENV" echo "" # Create output directory mkdir -p "$OUTPUT_DIR" # Build backend first echo "📦 Building Archipelago backend..." "$SCRIPT_DIR/scripts/build-backend.sh" || { echo "❌ Backend build failed" exit 1 } # Build frontend echo "🎨 Building Archipelago frontend..." "$SCRIPT_DIR/scripts/build-frontend.sh" || { echo "❌ Frontend build failed" exit 1 } # Create backend APK echo "📦 Creating backend APK package..." "$SCRIPT_DIR/scripts/create-backend-apk.sh" || { echo "❌ APK creation failed" exit 1 } # Build image based on environment if [ "$USE_DOCKER" = true ]; then echo "🐳 Building via Docker (macOS)..." "$SCRIPT_DIR/build-macos.sh" "$BUILD_TYPE" else echo "🐧 Building natively (Linux)..." "$SCRIPT_DIR/build-linux.sh" "$BUILD_TYPE" fi echo "" echo "✅ Build complete!" echo " Output: $OUTPUT_DIR" ls -lh "$OUTPUT_DIR"/*.{iso,img} 2>/dev/null || echo " (Check output directory for results)"