archy/image-recipe/build-alpine-iso.sh
2026-01-24 22:59:20 +00:00

76 lines
1.9 KiB
Bash
Executable File

#!/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)"