From 4bfc263a4a163889d7d3afa9c4207f23f3de6281 Mon Sep 17 00:00:00 2001 From: m2Giles <69128853+m2Giles@users.noreply.github.com> Date: Sun, 21 Jul 2024 23:12:17 -0400 Subject: [PATCH 1/3] chore(ci): speedup builds with cache mount --- Containerfile | 42 +++++++---------------- build_files/{base => }/aurora-changes.sh | 0 build_files/base/build-base.sh | 23 ------------- build_files/{base => }/bluefin-changes.sh | 0 build_files/{shared => }/bootc.sh | 0 build_files/{dx => }/branding-dx.sh | 0 build_files/{base => }/branding.sh | 0 build_files/{base => }/brew.sh | 0 build_files/build-base.sh | 30 ++++++++++++++++ build_files/build-dx.sh | 21 ++++++++++++ build_files/{base => }/cache_kernel.sh | 0 build_files/clean-stage.sh | 8 +++++ build_files/{dx => }/cleanup-dx.sh | 0 build_files/{base => }/cleanup.sh | 0 build_files/{dx => }/copr-repos-dx.sh | 0 build_files/{base => }/copr-repos.sh | 0 build_files/dx/build-dx.sh | 18 ---------- build_files/{dx => }/fetch-install-dx.sh | 0 build_files/{base => }/fetch-install.sh | 0 build_files/{base => }/fetch-quadlets.sh | 0 build_files/{base => }/firmware.sh | 0 build_files/{base => }/font-install.sh | 0 build_files/{dx => }/fonts-dx.sh | 0 build_files/{shared => }/image-info.sh | 0 build_files/{shared => }/initramfs.sh | 0 build_files/{dx => }/install-akmods-dx.sh | 0 build_files/{base => }/install-akmods.sh | 0 build_files/{base => }/nvidia.sh | 0 build_files/{dx => }/packages-dx.sh | 0 build_files/{base => }/packages.sh | 0 build_files/{dx => }/systemd-dx.sh | 0 build_files/{base => }/systemd.sh | 0 build_files/{dx => }/workarounds.sh | 0 33 files changed, 72 insertions(+), 70 deletions(-) rename build_files/{base => }/aurora-changes.sh (100%) mode change 100644 => 100755 delete mode 100644 build_files/base/build-base.sh rename build_files/{base => }/bluefin-changes.sh (100%) mode change 100644 => 100755 rename build_files/{shared => }/bootc.sh (100%) mode change 100644 => 100755 rename build_files/{dx => }/branding-dx.sh (100%) mode change 100644 => 100755 rename build_files/{base => }/branding.sh (100%) mode change 100644 => 100755 rename build_files/{base => }/brew.sh (100%) mode change 100644 => 100755 create mode 100755 build_files/build-base.sh create mode 100755 build_files/build-dx.sh rename build_files/{base => }/cache_kernel.sh (100%) mode change 100644 => 100755 create mode 100755 build_files/clean-stage.sh rename build_files/{dx => }/cleanup-dx.sh (100%) mode change 100644 => 100755 rename build_files/{base => }/cleanup.sh (100%) mode change 100644 => 100755 rename build_files/{dx => }/copr-repos-dx.sh (100%) mode change 100644 => 100755 rename build_files/{base => }/copr-repos.sh (100%) mode change 100644 => 100755 delete mode 100644 build_files/dx/build-dx.sh rename build_files/{dx => }/fetch-install-dx.sh (100%) mode change 100644 => 100755 rename build_files/{base => }/fetch-install.sh (100%) mode change 100644 => 100755 rename build_files/{base => }/fetch-quadlets.sh (100%) rename build_files/{base => }/firmware.sh (100%) mode change 100644 => 100755 rename build_files/{base => }/font-install.sh (100%) mode change 100644 => 100755 rename build_files/{dx => }/fonts-dx.sh (100%) mode change 100644 => 100755 rename build_files/{shared => }/image-info.sh (100%) rename build_files/{shared => }/initramfs.sh (100%) rename build_files/{dx => }/install-akmods-dx.sh (100%) mode change 100644 => 100755 rename build_files/{base => }/install-akmods.sh (100%) rename build_files/{base => }/nvidia.sh (100%) mode change 100644 => 100755 rename build_files/{dx => }/packages-dx.sh (100%) rename build_files/{base => }/packages.sh (100%) rename build_files/{dx => }/systemd-dx.sh (100%) mode change 100644 => 100755 rename build_files/{base => }/systemd.sh (100%) mode change 100644 => 100755 rename build_files/{dx => }/workarounds.sh (100%) diff --git a/Containerfile b/Containerfile index 5a54c5b120a..fa42c1a461c 100644 --- a/Containerfile +++ b/Containerfile @@ -9,7 +9,7 @@ ARG NVIDIA_TYPE="${NVIDIA_TYPE:-}" ARG KERNEL="${KERNEL:-6.9.7-200.fc40.x86_64}" ARG UBLUE_IMAGE_TAG="${UBLUE_IMAGE_TAG:-latest}" -# FROM's for copying +# FROM's for Mounting ARG KMOD_SOURCE_COMMON="ghcr.io/ublue-os/akmods:${AKMODS_FLAVOR}-${FEDORA_MAJOR_VERSION}" ARG ZFS_CACHE="ghcr.io/ublue-os/akmods-zfs:coreos-stable-${FEDORA_MAJOR_VERSION}" ARG NVIDIA_CACHE="ghcr.io/ublue-os/akmods-nvidia:${AKMODS_FLAVOR}-${FEDORA_MAJOR_VERSION}" @@ -19,6 +19,9 @@ FROM ${ZFS_CACHE} AS zfs_cache FROM ${NVIDIA_CACHE} AS nvidia_cache FROM ${KERNEL_CACHE} AS kernel_cache +FROM scratch AS ctx +COPY / / + ## bluefin image section FROM ${BASE_IMAGE}:${FEDORA_MAJOR_VERSION} AS base @@ -32,30 +35,19 @@ ARG NVIDIA_TYPE="${NVIDIA_TYPE:-}" ARG KERNEL="${KERNEL:-6.9.7-200.fc40.x86_64}" ARG UBLUE_IMAGE_TAG="${UBLUE_IMAGE_TAG:-latest}" -# COPY Build Files -COPY build_files/base build_files/shared /tmp/build/ -COPY system_files/shared system_files/${BASE_IMAGE_NAME} / -COPY just /tmp/just -COPY packages.json /tmp/packages.json - -# Copy ublue-update.toml to tmp first, to avoid being overwritten. -COPY /system_files/shared/usr/etc/ublue-update/ublue-update.toml /tmp/ublue-update.toml -# COPY ublue kmods, add needed negativo17 repo and then immediately disable due to incompatibility with RPMFusion -# COPY --from=akmods /rpms /tmp/akmods-rpms -# COPY --from=nvidia_cache /rpms /tmp/akmods-rpms -# COPY --from=kernel_cache /tmp/rpms /tmp/kernel-rpms # Build, cleanup, commit. -RUN --mount=type=bind,from=akmods,source=/rpms,target=/tmp/akmods \ +RUN --mount=type=cache,dst=/var/cache/rpm-ostree \ + --mount=type=bind,from=ctx,source=/,target=/ctx \ + --mount=type=bind,from=akmods,source=/rpms,target=/tmp/akmods \ --mount=type=bind,from=nvidia_cache,source=/rpms,target=/tmp/akmods-rpms \ --mount=type=bind,from=kernel_cache,source=/tmp/rpms,target=/tmp/kernel-rpms \ --mount=type=bind,from=zfs_cache,source=/rpms,target=/tmp/akmods-zfs \ rpm-ostree cliwrap install-to-root / && \ mkdir -p /var/lib/alternatives && \ - bash -c ". /tmp/build/build-base.sh" && \ + /ctx/build_files/build-base.sh && \ mv /var/lib/alternatives /staged-alternatives && \ - rm -rf /tmp/* || true && \ - rm -rf /var/* || true && \ + /ctx/build_files/clean-stage.sh && \ ostree container commit && \ mkdir -p /var/lib && mv /staged-alternatives /var/lib/alternatives && \ mkdir -p /var/tmp && \ @@ -74,22 +66,14 @@ ARG NVIDIA_TYPE="${NVIDIA_TYPE:-}" ARG KERNEL="${KERNEL:-6.9.7-200.fc40.x86_64}" ARG UBLUE_IMAGE_TAG="${UBLUE_IMAGE_TAG:-latest}" -# dx specific files come from the dx directory in this repo -COPY build_files/dx build_files/shared /tmp/build/ -COPY system_files/dx / -COPY packages.json /tmp/packages.json - -# Copy akmods from ublue -# COPY --from=akmods /rpms /tmp/akmods-rpms - # Build, Clean-up, Commit -RUN --mount=type=bind,from=akmods,source=/rpms,target=/tmp/akmods \ +RUN --mount=type=cache,dst=/var/cache/rpm-ostree \ + --mount=type=bind,from=akmods,source=/rpms,target=/tmp/akmods \ mkdir -p /var/lib/alternatives && \ - bash -c ". /tmp/build/build-dx.sh" && \ + /ctx/build_files/build-dx.sh && \ fc-cache --system-only --really-force --verbose && \ mv /var/lib/alternatives /staged-alternatives && \ - rm -rf /tmp/* || true && \ - rm -rf /var/* || true && \ + /ctx/build_files/clean-stage.sh \ ostree container commit && \ mkdir -p /var/lib && mv /staged-alternatives /var/lib/alternatives && \ mkdir -p /var/tmp && \ diff --git a/build_files/base/aurora-changes.sh b/build_files/aurora-changes.sh old mode 100644 new mode 100755 similarity index 100% rename from build_files/base/aurora-changes.sh rename to build_files/aurora-changes.sh diff --git a/build_files/base/build-base.sh b/build_files/base/build-base.sh deleted file mode 100644 index aa546ac0b1d..00000000000 --- a/build_files/base/build-base.sh +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/bash -# shellcheck disable=SC1091 - -set -ouex pipefail - -. /tmp/build/firmware.sh -. /tmp/build/cache_kernel.sh -. /tmp/build/copr-repos.sh -. /tmp/build/install-akmods.sh -. /tmp/build/packages.sh -. /tmp/build/nvidia.sh -. /tmp/build/image-info.sh -. /tmp/build/fetch-install.sh -. /tmp/build/brew.sh -. /tmp/build/fetch-quadlets.sh -. /tmp/build/font-install.sh -. /tmp/build/systemd.sh -. /tmp/build/bluefin-changes.sh -. /tmp/build/aurora-changes.sh -. /tmp/build/branding.sh -. /tmp/build/initramfs.sh -. /tmp/build/bootc.sh -. /tmp/build/cleanup.sh diff --git a/build_files/base/bluefin-changes.sh b/build_files/bluefin-changes.sh old mode 100644 new mode 100755 similarity index 100% rename from build_files/base/bluefin-changes.sh rename to build_files/bluefin-changes.sh diff --git a/build_files/shared/bootc.sh b/build_files/bootc.sh old mode 100644 new mode 100755 similarity index 100% rename from build_files/shared/bootc.sh rename to build_files/bootc.sh diff --git a/build_files/dx/branding-dx.sh b/build_files/branding-dx.sh old mode 100644 new mode 100755 similarity index 100% rename from build_files/dx/branding-dx.sh rename to build_files/branding-dx.sh diff --git a/build_files/base/branding.sh b/build_files/branding.sh old mode 100644 new mode 100755 similarity index 100% rename from build_files/base/branding.sh rename to build_files/branding.sh diff --git a/build_files/base/brew.sh b/build_files/brew.sh old mode 100644 new mode 100755 similarity index 100% rename from build_files/base/brew.sh rename to build_files/brew.sh diff --git a/build_files/build-base.sh b/build_files/build-base.sh new file mode 100755 index 00000000000..5ec07370993 --- /dev/null +++ b/build_files/build-base.sh @@ -0,0 +1,30 @@ +#!/usr/bin/bash +# shellcheck disable=SC1091 + +set -ouex pipefail + +cp /ctx/just /tmp/just +cp /ctx/packages.json /tmp/packages.json +cp /ctx/system_files/shared/usr/etc/ublue-update/ublue-update.toml /tmp/ublue-update.toml + +rsync -rvK /ctx/system_files/shared/ / +rsync -rvK /ctx/system_files/"${BASE_IMAGE_NAME}"/ / + +/ctx/build_files/firmware.sh +/ctx/build_files/cache_kernel.sh +/ctx/build_files/copr-repos.sh +/ctx/build_files/install-akmods.sh +/ctx/build_files/packages.sh +/ctx/build_files/nvidia.sh +/ctx/build_files/image-info.sh +/ctx/build_files/fetch-install.sh +/ctx/build_files/brew.sh +/ctx/build_files/fetch-quadlets.sh +/ctx/build_files/font-install.sh +/ctx/build_files/systemd.sh +/ctx/build_files/bluefin-changes.sh +/ctx/build_files/aurora-changes.sh +/ctx/build_files/branding.sh +/ctx/build_files/initramfs.sh +/ctx/build_files/bootc.sh +/ctx/build_files/cleanup.sh diff --git a/build_files/build-dx.sh b/build_files/build-dx.sh new file mode 100755 index 00000000000..c97e934abd7 --- /dev/null +++ b/build_files/build-dx.sh @@ -0,0 +1,21 @@ +#!/usr/bin/bash +# shellcheck disable=SC1091 + +set -ouex pipefail + +# Apply IP Forwarding before installing Docker to prevent messing with LXC networking +sysctl -p + +cp /ctx/packages.json /tmp/packages.json +rsync -rvK /ctx/system_files/dx/ / + +/ctx/build_files/copr-repos-dx.sh +/ctx/build_files/install-akmods-dx.sh +/ctx/build_files/packages-dx.sh +/ctx/build_files/image-info.sh +/ctx/build_files/fetch-install-dx.sh +/ctx/build_files/fonts-dx.sh +/ctx/build_files/workarounds.sh +/ctx/build_files/systemd-dx.sh +/ctx/build_files/branding-dx.sh +/ctx/build_files/cleanup-dx.sh diff --git a/build_files/base/cache_kernel.sh b/build_files/cache_kernel.sh old mode 100644 new mode 100755 similarity index 100% rename from build_files/base/cache_kernel.sh rename to build_files/cache_kernel.sh diff --git a/build_files/clean-stage.sh b/build_files/clean-stage.sh new file mode 100755 index 00000000000..064dd0b4e56 --- /dev/null +++ b/build_files/clean-stage.sh @@ -0,0 +1,8 @@ +#!/usr/bin/bash + +set -eoux pipefail +shopt -s extglob + +rm -rf /tmp/* || true +rm -rf /var/!(cache) +rm -rf /var/cache/!(rpm-ostree) diff --git a/build_files/dx/cleanup-dx.sh b/build_files/cleanup-dx.sh old mode 100644 new mode 100755 similarity index 100% rename from build_files/dx/cleanup-dx.sh rename to build_files/cleanup-dx.sh diff --git a/build_files/base/cleanup.sh b/build_files/cleanup.sh old mode 100644 new mode 100755 similarity index 100% rename from build_files/base/cleanup.sh rename to build_files/cleanup.sh diff --git a/build_files/dx/copr-repos-dx.sh b/build_files/copr-repos-dx.sh old mode 100644 new mode 100755 similarity index 100% rename from build_files/dx/copr-repos-dx.sh rename to build_files/copr-repos-dx.sh diff --git a/build_files/base/copr-repos.sh b/build_files/copr-repos.sh old mode 100644 new mode 100755 similarity index 100% rename from build_files/base/copr-repos.sh rename to build_files/copr-repos.sh diff --git a/build_files/dx/build-dx.sh b/build_files/dx/build-dx.sh deleted file mode 100644 index 31f504f45f3..00000000000 --- a/build_files/dx/build-dx.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/bash -# shellcheck disable=SC1091 - -set -ouex pipefail - -# Apply IP Forwarding before installing Docker to prevent messing with LXC networking -sysctl -p - -. /tmp/build/copr-repos-dx.sh -. /tmp/build/install-akmods-dx.sh -. /tmp/build/packages-dx.sh -. /tmp/build/image-info.sh -. /tmp/build/fetch-install-dx.sh -. /tmp/build/fonts-dx.sh -. /tmp/build/workarounds.sh -. /tmp/build/systemd-dx.sh -. /tmp/build/branding-dx.sh -. /tmp/build/cleanup-dx.sh diff --git a/build_files/dx/fetch-install-dx.sh b/build_files/fetch-install-dx.sh old mode 100644 new mode 100755 similarity index 100% rename from build_files/dx/fetch-install-dx.sh rename to build_files/fetch-install-dx.sh diff --git a/build_files/base/fetch-install.sh b/build_files/fetch-install.sh old mode 100644 new mode 100755 similarity index 100% rename from build_files/base/fetch-install.sh rename to build_files/fetch-install.sh diff --git a/build_files/base/fetch-quadlets.sh b/build_files/fetch-quadlets.sh similarity index 100% rename from build_files/base/fetch-quadlets.sh rename to build_files/fetch-quadlets.sh diff --git a/build_files/base/firmware.sh b/build_files/firmware.sh old mode 100644 new mode 100755 similarity index 100% rename from build_files/base/firmware.sh rename to build_files/firmware.sh diff --git a/build_files/base/font-install.sh b/build_files/font-install.sh old mode 100644 new mode 100755 similarity index 100% rename from build_files/base/font-install.sh rename to build_files/font-install.sh diff --git a/build_files/dx/fonts-dx.sh b/build_files/fonts-dx.sh old mode 100644 new mode 100755 similarity index 100% rename from build_files/dx/fonts-dx.sh rename to build_files/fonts-dx.sh diff --git a/build_files/shared/image-info.sh b/build_files/image-info.sh similarity index 100% rename from build_files/shared/image-info.sh rename to build_files/image-info.sh diff --git a/build_files/shared/initramfs.sh b/build_files/initramfs.sh similarity index 100% rename from build_files/shared/initramfs.sh rename to build_files/initramfs.sh diff --git a/build_files/dx/install-akmods-dx.sh b/build_files/install-akmods-dx.sh old mode 100644 new mode 100755 similarity index 100% rename from build_files/dx/install-akmods-dx.sh rename to build_files/install-akmods-dx.sh diff --git a/build_files/base/install-akmods.sh b/build_files/install-akmods.sh similarity index 100% rename from build_files/base/install-akmods.sh rename to build_files/install-akmods.sh diff --git a/build_files/base/nvidia.sh b/build_files/nvidia.sh old mode 100644 new mode 100755 similarity index 100% rename from build_files/base/nvidia.sh rename to build_files/nvidia.sh diff --git a/build_files/dx/packages-dx.sh b/build_files/packages-dx.sh similarity index 100% rename from build_files/dx/packages-dx.sh rename to build_files/packages-dx.sh diff --git a/build_files/base/packages.sh b/build_files/packages.sh similarity index 100% rename from build_files/base/packages.sh rename to build_files/packages.sh diff --git a/build_files/dx/systemd-dx.sh b/build_files/systemd-dx.sh old mode 100644 new mode 100755 similarity index 100% rename from build_files/dx/systemd-dx.sh rename to build_files/systemd-dx.sh diff --git a/build_files/base/systemd.sh b/build_files/systemd.sh old mode 100644 new mode 100755 similarity index 100% rename from build_files/base/systemd.sh rename to build_files/systemd.sh diff --git a/build_files/dx/workarounds.sh b/build_files/workarounds.sh similarity index 100% rename from build_files/dx/workarounds.sh rename to build_files/workarounds.sh From 4a5c2d2995e7ca64860975adc682d80001800019 Mon Sep 17 00:00:00 2001 From: m2Giles <69128853+m2Giles@users.noreply.github.com> Date: Sun, 21 Jul 2024 23:21:50 -0400 Subject: [PATCH 2/3] recursive copy --- build_files/build-base.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build_files/build-base.sh b/build_files/build-base.sh index 5ec07370993..dce95345521 100755 --- a/build_files/build-base.sh +++ b/build_files/build-base.sh @@ -3,7 +3,7 @@ set -ouex pipefail -cp /ctx/just /tmp/just +cp -r /ctx/just /tmp/just cp /ctx/packages.json /tmp/packages.json cp /ctx/system_files/shared/usr/etc/ublue-update/ublue-update.toml /tmp/ublue-update.toml From 60636a270dd024e25946fb510b0f39d89c3cc3bb Mon Sep 17 00:00:00 2001 From: m2Giles <69128853+m2Giles@users.noreply.github.com> Date: Sun, 21 Jul 2024 23:30:15 -0400 Subject: [PATCH 3/3] add context for dx --- Containerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Containerfile b/Containerfile index fa42c1a461c..916d80a04be 100644 --- a/Containerfile +++ b/Containerfile @@ -68,6 +68,7 @@ ARG UBLUE_IMAGE_TAG="${UBLUE_IMAGE_TAG:-latest}" # Build, Clean-up, Commit RUN --mount=type=cache,dst=/var/cache/rpm-ostree \ + --mount=type=bind,from=ctx,source=/,target=/ctx \ --mount=type=bind,from=akmods,source=/rpms,target=/tmp/akmods \ mkdir -p /var/lib/alternatives && \ /ctx/build_files/build-dx.sh && \