From 69c139b49b70a2b52caaa8fef4591a12c764b919 Mon Sep 17 00:00:00 2001 From: inffy <10782843+inffy@users.noreply.github.com> Date: Thu, 17 Sep 2026 20:09:56 +0300 Subject: [PATCH] feat: fedora 45 bringup (#594) * bringup f45 * update the workflow * do-not-test * use dnf repo commands instead of sed * gate openrazer on f45 * add notice for temp workaround for openrazer --- .github/workflows/build-akmods-main.yml | 78 ++++++++++++++++++++++ build_files/common/build-kmod-openrazer.sh | 32 ++++++--- build_files/post/dual-sign.sh | 2 +- build_files/prep/build-prep.sh | 4 +- build_files/test/test-prep.sh | 4 +- build_files/zfs/dual-sign-zfs.sh | 2 +- fetch-kernel.sh | 2 +- images.yaml | 4 ++ 8 files changed, 110 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build-akmods-main.yml b/.github/workflows/build-akmods-main.yml index eb775b4..8102276 100644 --- a/.github/workflows/build-akmods-main.yml +++ b/.github/workflows/build-akmods-main.yml @@ -16,6 +16,84 @@ on: - cron: '01 0 * * *' # staggered minute past 00:00 UTC, see Justfile generate-workflows workflow_dispatch: jobs: + cache_kernel_main_45: + name: Cache main (45) + uses: ./.github/workflows/reusable-cache-kernel.yml + secrets: inherit + permissions: + actions: read + contents: read + packages: write + with: + architecture: '["x86_64"]' + kernel_flavor: main + version: 45 + build-main_45_common: + name: Build common main (45) + uses: ./.github/workflows/reusable-build.yml + secrets: inherit + permissions: + actions: read + attestations: write + contents: read + id-token: write + packages: write + needs: cache_kernel_main_45 + with: + akmods_target: common + architecture: '["x86_64"]' + kernel_cache_key: ${{ needs.cache_kernel_main_45.outputs.KCKEY }} + kernel_flavor: main + version: 45 + build-main_45_nvidia-lts: + name: Build nvidia-lts main (45) + uses: ./.github/workflows/reusable-build.yml + secrets: inherit + permissions: + actions: read + attestations: write + contents: read + id-token: write + packages: write + needs: cache_kernel_main_45 + with: + akmods_target: nvidia-lts + architecture: '["x86_64"]' + kernel_cache_key: ${{ needs.cache_kernel_main_45.outputs.KCKEY }} + kernel_flavor: main + version: 45 + build-main_45_nvidia-open: + name: Build nvidia-open main (45) + uses: ./.github/workflows/reusable-build.yml + secrets: inherit + permissions: + actions: read + attestations: write + contents: read + id-token: write + packages: write + needs: cache_kernel_main_45 + with: + akmods_target: nvidia-open + architecture: '["x86_64"]' + kernel_cache_key: ${{ needs.cache_kernel_main_45.outputs.KCKEY }} + kernel_flavor: main + version: 45 + check-main_45: + name: Check main (45) + permissions: + actions: read + contents: read + needs: [build-main_45_common,build-main_45_nvidia-lts,build-main_45_nvidia-open] + runs-on: ubuntu-24.04 + if: always() + steps: + - name: Check for Build Failures + if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'skipped') + run: exit 1 + + - name: Exit if Success + run: exit 0 cache_kernel_main_44: name: Cache main (44) uses: ./.github/workflows/reusable-cache-kernel.yml diff --git a/build_files/common/build-kmod-openrazer.sh b/build_files/common/build-kmod-openrazer.sh index 31f8247..e6eb87b 100755 --- a/build_files/common/build-kmod-openrazer.sh +++ b/build_files/common/build-kmod-openrazer.sh @@ -17,17 +17,27 @@ curl -LsSf -o /etc/pki/rpm-gpg/RPM-GPG-KEY-terra"${RELEASE}" \ rpmkeys --import /etc/pki/rpm-gpg/RPM-GPG-KEY-terra"${RELEASE}" ### BUILD openrazer (succeed or fail-fast with debug output) -dnf install -y \ - akmod-openrazer-*.fc"${RELEASE}"."${ARCH}" -akmods --force --kernels "${KERNEL}" --kmod openrazer -modinfo /usr/lib/modules/"${KERNEL}"/extra/openrazer/razerkbd.ko.xz >/dev/null || - (find /var/cache/akmods/openrazer/ -name \*.log -print -exec cat {} \; && exit 1) -modinfo /usr/lib/modules/"${KERNEL}"/extra/openrazer/razermouse.ko.xz >/dev/null || - (find /var/cache/akmods/openrazer/ -name \*.log -print -exec cat {} \; && exit 1) -modinfo /usr/lib/modules/"${KERNEL}"/extra/openrazer/razerkraken.ko.xz >/dev/null || - (find /var/cache/akmods/openrazer/ -name \*.log -print -exec cat {} \; && exit 1) -modinfo /usr/lib/modules/"${KERNEL}"/extra/openrazer/razeraccessory.ko.xz >/dev/null || - (find /var/cache/akmods/openrazer/ -name \*.log -print -exec cat {} \; && exit 1) +# REVERTME: Once terra has openrazer packages for F45 +if [[ "${RELEASE}" -ge 45 ]]; then + dnf install -y akmod-openrazer-*.fc"${RELEASE}"."${ARCH}" || { + echo "SKIPPED: Openrazer gets skipped if Terra doesn't have package for F45." + rm -f /etc/yum.repos.d/terra.repo + exit 0 + } + akmods --force --kernels "${KERNEL}" --kmod openrazer || { rm -f /etc/yum.repos.d/terra.repo; exit 0; } +else + dnf install -y \ + akmod-openrazer-*.fc"${RELEASE}"."${ARCH}" + akmods --force --kernels "${KERNEL}" --kmod openrazer + modinfo /usr/lib/modules/"${KERNEL}"/extra/openrazer/razerkbd.ko.xz >/dev/null || + (find /var/cache/akmods/openrazer/ -name \*.log -print -exec cat {} \; && exit 1) + modinfo /usr/lib/modules/"${KERNEL}"/extra/openrazer/razermouse.ko.xz >/dev/null || + (find /var/cache/akmods/openrazer/ -name \*.log -print -exec cat {} \; && exit 1) + modinfo /usr/lib/modules/"${KERNEL}"/extra/openrazer/razerkraken.ko.xz >/dev/null || + (find /var/cache/akmods/openrazer/ -name \*.log -print -exec cat {} \; && exit 1) + modinfo /usr/lib/modules/"${KERNEL}"/extra/openrazer/razeraccessory.ko.xz >/dev/null || + (find /var/cache/akmods/openrazer/ -name \*.log -print -exec cat {} \; && exit 1) +fi mkdir -p /var/cache/rpms/common dnf download --destdir /var/cache/rpms/common \ diff --git a/build_files/post/dual-sign.sh b/build_files/post/dual-sign.sh index 7e05919..d3b8664 100755 --- a/build_files/post/dual-sign.sh +++ b/build_files/post/dual-sign.sh @@ -40,7 +40,7 @@ for RPMPATH in "${RPMPATHS[@]}"; do RPM=$(basename "${RPMPATH/\.rpm/}") mkdir -p /tmp/buildroot cp -r /{usr,lib} /tmp/buildroot - rpmrebuild --additional=--buildroot=/tmp/buildroot --batch "$RPM" + rpmrebuild --notest-install --additional=--buildroot=/tmp/buildroot --batch "$RPM" rm -rf /tmp/buildroot done popd diff --git a/build_files/prep/build-prep.sh b/build_files/prep/build-prep.sh index 2be85de..394cd67 100755 --- a/build_files/prep/build-prep.sh +++ b/build_files/prep/build-prep.sh @@ -21,7 +21,7 @@ else echo "Building for Fedora" RELEASE="$(rpm -E '%fedora')" - sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/fedora-cisco-openh264.repo + dnf config-manager setopt fedora-cisco-openh264.enabled=0 RPMFUSION_MIRROR_RPMS="https://mirrors.rpmfusion.org" if [ -n "${RPMFUSION_MIRROR}" ]; then @@ -47,7 +47,7 @@ if [[ "${VERSION}" -ge 45 && -f /etc/fedora-release ]]; then # pre-release rpmfusion is in a different location sed -i "s%free/fedora/releases%free/fedora/development%" /etc/yum.repos.d/rpmfusion-*.repo # pre-release rpmfusion needs to enable testing - sed -i '0,/enabled=0/{s/enabled=0/enabled=1/}' /etc/yum.repos.d/rpmfusion-*-updates-testing.repo + dnf config-manager enable rpmfusion-free-updates-testing rpmfusion-nonfree-updates-testing fi if [[ -n "${RPMFUSION_MIRROR}" && -f /etc/fedora-release ]]; then diff --git a/build_files/test/test-prep.sh b/build_files/test/test-prep.sh index 2156b3e..a4ca2be 100755 --- a/build_files/test/test-prep.sh +++ b/build_files/test/test-prep.sh @@ -16,7 +16,7 @@ if [[ "${KERNEL_FLAVOR}" =~ "centos" ]]; then else echo "Building for Fedora" RELEASE="$(rpm -E '%fedora')" - sed -i 's@enabled=1@enabled=0@g' /etc/yum.repos.d/fedora-cisco-openh264.repo + dnf config-manager setopt fedora-cisco-openh264.enabled=0 dnf config-manager addrepo --from-repofile=https://negativo17.org/repos/fedora-multimedia.repo fi @@ -38,7 +38,7 @@ if [[ "${RELEASE}" -ge 45 && -f /etc/fedora-release ]]; then # pre-release rpmfusion is in a different location sed -i "s%free/fedora/releases%free/fedora/development%" /etc/yum.repos.d/rpmfusion-*.repo # pre-release rpmfusion needs to enable testing - sed -i '0,/enabled=0/{s/enabled=0/enabled=1/}' /etc/yum.repos.d/rpmfusion-*-updates-testing.repo + dnf config-manager enable rpmfusion-free-updates-testing rpmfusion-nonfree-updates-testing fi if [[ -f $(find /tmp/akmods-rpms/kmods/kmod-nvidia-*.rpm) ]]; then diff --git a/build_files/zfs/dual-sign-zfs.sh b/build_files/zfs/dual-sign-zfs.sh index 18f0c33..6e3c1fd 100755 --- a/build_files/zfs/dual-sign-zfs.sh +++ b/build_files/zfs/dual-sign-zfs.sh @@ -39,7 +39,7 @@ done find /var/cache/rpms/kmods/zfs -type f -name "\kmod-*.rpm" | grep -v debug | grep -v devel RPMPATH=$(find /var/cache/rpms/kmods/zfs -type f -name "\kmod-*.rpm" | grep -v debug | grep -v devel) RPM=$(basename "${RPMPATH/\.rpm/}") -rpmrebuild --additional=--buildroot=/tmp/buildroot --batch "${RPM}" +rpmrebuild --notest-install --additional=--buildroot=/tmp/buildroot --batch "${RPM}" rm -rf /usr/lib/modules/"${KERNEL}"/extra pushd /root/rpmbuild/RPMS/"$(uname -m)"/ mapfile -t RPMPATHS < <(find . -type f -name "\kmod-*.rpm") diff --git a/fetch-kernel.sh b/fetch-kernel.sh index d393653..cd0d110 100755 --- a/fetch-kernel.sh +++ b/fetch-kernel.sh @@ -196,7 +196,7 @@ fi ln -s / /tmp/buildroot # Rebuild RPMs and Verify -rpmrebuild --additional=--buildroot=/tmp/buildroot --batch "${kernel_name}-core-${kernel_version}" +rpmrebuild --notest-install --additional=--buildroot=/tmp/buildroot --batch "${kernel_name}-core-${kernel_version}" rm -f /usr/lib/modules/"${kernel_version}"/vmlinuz find /tmp find /root diff --git a/images.yaml b/images.yaml index d34d407..d389897 100644 --- a/images.yaml +++ b/images.yaml @@ -190,3 +190,7 @@ images: "longterm-6.18": !!merge <<: - *server-build-group + 45: + main: + !!merge <<: + - *desktop-build-group-only-x86