veilor-os/build/build-iso.sh

56 lines
2 KiB
Bash
Raw Normal View History

#!/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
rm -rf /out/build-${DATE} /tmp/lmc
livemedia-creator \
--make-iso \
--no-virt \
--ks /work/kickstart/veilor-os.ks \
--resultdir /out/build-${DATE} \
--project veilor-os \
--releasever ${RELEASEVER} \
--volid 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)"