From 4e3a37e231d6761a068580b5359ea63ec1f0f2dc Mon Sep 17 00:00:00 2001 From: RJ Sampson Date: Mon, 8 Jul 2024 16:54:09 -0600 Subject: [PATCH 1/8] fix(Containerfile): Copy NVIDIA akmods specific to the akmods flavor This was previously explicitly set to copy akmods for the CoreOS kernel, always match the akmods flavor instead Signed-off-by: RJ Sampson --- Containerfile | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/Containerfile b/Containerfile index 890e625b6e0..f1d6503222d 100644 --- a/Containerfile +++ b/Containerfile @@ -11,10 +11,9 @@ ARG UBLUE_IMAGE_TAG="${UBLUE_IMAGE_TAG:-latest}" # FROM's for copying ARG KMOD_SOURCE_COMMON="ghcr.io/ublue-os/akmods:${AKMODS_FLAVOR}-${FEDORA_MAJOR_VERSION}" -ARG COREOS_KMODS="ghcr.io/ublue-os/ucore-kmods:stable" -ARG COREOS_NVIDIA="ghcr.io/ublue-os/akmods-nvidia:coreos-${FEDORA_MAJOR_VERSION}" +ARG KMOD_SOURCE_NVIDIA="ghcr.io/ublue-os/akmods-nvidia:${AKMODS_FLAVOR}-${FEDORA_MAJOR_VERSION}" FROM ${KMOD_SOURCE_COMMON} AS akmods -FROM ${COREOS_NVIDIA} AS coreos_nvidia +FROM ${KMOD_SOURCE_NVIDIA} AS akmods_nvidia ## bluefin image section FROM ${BASE_IMAGE}:${FEDORA_MAJOR_VERSION} AS base @@ -37,9 +36,9 @@ 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 ublue kmods COPY --from=akmods /rpms /tmp/akmods-rpms -COPY --from=coreos_nvidia /rpms /tmp/akmods-rpms +COPY --from=akmods_nvidia /rpms /tmp/akmods-rpms # Build, cleanup, commit. RUN rpm-ostree cliwrap install-to-root / && \ From 0d3d2e6340a814240acc66c9fe5972811be3278a Mon Sep 17 00:00:00 2001 From: RJ Sampson Date: Mon, 8 Jul 2024 19:22:04 -0600 Subject: [PATCH 2/8] feat: Ship fsync kernel in latest, kill HWE builds Also perform additional cleanup of CI and scripts Signed-off-by: RJ Sampson --- .github/workflows/reusable-build-iso.yml | 17 ----- .github/workflows/reusable-build.yml | 70 +++---------------- Containerfile | 14 ++-- build_files/base/build-base.sh | 2 +- build_files/base/install-akmods.sh | 13 ++-- .../{coreos_kernel.sh => install-kernel.sh} | 16 +++-- build_files/base/nvidia.sh | 2 +- build_files/shared/image-info.sh | 9 +-- scripts/build-image.sh | 8 +-- 9 files changed, 43 insertions(+), 108 deletions(-) rename build_files/base/{coreos_kernel.sh => install-kernel.sh} (56%) diff --git a/.github/workflows/reusable-build-iso.yml b/.github/workflows/reusable-build-iso.yml index 065930aac9a..2e16cd6dfbc 100644 --- a/.github/workflows/reusable-build-iso.yml +++ b/.github/workflows/reusable-build-iso.yml @@ -28,28 +28,11 @@ jobs: image_flavor: - main - nvidia - - asus - - asus-nvidia - - surface - - surface-nvidia base_name: - ${{ inputs.brand_name }} - ${{ inputs.brand_name }}-dx fedora_version: - ${{ inputs.fedora_version }} - exclude: - - fedora_version: gts - image_flavor: asus - - fedora_version: gts - image_flavor: asus-nvidia - - fedora_version: stable - image_flavor: asus - - fedora_version: stable - image_flavor: asus-nvidia - - fedora_version: stable - image_flavor: surface - - fedora_version: stable - image_flavor: surface-nvidia steps: - name: Free Disk Space (Ubuntu) diff --git a/.github/workflows/reusable-build.yml b/.github/workflows/reusable-build.yml index 3e3eaf018a8..aed94f8e82b 100644 --- a/.github/workflows/reusable-build.yml +++ b/.github/workflows/reusable-build.yml @@ -34,36 +34,11 @@ jobs: image_flavor: - main - nvidia - - asus - - asus-nvidia - - surface - - surface-nvidia base_name: - ${{ inputs.brand_name }} - ${{ inputs.brand_name }}-dx fedora_version: - ${{ inputs.fedora_version }} - exclude: - - fedora_version: gts - image_flavor: asus - - fedora_version: gts - image_flavor: asus-nvidia - - fedora_version: stable - image_flavor: asus - - fedora_version: stable - image_flavor: asus-nvidia - - fedora_version: stable - image_flavor: surface - - fedora_version: stable - image_flavor: surface-nvidia - - fedora_version: beta - image_flavor: asus - - fedora_version: beta - image_flavor: asus-nvidia - - fedora_version: beta - image_flavor: surface - - fedora_version: beta - image_flavor: surface-nvidia steps: - name: Checkout @@ -93,31 +68,11 @@ jobs: fi # AKMODS_FLAVOR - if [[ "${{ matrix.image_flavor }}" =~ "asus" ]]; then - echo "AKMODS_FLAVOR=asus" >> $GITHUB_ENV - elif [[ "${{ matrix.image_flavor }}" =~ "surface" ]]; then - echo "AKMODS_FLAVOR=surface" >> $GITHUB_ENV - echo "KERNEL_SUFFIX=surface" >> $GITHUB_ENV - elif [[ "${{ matrix.fedora_version }}" == "stable" || \ - "${{ matrix.fedora_version }}" == "gts" ]]; then - echo "AKMODS_FLAVOR=coreos" >> $GITHUB_ENV - else - echo "AKMODS_FLAVOR=main" >> $GITHUB_ENV - fi - - # Env for matrix.image_flavor - if [[ "${{ matrix.image_flavor }}" == "nvidia" ]] && \ - [[ "${{ matrix.fedora_version }}" == "stable" || \ - "${{ matrix.fedora_version }}" == "gts" ]]; then - echo "image_flavor=main" >> $GITHUB_ENV - echo "coreos_type=nvidia" >> $GITHUB_ENV - elif [[ "${{ matrix.image_flavor }}" == "main" ]] && \ - [[ "${{ matrix.fedora_version }}" == "stable" || \ + if [[ "${{ matrix.fedora_version }}" == "stable" || \ "${{ matrix.fedora_version }}" == "gts" ]]; then - echo "image_flavor=${{ matrix.image_flavor }}" >> $GITHUB_ENV - echo "coreos_type=main" >> $GITHUB_ENV + echo "AKMODS_FLAVOR=coreos" >> $GITHUB_ENV else - echo "image_flavor=${{ matrix.image_flavor }}" >> $GITHUB_ENV + echo "AKMODS_FLAVOR=fsync" >> $GITHUB_ENV fi - name: Get Current Fedora Version @@ -133,12 +88,12 @@ jobs: coreos_fedora_version=$(echo $coreos_kernel_release | grep -oP 'fc\K[0-9]+') KERNEL_RELEASE="${major_minor_patch}-200.fc$(($coreos_fedora_version - 1))" else - KERNEL_RELEASE=$(skopeo inspect docker://ghcr.io/ublue-os/silverblue-${{ env.image_flavor }}:${{ matrix.fedora_version }} | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]') + KERNEL_RELEASE=$(skopeo inspect docker://ghcr.io/ublue-os/fsync:latest | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]') fi fedora_version=$(echo $KERNEL_RELEASE | grep -oP 'fc\K[0-9]+') echo "kernel_release=$KERNEL_RELEASE" >> $GITHUB_OUTPUT echo "fedora_version=$fedora_version" >> $GITHUB_OUTPUT - ver=$(skopeo inspect docker://ghcr.io/ublue-os/${{ env.BASE_IMAGE_NAME }}-${{ env.image_flavor }}:$fedora_version | jq -r '.Labels["org.opencontainers.image.version"]') + ver=$(skopeo inspect docker://ghcr.io/ublue-os/${{ env.BASE_IMAGE_NAME }}-main:$fedora_version | jq -r '.Labels["org.opencontainers.image.version"]') if [ -z "$ver" ] || [ "null" = "$ver" ]; then echo "inspected image version must not be empty or null" exit 1 @@ -148,7 +103,7 @@ jobs: - name: Verify base image uses: EyeCantCU/cosign-action/verify@11f8c114a5e67c7a663c9dfcaf76d85429d254bc # v0.2.2 with: - containers: ${{ env.BASE_IMAGE_NAME}}-${{ env.image_flavor }}:${{ steps.labels.outputs.fedora_version }} + containers: ${{ env.BASE_IMAGE_NAME}}-main:${{ steps.labels.outputs.fedora_version }} - name: Verify Chainguard images if: matrix.base_name != 'bluefin' && matrix.base_name != 'aurora' @@ -160,7 +115,7 @@ jobs: registry: cgr.dev/chainguard - name: Maximize build space - if: contains(matrix.base_name, '-dx') && (github.event_name == 'pull_request' && ( matrix.image_flavor == 'main' || matrix.image_flavor == 'nvidia' ) || github.event_name != 'pull_request') + if: contains(matrix.base_name, '-dx') uses: ublue-os/remove-unwanted-software@517622d6452028f266b7ba4cc9a123b5f58a6b53 # v7 - name: Check just syntax @@ -278,7 +233,6 @@ jobs: # Build image using Buildah action - name: Build Image id: build_image - if: github.event_name == 'pull_request' && ( matrix.image_flavor == 'main' || matrix.image_flavor == 'nvidia' ) || github.event_name != 'pull_request' uses: redhat-actions/buildah-build@7a95fa7ee0f02d552a32753e7414641a04307056 # v2 with: containerfiles: | @@ -289,12 +243,11 @@ jobs: build-args: | BASE_IMAGE_NAME=${{ env.BASE_IMAGE_NAME }} IMAGE_NAME=${{ env.IMAGE_NAME }} - IMAGE_FLAVOR=${{ env.image_flavor }} + IMAGE_FLAVOR=${{ matrix.image_flavor }} IMAGE_VENDOR=${{ github.repository_owner }} FEDORA_MAJOR_VERSION=${{ steps.labels.outputs.fedora_version }} TARGET_BASE=${{ matrix.target_base }} AKMODS_FLAVOR=${{ env.AKMODS_FLAVOR }} - COREOS_TYPE=${{ env.coreos_type }} KERNEL=${{ steps.labels.outputs.kernel_release }} UBLUE_IMAGE_TAG=${{ matrix.fedora_version }} labels: ${{ steps.meta.outputs.labels }} @@ -314,7 +267,6 @@ jobs: privkey: ${{ secrets.AKMOD_PRIVKEY_20230518 }} pubkey: /etc/pki/akmods/certs/akmods-ublue.der tags: ${{ steps.build_image.outputs.tags }} - kernel_suffix: ${{ env.KERNEL_SUFFIX }} strip: false # Workaround bug where capital letters in your GitHub username make it impossible to push to GHCR. @@ -367,7 +319,7 @@ jobs: DIGEST: ${{ steps.push.outputs.digest }} IMAGE_REGISTRY: ${{ env.IMAGE_REGISTRY }}/${{ env.IMAGE_NAME }} IMAGE_NAME: ${{ env.IMAGE_NAME }} - IMAGE_FLAVOR: ${{ env.image_flavor }} + IMAGE_FLAVOR: ${{ matrix.image_flavor }} FEDORA_VERSION: ${{ matrix.fedora_version }} run: echo "${IMAGE_REGISTRY}@${DIGEST}" > "${IMAGE_NAME}-${IMAGE_FLAVOR}-${FEDORA_VERSION}.txt" @@ -375,11 +327,11 @@ jobs: if: github.event_name != 'pull_request' uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4 with: - name: image-${{ env.IMAGE_NAME }}-${{ env.image_flavor }}-${{ matrix.fedora_version }} + name: image-${{ env.IMAGE_NAME }}-${{ matrix.image_flavor }}-${{ matrix.fedora_version }} retention-days: 1 if-no-files-found: error path: | - ${{ env.IMAGE_NAME }}-${{ env.image_flavor }}-${{ matrix.fedora_version }}.txt + ${{ env.IMAGE_NAME }}-${{ matrix.image_flavor }}-${{ matrix.fedora_version }}.txt check: name: Check all ${{ inputs.brand_name }} ${{ inputs.fedora_version }} builds successful diff --git a/Containerfile b/Containerfile index f1d6503222d..798695fbcac 100644 --- a/Containerfile +++ b/Containerfile @@ -5,16 +5,20 @@ ARG SOURCE_IMAGE="${SOURCE_IMAGE:-${BASE_IMAGE_NAME}-${IMAGE_FLAVOR}}" ARG BASE_IMAGE="ghcr.io/ublue-os/${SOURCE_IMAGE}" ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION:-40}" ARG TARGET_BASE="${TARGET_BASE:-bluefin}" -ARG COREOS_TYPE="${COREOS_TYPE:-}" ARG KERNEL="${KERNEL:-}" ARG UBLUE_IMAGE_TAG="${UBLUE_IMAGE_TAG:-latest}" -# FROM's for copying +# Sources for akmods ARG KMOD_SOURCE_COMMON="ghcr.io/ublue-os/akmods:${AKMODS_FLAVOR}-${FEDORA_MAJOR_VERSION}" ARG KMOD_SOURCE_NVIDIA="ghcr.io/ublue-os/akmods-nvidia:${AKMODS_FLAVOR}-${FEDORA_MAJOR_VERSION}" + +# Fetch akmods FROM ${KMOD_SOURCE_COMMON} AS akmods FROM ${KMOD_SOURCE_NVIDIA} AS akmods_nvidia +# Fetch fsync kernel +FROM ghcr.io/ublue-os/fsync:latest AS fsync + ## bluefin image section FROM ${BASE_IMAGE}:${FEDORA_MAJOR_VERSION} AS base @@ -24,7 +28,6 @@ ARG IMAGE_FLAVOR="${IMAGE_FLAVOR}" ARG AKMODS_FLAVOR="${AKMODS_FLAVOR}" ARG BASE_IMAGE_NAME="${BASE_IMAGE_NAME}" ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION}" -ARG COREOS_TYPE="${COREOS_TYPE:-}" ARG KERNEL="${KERNEL:-}" ARG UBLUE_IMAGE_TAG="${UBLUE_IMAGE_TAG:-latest}" @@ -36,10 +39,14 @@ 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 COPY --from=akmods /rpms /tmp/akmods-rpms COPY --from=akmods_nvidia /rpms /tmp/akmods-rpms +# Copy fsync kernel +COPY --from=fsync /tmp/rpms /tmp/fsync-rpms + # Build, cleanup, commit. RUN rpm-ostree cliwrap install-to-root / && \ mkdir -p /var/lib/alternatives && \ @@ -60,7 +67,6 @@ ARG BASE_IMAGE_NAME="${BASE_IMAGE_NAME}" ARG IMAGE_FLAVOR="${IMAGE_FLAVOR}" ARG AKMODS_FLAVOR="${AKMODS_FLAVOR}" ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION}" -ARG COREOS_TYPE="${COREOS_TYPE:-}" ARG KERNEL="${KERNEL:-}" ARG UBLUE_IMAGE_TAG="${UBLUE_IMAGE_TAG:-latest}" diff --git a/build_files/base/build-base.sh b/build_files/base/build-base.sh index cd0dad6cca7..ebfa9ba6347 100644 --- a/build_files/base/build-base.sh +++ b/build_files/base/build-base.sh @@ -4,7 +4,7 @@ set -ouex pipefail . /tmp/build/firmware.sh -. /tmp/build/coreos_kernel.sh +. /tmp/build/install-kernel.sh . /tmp/build/copr-repos.sh . /tmp/build/install-akmods.sh . /tmp/build/packages.sh diff --git a/build_files/base/install-akmods.sh b/build_files/base/install-akmods.sh index 90a0f785ae7..0c23d525752 100755 --- a/build_files/base/install-akmods.sh +++ b/build_files/base/install-akmods.sh @@ -2,13 +2,13 @@ set -ouex pipefail -if [[ -n "${COREOS_TYPE:-}" ]]; then +if [[ "${AKMODS_FLAVOR}" == "coreos" ]]; then curl -L -o /etc/yum.repos.d/fedora-coreos-pool.repo \ https://raw.githubusercontent.com/coreos/fedora-coreos-config/testing-devel/fedora-coreos-pool.repo fi # Nvidia for gts/stable - nvidia -if [[ "${COREOS_TYPE}" == "nvidia" ]]; then +if [[ "${AKMODS_FLAVOR}" == "nvidia" ]]; then curl -Lo /tmp/nvidia-install.sh https://raw.githubusercontent.com/ublue-os/hwe/main/nvidia-install.sh && \ chmod +x /tmp/nvidia-install.sh && \ IMAGE_NAME="${BASE_IMAGE_NAME}" RPMFUSION_MIRROR="" /tmp/nvidia-install.sh @@ -20,6 +20,7 @@ sed -i 's@enabled=0@enabled=1@g' /etc/yum.repos.d/_copr_ublue-os-akmods.repo # Everyone rpm-ostree install \ + /tmp/akmods-rpms/kmods/*evdi*.rpm \ /tmp/akmods-rpms/kmods/*xpadneo*.rpm \ /tmp/akmods-rpms/kmods/*xone*.rpm \ /tmp/akmods-rpms/kmods/*openrazer*.rpm \ @@ -27,16 +28,10 @@ rpm-ostree install \ /tmp/akmods-rpms/kmods/*v4l2loopback*.rpm # /tmp/akmods-rpms/kmods/*framework-laptop*.rpm -# All but Asus -if grep -qv "asus" <<< "${AKMODS_FLAVOR}"; then - rpm-ostree install \ - /tmp/akmods-rpms/kmods/*evdi*.rpm -fi - sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/negativo17-fedora-multimedia.repo # ZFS for gts/stable -if [[ -n "${COREOS_TYPE:-}" ]]; then +if [[ "${AKMODS_FLAVOR}" == "coreos" ]]; then rpm-ostree install /tmp/akmods-rpms/kmods/zfs/*.rpm \ pv depmod -a -v "${KERNEL}".x86_64 diff --git a/build_files/base/coreos_kernel.sh b/build_files/base/install-kernel.sh similarity index 56% rename from build_files/base/coreos_kernel.sh rename to build_files/base/install-kernel.sh index 2f11bf870fd..c389d5fe749 100644 --- a/build_files/base/coreos_kernel.sh +++ b/build_files/base/install-kernel.sh @@ -2,14 +2,22 @@ set -eoux pipefail -if [[ -n "${COREOS_TYPE:-}" ]]; then - KERNEL_VERSION="${KERNEL}" - KERNEL_MAJOR_MINOR_PATCH=$(echo "$KERNEL_VERSION" | cut -d '-' -f 1) - KERNEL_RELEASE=$(echo "$KERNEL_VERSION" | cut -d '-' -f 2) +KERNEL_VERSION="${KERNEL}" +KERNEL_MAJOR_MINOR_PATCH=$(echo "$KERNEL_VERSION" | cut -d '-' -f 1) +KERNEL_RELEASE=$(echo "$KERNEL_VERSION" | cut -d '-' -f 2) + +if [[ "${AKMODS_FLAVOR}" == "coreos" ]]; then rpm-ostree override replace --experimental \ "https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/x86_64/kernel-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ "https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/x86_64/kernel-core-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ "https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/x86_64/kernel-modules-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ "https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/x86_64/kernel-modules-core-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ "https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/x86_64/kernel-modules-extra-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" +elif [[ "${AKMODS_FLAVOR}" == "fsync" ]]; then + rpm-ostree override replace --experimental \ + "/tmp/fsync-rpms/kernel-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ + "/tmp/fsync-rpms/kernel-core-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ + "/tmp/fsync-rpms/kernel-modules-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ + "/tmp/fsync-rpms/kernel-modules-core-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ + "/tmp/fsync-rpms/kernel-modules-extra-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" fi diff --git a/build_files/base/nvidia.sh b/build_files/base/nvidia.sh index 4053cac67fe..d04112cb12e 100644 --- a/build_files/base/nvidia.sh +++ b/build_files/base/nvidia.sh @@ -3,7 +3,7 @@ set -ouex pipefail # Nvidia Configurations -if [[ "${IMAGE_FLAVOR}" =~ "nvidia" || "${COREOS_TYPE}" =~ "nvidia" ]]; then +if [[ "${IMAGE_FLAVOR}" =~ "nvidia" ]]; then # Restore x11 for Nvidia Images if [[ "${BASE_IMAGE_NAME}" =~ "kinoite" && "${FEDORA_MAJOR_VERSION}" -gt "39" ]]; then rpm-ostree install plasma-workspace-x11 diff --git a/build_files/shared/image-info.sh b/build_files/shared/image-info.sh index d376770a4db..a2586afbbdd 100755 --- a/build_files/shared/image-info.sh +++ b/build_files/shared/image-info.sh @@ -5,17 +5,10 @@ set -ouex pipefail IMAGE_INFO="/usr/share/ublue-os/image-info.json" IMAGE_REF="ostree-image-signed:docker://ghcr.io/$IMAGE_VENDOR/$IMAGE_NAME" -#shellcheck disable=SC2153 -image_flavor="${IMAGE_FLAVOR}" - -if [[ "${COREOS_TYPE}" == "nvidia" ]]; then - image_flavor="nvidia" -fi - cat > $IMAGE_INFO < Date: Mon, 8 Jul 2024 19:35:15 -0600 Subject: [PATCH 3/8] fix: Remove quotes from kernel release Signed-off-by: RJ Sampson --- .github/workflows/reusable-build.yml | 6 +++--- scripts/build-image.sh | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/reusable-build.yml b/.github/workflows/reusable-build.yml index aed94f8e82b..76b9aadddc6 100644 --- a/.github/workflows/reusable-build.yml +++ b/.github/workflows/reusable-build.yml @@ -81,14 +81,14 @@ jobs: run: | set -eo pipefail if [[ ${{ matrix.fedora_version }} == "stable" ]]; then - KERNEL_RELEASE=$(skopeo inspect docker://quay.io/fedora/fedora-coreos:stable | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]') + KERNEL_RELEASE=$(skopeo inspect docker://quay.io/fedora/fedora-coreos:stable | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]' | tr -d '"') elif [[ ${{ matrix.fedora_version }} == "gts" ]]; then - coreos_kernel_release=$(skopeo inspect docker://quay.io/fedora/fedora-coreos:stable | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]') + coreos_kernel_release=$(skopeo inspect docker://quay.io/fedora/fedora-coreos:stable | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]' | tr -d '"') major_minor_patch=$(echo "$coreos_kernel_release" | cut -d '-' -f 1) coreos_fedora_version=$(echo $coreos_kernel_release | grep -oP 'fc\K[0-9]+') KERNEL_RELEASE="${major_minor_patch}-200.fc$(($coreos_fedora_version - 1))" else - KERNEL_RELEASE=$(skopeo inspect docker://ghcr.io/ublue-os/fsync:latest | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]') + KERNEL_RELEASE=$(skopeo inspect docker://ghcr.io/ublue-os/fsync:latest | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]' | tr -d '"') fi fedora_version=$(echo $KERNEL_RELEASE | grep -oP 'fc\K[0-9]+') echo "kernel_release=$KERNEL_RELEASE" >> $GITHUB_OUTPUT diff --git a/scripts/build-image.sh b/scripts/build-image.sh index a4ce67fd8af..0f6db4835bc 100755 --- a/scripts/build-image.sh +++ b/scripts/build-image.sh @@ -18,15 +18,15 @@ version=$3 # Get Fedora Version and Kernel Info if [[ "${version}" == "stable" ]]; then - KERNEL_RELEASE=$(skopeo inspect docker://quay.io/fedora/fedora-coreos:stable | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]') + KERNEL_RELEASE=$(skopeo inspect docker://quay.io/fedora/fedora-coreos:stable | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]' | tr -d '"') fedora_version=$(echo "$KERNEL_RELEASE" | grep -oP 'fc\K[0-9]+') elif [[ ${version} == "gts" ]]; then - coreos_kernel_release=$(skopeo inspect docker://quay.io/fedora/fedora-coreos:stable | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]') + coreos_kernel_release=$(skopeo inspect docker://quay.io/fedora/fedora-coreos:stable | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]' | tr -d '"') major_minor_patch=$(echo "$coreos_kernel_release" | cut -d '-' -f 1) coreos_fedora_version=$(echo "$coreos_kernel_release" | grep -oP 'fc\K[0-9]+') KERNEL_RELEASE="${major_minor_patch}-200.fc$(("$coreos_fedora_version" - 1))" else - KERNEL_RELEASE=$(skopeo inspect docker://ghcr.io/ublue-os/fsync:latest | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]') + KERNEL_RELEASE=$(skopeo inspect docker://ghcr.io/ublue-os/fsync:latest | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]' | tr -d '"') fi fedora_version=$(echo "$KERNEL_RELEASE" | grep -oP 'fc\K[0-9]+') From a96c17c32d8d86ddd39c623437519145d0c34c77 Mon Sep 17 00:00:00 2001 From: RJ Sampson Date: Mon, 8 Jul 2024 19:52:12 -0600 Subject: [PATCH 4/8] fix: Add missing "fsync" to kernel release Signed-off-by: RJ Sampson --- .github/workflows/reusable-build.yml | 5 ++++- scripts/build-image.sh | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable-build.yml b/.github/workflows/reusable-build.yml index 76b9aadddc6..54e01e05964 100644 --- a/.github/workflows/reusable-build.yml +++ b/.github/workflows/reusable-build.yml @@ -88,7 +88,10 @@ jobs: coreos_fedora_version=$(echo $coreos_kernel_release | grep -oP 'fc\K[0-9]+') KERNEL_RELEASE="${major_minor_patch}-200.fc$(($coreos_fedora_version - 1))" else - KERNEL_RELEASE=$(skopeo inspect docker://ghcr.io/ublue-os/fsync:latest | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]' | tr -d '"') + fsync_kernel_release=$(skopeo inspect docker://ghcr.io/ublue-os/fsync:latest | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]' | tr -d '"') + fsync_kernel_version=$(echo "${fsync_kernel_release//.fc*}") + fsync_fedora_version=$(echo "${fsync_kernel_release//*.fc}") + KERNEL_RELEASE="${fsync_kernel_version}.fsync.fc${fsync_fedora_version}" fi fedora_version=$(echo $KERNEL_RELEASE | grep -oP 'fc\K[0-9]+') echo "kernel_release=$KERNEL_RELEASE" >> $GITHUB_OUTPUT diff --git a/scripts/build-image.sh b/scripts/build-image.sh index 0f6db4835bc..399d161065c 100755 --- a/scripts/build-image.sh +++ b/scripts/build-image.sh @@ -26,7 +26,10 @@ elif [[ ${version} == "gts" ]]; then coreos_fedora_version=$(echo "$coreos_kernel_release" | grep -oP 'fc\K[0-9]+') KERNEL_RELEASE="${major_minor_patch}-200.fc$(("$coreos_fedora_version" - 1))" else - KERNEL_RELEASE=$(skopeo inspect docker://ghcr.io/ublue-os/fsync:latest | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]' | tr -d '"') + fsync_kernel_release=$(skopeo inspect docker://ghcr.io/ublue-os/fsync:latest | jq -r '.Labels["ostree.linux"] | split(".x86_64")[0]' | tr -d '"') + fsync_kernel_version=$(echo "${fsync_kernel_release//.fc*}") + fsync_fedora_version=$(echo "${fsync_kernel_release//*.fc}") + KERNEL_RELEASE="${fsync_kernel_version}.fsync.fc${fsync_fedora_version}" fi fedora_version=$(echo "$KERNEL_RELEASE" | grep -oP 'fc\K[0-9]+') From 2ee30362fa67527647e9f40be4fded5b415e0faf Mon Sep 17 00:00:00 2001 From: RJ Sampson Date: Mon, 8 Jul 2024 20:08:37 -0600 Subject: [PATCH 5/8] fix: Install proper kernel headers Previously, the headers provided by the upstream kernel were installed instead of the ones for CoreOS/fsync Signed-off-by: RJ Sampson --- build_files/base/install-kernel.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build_files/base/install-kernel.sh b/build_files/base/install-kernel.sh index c389d5fe749..d4d1e781c51 100644 --- a/build_files/base/install-kernel.sh +++ b/build_files/base/install-kernel.sh @@ -10,6 +10,7 @@ if [[ "${AKMODS_FLAVOR}" == "coreos" ]]; then rpm-ostree override replace --experimental \ "https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/x86_64/kernel-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ "https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/x86_64/kernel-core-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ + "https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/x86_64/kernel-headers-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ "https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/x86_64/kernel-modules-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ "https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/x86_64/kernel-modules-core-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ "https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/x86_64/kernel-modules-extra-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" @@ -17,6 +18,7 @@ elif [[ "${AKMODS_FLAVOR}" == "fsync" ]]; then rpm-ostree override replace --experimental \ "/tmp/fsync-rpms/kernel-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ "/tmp/fsync-rpms/kernel-core-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ + "/tmp/fsync-rpms/kernel-headers-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ "/tmp/fsync-rpms/kernel-modules-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ "/tmp/fsync-rpms/kernel-modules-core-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ "/tmp/fsync-rpms/kernel-modules-extra-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" From fab5c0f3fc7a0321bc16aff78d08af036b63f541 Mon Sep 17 00:00:00 2001 From: RJ Sampson Date: Mon, 8 Jul 2024 20:10:01 -0600 Subject: [PATCH 6/8] fix: Install UKI virt with fsync kernel Signed-off-by: RJ Sampson --- build_files/base/install-kernel.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build_files/base/install-kernel.sh b/build_files/base/install-kernel.sh index d4d1e781c51..673308df12e 100644 --- a/build_files/base/install-kernel.sh +++ b/build_files/base/install-kernel.sh @@ -21,5 +21,6 @@ elif [[ "${AKMODS_FLAVOR}" == "fsync" ]]; then "/tmp/fsync-rpms/kernel-headers-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ "/tmp/fsync-rpms/kernel-modules-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ "/tmp/fsync-rpms/kernel-modules-core-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ - "/tmp/fsync-rpms/kernel-modules-extra-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" + "/tmp/fsync-rpms/kernel-modules-extra-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ + "/tmp/fsync-rpms/kernel-uki-virt-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" fi From c3e9a9465c2fbfbd9b5bff039b03cf639afff006 Mon Sep 17 00:00:00 2001 From: RJ Sampson Date: Mon, 8 Jul 2024 20:26:29 -0600 Subject: [PATCH 7/8] fix: Always pull main as source image We layer the NVIDIA kmod on top of the existing image, no need for the NVIDIA image Signed-off-by: RJ Sampson --- Containerfile | 2 +- build_files/base/install-akmods.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Containerfile b/Containerfile index 798695fbcac..9889bdb160c 100644 --- a/Containerfile +++ b/Containerfile @@ -1,7 +1,7 @@ ARG BASE_IMAGE_NAME="${BASE_IMAGE_NAME:-silverblue}" ARG IMAGE_FLAVOR="${IMAGE_FLAVOR:-main}" ARG AKMODS_FLAVOR="${AKMODS_FLAVOR:-main}" -ARG SOURCE_IMAGE="${SOURCE_IMAGE:-${BASE_IMAGE_NAME}-${IMAGE_FLAVOR}}" +ARG SOURCE_IMAGE="${SOURCE_IMAGE:-${BASE_IMAGE_NAME}-main}" ARG BASE_IMAGE="ghcr.io/ublue-os/${SOURCE_IMAGE}" ARG FEDORA_MAJOR_VERSION="${FEDORA_MAJOR_VERSION:-40}" ARG TARGET_BASE="${TARGET_BASE:-bluefin}" diff --git a/build_files/base/install-akmods.sh b/build_files/base/install-akmods.sh index 0c23d525752..a926168a46d 100755 --- a/build_files/base/install-akmods.sh +++ b/build_files/base/install-akmods.sh @@ -7,7 +7,7 @@ if [[ "${AKMODS_FLAVOR}" == "coreos" ]]; then https://raw.githubusercontent.com/coreos/fedora-coreos-config/testing-devel/fedora-coreos-pool.repo fi -# Nvidia for gts/stable - nvidia +# Nvidia if [[ "${AKMODS_FLAVOR}" == "nvidia" ]]; then curl -Lo /tmp/nvidia-install.sh https://raw.githubusercontent.com/ublue-os/hwe/main/nvidia-install.sh && \ chmod +x /tmp/nvidia-install.sh && \ From 5a7297db518240f38fda6f1015e0e4b61da0aa84 Mon Sep 17 00:00:00 2001 From: RJ Sampson Date: Mon, 8 Jul 2024 20:35:18 -0600 Subject: [PATCH 8/8] fix: Don't override headers for CoreOS kernel They no longer exist Signed-off-by: RJ Sampson --- build_files/base/install-kernel.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/build_files/base/install-kernel.sh b/build_files/base/install-kernel.sh index 673308df12e..dc504d81a41 100644 --- a/build_files/base/install-kernel.sh +++ b/build_files/base/install-kernel.sh @@ -10,7 +10,6 @@ if [[ "${AKMODS_FLAVOR}" == "coreos" ]]; then rpm-ostree override replace --experimental \ "https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/x86_64/kernel-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ "https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/x86_64/kernel-core-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ - "https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/x86_64/kernel-headers-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ "https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/x86_64/kernel-modules-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ "https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/x86_64/kernel-modules-core-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm" \ "https://kojipkgs.fedoraproject.org//packages/kernel/$KERNEL_MAJOR_MINOR_PATCH/$KERNEL_RELEASE/x86_64/kernel-modules-extra-$KERNEL_MAJOR_MINOR_PATCH-$KERNEL_RELEASE.x86_64.rpm"