#!/usr/bin/env bash # veilor-os — ISO builder # Wraps livemedia-creator inside a podman container for reproducibility. # Run from repo root. set -euo pipefail REPO_ROOT="$(cd "$(dirname "$0")/.." && pwd)" OUT_DIR="$REPO_ROOT/build/out" KS="$REPO_ROOT/kickstart/veilor-os.ks" RELEASEVER="${RELEASEVER:-43}" DATE="$(date +%Y%m%d)" ISO_NAME="veilor-os-${RELEASEVER}-${DATE}.iso" mkdir -p "$OUT_DIR" # ── Validate kickstart ── if command -v ksvalidator &>/dev/null; then ksvalidator "$KS" fi # ── Build container ── podman build -t veilor-build:latest "$REPO_ROOT/build" # ── Build ISO ── # --make-iso requires --privileged (loop devices, mount). podman run --rm --privileged \ -v "$REPO_ROOT:/work:Z" \ -v "$OUT_DIR:/out:Z" \ veilor-build:latest -c " set -e livemedia-creator \ --make-iso \ --no-virt \ --ks /work/kickstart/veilor-os.ks \ --resultdir /out/build-${DATE} \ --project veilor-os \ --releasever ${RELEASEVER} \ --title 'veilor-os' \ --tmp /tmp/lmc \ --logfile /out/build-${DATE}.log cp /out/build-${DATE}/*.iso /out/${ISO_NAME} sha256sum /out/${ISO_NAME} > /out/${ISO_NAME}.sha256 " echo echo "════════════════════════════════════════════════════════" echo " ISO ready: $OUT_DIR/$ISO_NAME" echo " Checksum: $OUT_DIR/$ISO_NAME.sha256" echo " Build log: $OUT_DIR/build-${DATE}.log" echo "════════════════════════════════════════════════════════" echo echo " Write to USB: sudo dd if=$OUT_DIR/$ISO_NAME of=/dev/sdX bs=4M status=progress conv=fsync" echo " (replace /dev/sdX with your USB device — use lsblk to identify)"