2026-09-26 03:11:10 -08:00
|
|
|
# Installer-environment container for bootc-image-builder's `bootc-installer`
|
|
|
|
|
# image type. This is NOT the quine-linux OS -- it's the throwaway Anaconda
|
|
|
|
|
# environment the ISO boots into, which then installs the real quine-linux
|
2026-09-27 05:56:26 -08:00
|
|
|
# bootc image (passed separately via --installer-payload-ref). See
|
2026-09-26 03:11:10 -08:00
|
|
|
# docs/patched-anaconda-installer.md for the full workflow this fits into.
|
|
|
|
|
|
2026-09-27 05:56:26 -08:00
|
|
|
# Builds the patched anaconda-webui from the vendored source in
|
|
|
|
|
# anaconda-webui/vendor/ (see anaconda-webui/PROVENANCE.md) with upstream's
|
|
|
|
|
# own `make install`, i.e. exactly the files its RPM would ship. Runs on the
|
|
|
|
|
# build host's native platform: the output is platform-independent (web
|
|
|
|
|
# assets and scripts), and emulated builds of this stage are both slow and
|
|
|
|
|
# unreliable (tar fails under emulation on Apple Silicon).
|
|
|
|
|
FROM --platform=$BUILDPLATFORM registry.fedoraproject.org/fedora:rawhide AS anaconda-webui
|
|
|
|
|
|
|
|
|
|
# Upstream version the vendored source corresponds to, and the gitlink its
|
|
|
|
|
# node_modules submodule pinned (the npm package cache, fetched at build).
|
|
|
|
|
# Update both when re-vendoring.
|
|
|
|
|
ARG ANACONDA_WEBUI_VERSION=86
|
|
|
|
|
ARG NODE_MODULES_REF=99a26de1065b0c39bad3d11197a37e1a8b0edb99
|
|
|
|
|
|
|
|
|
|
RUN dnf install -y git make npm diffutils gettext rpm-build && dnf clean all
|
|
|
|
|
|
|
|
|
|
COPY anaconda-webui/vendor/ /src/
|
|
|
|
|
WORKDIR /src
|
|
|
|
|
|
|
|
|
|
# The upstream build assumes a git checkout: tools/node-modules reads the
|
|
|
|
|
# node_modules gitlink from the index, and the Makefile fetches cockpit's
|
|
|
|
|
# shared lib into the repo's object store. Recreate just enough of one.
|
|
|
|
|
RUN set -eux; \
|
|
|
|
|
git init -q; \
|
|
|
|
|
git add -A; \
|
|
|
|
|
git update-index --add --cacheinfo "160000,${NODE_MODULES_REF},node_modules"; \
|
|
|
|
|
git -c user.name=build -c user.email=build@localhost commit -q -m vendored
|
|
|
|
|
|
|
|
|
|
RUN set -eux; \
|
|
|
|
|
make package-lock.json; \
|
|
|
|
|
# node_modules ships only x86_64's esbuild binary; add the host's if needed.
|
|
|
|
|
v="$(node -p 'require("./node_modules/esbuild/package.json").version')"; \
|
|
|
|
|
case "$(uname -m)" in \
|
|
|
|
|
aarch64) npm install --no-save --ignore-scripts "@esbuild/linux-arm64@${v}" ;; \
|
|
|
|
|
esac; \
|
|
|
|
|
make install DESTDIR=/out VERSION="${ANACONDA_WEBUI_VERSION}"
|
|
|
|
|
|
2026-09-26 03:11:10 -08:00
|
|
|
FROM quay.io/fedora/fedora-bootc:rawhide
|
|
|
|
|
|
2026-09-27 05:56:26 -08:00
|
|
|
# Stock Fedora anaconda-webui pulls in the right dependencies; the patched
|
|
|
|
|
# build is laid over it below.
|
2026-09-26 03:11:10 -08:00
|
|
|
RUN set -eux; \
|
|
|
|
|
dnf install -y \
|
|
|
|
|
anaconda-webui \
|
|
|
|
|
anaconda \
|
|
|
|
|
anaconda-install-env-deps \
|
|
|
|
|
anaconda-dracut \
|
|
|
|
|
dracut-config-generic \
|
|
|
|
|
dracut-network \
|
|
|
|
|
net-tools \
|
|
|
|
|
squashfs-tools \
|
|
|
|
|
grub2-efi-x64-cdboot \
|
|
|
|
|
python3-mako \
|
|
|
|
|
lorax-templates-generic \
|
|
|
|
|
biosdevname \
|
|
|
|
|
prefixdevname; \
|
|
|
|
|
dnf clean all
|
|
|
|
|
|
2026-09-27 05:56:26 -08:00
|
|
|
# Replace the packaged web UI wholesale so no stale upstream assets linger.
|
|
|
|
|
RUN rm -rf /usr/share/cockpit/anaconda-webui
|
|
|
|
|
COPY --from=anaconda-webui /out/ /
|
|
|
|
|
|
2026-09-26 03:11:10 -08:00
|
|
|
# Fedora 43+ path fixup -- image-builder expects the EFI directory under
|
|
|
|
|
# /boot/efi, not wherever the fedora-bootc base puts it.
|
|
|
|
|
RUN mkdir -p /boot/efi && cp -ra /usr/lib/efi/*/*/EFI /boot/efi
|
|
|
|
|
|
|
|
|
|
# lorax wants to symlink /mnt -> /var/mnt, which doesn't exist on this base.
|
|
|
|
|
RUN mkdir -p /var/mnt
|