58 lines
1.8 KiB
Bash
Executable File
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
|