* feat: timestamp all files with epoch 0 We have been using this chunkah feature [1] to put non-rpm content like the brew tarball in dedicated layers, we didn't actually save any bandwith on downloads with this as the copying sets the file modification and access time. Which makes it non-reproducible and every single update would re-download everything not in RPMs. This should make updates smaller especially noticeable on daily/multiple daily image builds. I'm not sure how much of a positive effect this is gonna have on the stable weekly images as the brew tarball is refreshed weekly. Things like the wallpapers should at least no longer be downloaded when they haven't changed. There are still some files we could do but I think it's mostly not worth it. xref: https://github.com/ublue-os/aurora/issues/2579 [1] https://github.com/coreos/chunkah#customizing-the-layers * typo Co-authored-by: Adam Fidel <ledif@users.noreply.github.com> --------- Co-authored-by: Adam Fidel <ledif@users.noreply.github.com>
103 lines
3.5 KiB
Text
103 lines
3.5 KiB
Text
ARG BASE_IMAGE_ORG
|
|
ARG BASE_IMAGE_NAME
|
|
ARG BASE_IMAGE="${BASE_IMAGE_ORG}/${BASE_IMAGE_NAME}"
|
|
ARG FEDORA_MAJOR_VERSION
|
|
ARG AKMODS_FLAVOR
|
|
ARG KERNEL
|
|
ARG COMMON
|
|
ARG BREW
|
|
|
|
FROM ${COMMON} AS common
|
|
FROM ${BREW} AS brew
|
|
|
|
FROM ghcr.io/ublue-os/akmods:${AKMODS_FLAVOR}-${FEDORA_MAJOR_VERSION}-${KERNEL} AS akmods
|
|
|
|
#if defined(NVIDIA)
|
|
FROM ghcr.io/ublue-os/akmods-nvidia-open:${AKMODS_FLAVOR}-${FEDORA_MAJOR_VERSION}-${KERNEL} AS akmods-nvidia-open
|
|
#endif
|
|
|
|
FROM scratch AS ctx
|
|
COPY /build_scripts /build_scripts
|
|
COPY /build_files /build_files
|
|
|
|
# /* https://github.com/get-aurora-dev/common */
|
|
COPY --from=common /logos /system_files/shared
|
|
COPY --from=common /system_files /system_files
|
|
COPY --from=common /wallpapers /system_files/shared
|
|
|
|
# /* https://github.com/ublue-os/brew */
|
|
COPY --from=brew /system_files /system_files/shared
|
|
|
|
COPY /system_files /system_files
|
|
|
|
# /* aurora image section */
|
|
FROM ${BASE_IMAGE}:${FEDORA_MAJOR_VERSION} AS base
|
|
|
|
ARG AKMODS_FLAVOR="main"
|
|
ARG BASE_IMAGE_NAME="${BASE_IMAGE_NAME}"
|
|
ARG FEDORA_MAJOR_VERSION=""
|
|
ARG IMAGE_NAME="aurora"
|
|
ARG IMAGE_VENDOR="ublue-os"
|
|
ARG KERNEL=""
|
|
ARG SHA_HEAD_SHORT=""
|
|
ARG UBLUE_IMAGE_TAG="latest"
|
|
ARG VERSION=""
|
|
ARG IMAGE_FLAVOR=""
|
|
|
|
# /* so ghcurl wrapper is available to all later RUNs */
|
|
ENV PATH="/tmp/scripts/helpers:${PATH}"
|
|
|
|
# /* Install Packages, miscellaneous things that need a network */
|
|
|
|
# /* aurora, no nvidia */
|
|
#if !defined(NVIDIA)
|
|
RUN --mount=type=tmpfs,dst=/boot \
|
|
--mount=type=tmpfs,dst=/var \
|
|
--mount=type=bind,from=ctx,source=/,target=/ctx \
|
|
--mount=type=cache,dst=/var/cache/libdnf5 \
|
|
--mount=type=bind,from=akmods,src=/kernel-rpms,dst=/tmp/kernel-rpms \
|
|
--mount=type=bind,from=akmods,src=/rpms/common,dst=/tmp/rpms/common \
|
|
--mount=type=bind,from=akmods,src=/rpms/kmods,dst=/tmp/rpms/kmods \
|
|
--mount=type=secret,id=GITHUB_TOKEN \
|
|
/ctx/build_scripts/shared/build-prep.sh && \
|
|
/ctx/build_scripts/base/01-packages.sh && \
|
|
/ctx/build_scripts/base/02-install-common-kernel-akmods.sh && \
|
|
/ctx/build_scripts/base/03-fetch.sh
|
|
#endif
|
|
|
|
# /* aurora-nvidia-open */
|
|
#if defined(NVIDIA)
|
|
RUN --mount=type=tmpfs,dst=/boot \
|
|
--mount=type=tmpfs,dst=/var \
|
|
--mount=type=bind,from=ctx,source=/,target=/ctx \
|
|
--mount=type=cache,dst=/var/cache/libdnf5 \
|
|
--mount=type=bind,from=akmods,src=/kernel-rpms,dst=/tmp/kernel-rpms \
|
|
--mount=type=bind,from=akmods,src=/rpms/common,dst=/tmp/rpms/common \
|
|
--mount=type=bind,from=akmods,src=/rpms/kmods,dst=/tmp/rpms/kmods \
|
|
--mount=type=bind,from=akmods-nvidia-open,src=/rpms,dst=/tmp/rpms/nvidia \
|
|
--mount=type=secret,id=GITHUB_TOKEN \
|
|
/ctx/build_scripts/shared/build-prep.sh && \
|
|
/ctx/build_scripts/base/01-packages.sh && \
|
|
/ctx/build_scripts/base/02-install-common-kernel-akmods.sh && \
|
|
/ctx/build_scripts/base/03-fetch.sh && \
|
|
/ctx/build_scripts/base/04-nvidia.sh
|
|
#endif
|
|
|
|
# /* Everything that can be done offline after things are in place should be done here */
|
|
# /* dracut freaks out if /var is a different filesystem */
|
|
RUN --network=none \
|
|
--mount=type=tmpfs,dst=/boot \
|
|
--mount=type=tmpfs,dst=/var/log \
|
|
--mount=type=bind,from=ctx,source=/,target=/ctx \
|
|
/ctx/build_scripts/base/16-override-install.sh && \
|
|
/ctx/build_scripts/base/17-services.sh && \
|
|
/ctx/build_scripts/base/18-image-info.sh && \
|
|
/ctx/build_scripts/base/19-initramfs.sh && \
|
|
/ctx/build_scripts/shared/clean-stage.sh && \
|
|
/ctx/build_scripts/shared/unpackaged.sh && \
|
|
/ctx/build_scripts/base/20-tests.sh
|
|
|
|
CMD ["/sbin/init"]
|
|
|
|
RUN --network=none \
|
|
bootc container lint --fatal-warnings --no-truncate
|