From 4fc0c9bfe42b5d0e543c5ca44c86d25a19f5e1d9 Mon Sep 17 00:00:00 2001 From: tranch Date: Fri, 17 Jul 2026 06:56:56 +0800 Subject: Fix live installer ISO build Build the live installer from the requested local AeroCore image, use a separate Fedora live base, pass the payload through rootful container storage, and write reproducible checksum entries without host paths. --- installer/Containerfile | 4 ++++ installer/build.sh | 13 +++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) (limited to 'installer') diff --git a/installer/Containerfile b/installer/Containerfile index fa817b6..50579e6 100644 --- a/installer/Containerfile +++ b/installer/Containerfile @@ -3,13 +3,17 @@ ARG BASE_IMAGE=ghcr.io/ublue-os/bazzite:stable ARG INSTALL_IMAGE_PAYLOAD=ghcr.io/AeroCore-IO/aerocore-bazzite-image:stable +ARG INSTALL_IMAGE_PAYLOAD_ARCHIVE=/install-payload.oci FROM ${BASE_IMAGE} ARG BASE_IMAGE ARG INSTALL_IMAGE_PAYLOAD +ARG INSTALL_IMAGE_PAYLOAD_ARCHIVE RUN --mount=type=bind,source=.,target=/src \ + --mount=type=bind,source=output/install-payload.oci,target=/install-payload.oci,ro \ env BASE_IMAGE="${BASE_IMAGE}" \ INSTALL_IMAGE_PAYLOAD="${INSTALL_IMAGE_PAYLOAD}" \ + INSTALL_IMAGE_PAYLOAD_ARCHIVE="${INSTALL_IMAGE_PAYLOAD_ARCHIVE}" \ /src/installer/build.sh diff --git a/installer/build.sh b/installer/build.sh index 7532df8..033fe9b 100755 --- a/installer/build.sh +++ b/installer/build.sh @@ -5,10 +5,14 @@ set -euxo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" BASE_IMAGE=${BASE_IMAGE:?} INSTALL_IMAGE_PAYLOAD=${INSTALL_IMAGE_PAYLOAD:?} +INSTALL_IMAGE_PAYLOAD_ARCHIVE=${INSTALL_IMAGE_PAYLOAD_ARCHIVE:-} # The installer is a live KDE environment. Keep the installed system payload # separate: it is the AeroCore image, while BASE_IMAGE provides the live UI. -dnf install -y \ +# Bazzite excludes some base packages from normal transactions. The live +# installer needs Anaconda's exact NetworkManager dependencies, so clear the +# excludes only for this dependency install. +dnf --setopt=excludepkgs= install -y \ anaconda-live \ libblockdev-btrfs \ libblockdev-dm \ @@ -22,9 +26,10 @@ if [[ -d /src/system_files ]]; then cp -a /src/system_files/. / fi -# Make the install payload available to Anaconda. When the build is running -# with the host container store mounted, this avoids a second registry pull. -if mountpoint -q /usr/lib/containers/storage; then +# Make the install payload available to Anaconda. +if [[ -n "${INSTALL_IMAGE_PAYLOAD_ARCHIVE}" && -f "${INSTALL_IMAGE_PAYLOAD_ARCHIVE}" ]]; then + podman load --storage-opt additionalimagestore='' < "${INSTALL_IMAGE_PAYLOAD_ARCHIVE}" +elif mountpoint -q /usr/lib/containers/storage; then podman save --format oci-archive "${INSTALL_IMAGE_PAYLOAD}" | \ podman load --storage-opt additionalimagestore='' else -- cgit v1.2.3