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

58 lines
1.8 KiB
Bash
Executable File

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