#!/bin/bash # Linux native build script # Builds Alpine image using native tools or Docker set -e SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)" BUILD_TYPE="${1:-iso}" ARCHIPELAGO_VERSION="${ARCHIPELAGO_VERSION:-0.1.0}" ALPINE_VERSION="${ALPINE_VERSION:-3.19}" ARCH="${ARCH:-x86_64}" OUTPUT_DIR="${OUTPUT_DIR:-$SCRIPT_DIR/results}" echo "🐧 Building on Linux" echo "" # Check if we're in Alpine or need Docker if [ -f /etc/alpine-release ]; then echo "✅ Running on Alpine Linux - using native tools" USE_DOCKER=false elif command -v docker >/dev/null 2>&1 && docker info >/dev/null 2>&1; then echo "⚠️ Not on Alpine - using Docker" USE_DOCKER=true else echo "❌ Need Alpine Linux or Docker" echo " Install Alpine: https://alpinelinux.org/downloads/" echo " Or install Docker: https://docs.docker.com/get-docker/" exit 1 fi if [ "$USE_DOCKER" = true ]; then # Use Docker for build echo "🐳 Using Docker container for build..." echo " This may take 30-60 minutes on first build..." echo "" docker run --rm -it \ -v "$PROJECT_ROOT:/workspace" \ -v "$OUTPUT_DIR:/results" \ -v "$SCRIPT_DIR/build:/build" \ -v "$SCRIPT_DIR/apks:/apks" \ -e BUILD_TYPE="$BUILD_TYPE" \ -e ARCHIPELAGO_VERSION="$ARCHIPELAGO_VERSION" \ -e ALPINE_VERSION="$ALPINE_VERSION" \ -e ARCH="$ARCH" \ alpine:${ALPINE_VERSION} \ sh -c " apk add --no-cache bash git alpine-sdk abuild alpine-conf syslinux xorriso squashfs-tools grub grub-efi mtools dosfstools e2fsprogs curl rust cargo nodejs npm cd /workspace/image-recipe ./build-alpine-native.sh $BUILD_TYPE " else # Native Alpine build "$SCRIPT_DIR/build-alpine-native.sh" "$BUILD_TYPE" fi