From 27e72cc13c156f2a7b837de896763688c8ebfffe Mon Sep 17 00:00:00 2001 From: Robert Sturla Date: Tue, 22 Oct 2024 22:31:47 +0100 Subject: [PATCH] chore: refactor package rename script to support all kernel versions (#259) Co-authored-by: Benjamin Sherman --- Containerfile.common | 10 +++++++--- Containerfile.extra | 11 +++++++---- Containerfile.nvidia | 10 +++++++--- Containerfile.nvidia-open | 10 +++++++--- Containerfile.zfs | 10 +++++++--- 5 files changed, 35 insertions(+), 16 deletions(-) diff --git a/Containerfile.common b/Containerfile.common index af22b5af..70c26a3c 100644 --- a/Containerfile.common +++ b/Containerfile.common @@ -62,14 +62,18 @@ RUN --mount=type=cache,dst=/var/cache/dnf \ find /var/cache/rpms # Remove kernel version from kmod package names -# FIXME: This will only work for 6.* kernels unfortunately # FIXME: The sed is a gross hack, maybe PR upstream? RUN set -e; \ sed -i -e 's/args = \["rpmbuild", "-bb"\]/args = \["rpmbuild", "-bb", "--buildroot", "#{build_path}\/BUILD"\]/g' /usr/local/share/gems/gems/fpm-*/lib/fpm/package/rpm.rb; \ + kernel_version=$(rpm -q --qf "%{VERSION}-%{RELEASE}.%{ARCH}\n" kernel-core | head -n 1); \ for rpm in $(find /var/cache/rpms/kmods -type f -name \*.rpm); do \ basename=$(basename ${rpm}); \ - name=${basename%%-6*}; \ - fpm --verbose -s rpm -t rpm -p ${rpm} -f --name ${name} ${rpm}; \ + name=${basename%%-${kernel_version}*}; \ + if [[ "$basename" == *"$kernel_version"* ]]; then \ + fpm --verbose -s rpm -t rpm -p ${rpm} -f --name ${name} ${rpm}; \ + else \ + echo "Skipping $basename rebuild as its name does not contain $kernel_version"; \ + fi; \ done FROM scratch diff --git a/Containerfile.extra b/Containerfile.extra index 5e3e0012..8a3b8edd 100644 --- a/Containerfile.extra +++ b/Containerfile.extra @@ -62,17 +62,20 @@ RUN --mount=type=cache,dst=/var/cache/dnf \ find /var/cache/rpms # Remove kernel version from kmod package names -# FIXME: This will only work for 6.* kernels unfortunately # FIXME: The sed is a gross hack, maybe PR upstream? RUN set -e; \ sed -i -e 's/args = \["rpmbuild", "-bb"\]/args = \["rpmbuild", "-bb", "--buildroot", "#{build_path}\/BUILD"\]/g' /usr/local/share/gems/gems/fpm-*/lib/fpm/package/rpm.rb; \ + kernel_version=$(rpm -q --qf "%{VERSION}-%{RELEASE}.%{ARCH}\n" kernel-core | head -n 1); \ for rpm in $(find /var/cache/rpms/kmods -type f -name \*.rpm); do \ basename=$(basename ${rpm}); \ - name=${basename%%-6*}; \ - fpm --verbose -s rpm -t rpm -p ${rpm} -f --name ${name} ${rpm}; \ + name=${basename%%-${kernel_version}*}; \ + if [[ "$basename" == *"$kernel_version"* ]]; then \ + fpm --verbose -s rpm -t rpm -p ${rpm} -f --name ${name} ${rpm}; \ + else \ + echo "Skipping $basename rebuild as its name does not contain $kernel_version"; \ + fi; \ done FROM scratch COPY --from=builder /var/cache/rpms /rpms - diff --git a/Containerfile.nvidia b/Containerfile.nvidia index be15ec0a..51d625ab 100644 --- a/Containerfile.nvidia +++ b/Containerfile.nvidia @@ -59,14 +59,18 @@ RUN --mount=type=cache,dst=/var/cache/dnf \ find /var/cache/rpms # Remove kernel version from kmod package names -# FIXME: This will only work for 6.* kernels unfortunately # FIXME: The sed is a gross hack, maybe PR upstream? RUN set -e; \ sed -i -e 's/args = \["rpmbuild", "-bb"\]/args = \["rpmbuild", "-bb", "--buildroot", "#{build_path}\/BUILD"\]/g' /usr/local/share/gems/gems/fpm-*/lib/fpm/package/rpm.rb; \ + kernel_version=$(rpm -q --qf "%{VERSION}-%{RELEASE}.%{ARCH}\n" kernel-core | head -n 1); \ for rpm in $(find /var/cache/rpms/kmods -type f -name \*.rpm); do \ basename=$(basename ${rpm}); \ - name=${basename%%-6*}; \ - fpm --verbose -s rpm -t rpm -p ${rpm} -f --name ${name} ${rpm}; \ + name=${basename%%-${kernel_version}*}; \ + if [[ "$basename" == *"$kernel_version"* ]]; then \ + fpm --verbose -s rpm -t rpm -p ${rpm} -f --name ${name} ${rpm}; \ + else \ + echo "Skipping $basename rebuild as its name does not contain $kernel_version"; \ + fi; \ done FROM scratch diff --git a/Containerfile.nvidia-open b/Containerfile.nvidia-open index bf6b7184..6670e78a 100644 --- a/Containerfile.nvidia-open +++ b/Containerfile.nvidia-open @@ -59,14 +59,18 @@ RUN --mount=type=cache,dst=/var/cache/dnf \ find /var/cache/rpms # Remove kernel version from kmod package names -# FIXME: This will only work for 6.* kernels unfortunately # FIXME: The sed is a gross hack, maybe PR upstream? RUN set -e; \ sed -i -e 's/args = \["rpmbuild", "-bb"\]/args = \["rpmbuild", "-bb", "--buildroot", "#{build_path}\/BUILD"\]/g' /usr/local/share/gems/gems/fpm-*/lib/fpm/package/rpm.rb; \ + kernel_version=$(rpm -q --qf "%{VERSION}-%{RELEASE}.%{ARCH}\n" kernel-core | head -n 1); \ for rpm in $(find /var/cache/rpms/kmods -type f -name \*.rpm); do \ basename=$(basename ${rpm}); \ - name=${basename%%-6*}; \ - fpm --verbose -s rpm -t rpm -p ${rpm} -f --name ${name} ${rpm}; \ + name=${basename%%-${kernel_version}*}; \ + if [[ "$basename" == *"$kernel_version"* ]]; then \ + fpm --verbose -s rpm -t rpm -p ${rpm} -f --name ${name} ${rpm}; \ + else \ + echo "Skipping $basename rebuild as its name does not contain $kernel_version"; \ + fi; \ done FROM scratch diff --git a/Containerfile.zfs b/Containerfile.zfs index 91b55ccb..5a581a38 100644 --- a/Containerfile.zfs +++ b/Containerfile.zfs @@ -36,14 +36,18 @@ RUN --mount=type=cache,dst=/var/cache/dnf \ /tmp/dual-sign-zfs.sh # Remove kernel version from kmod package names -# FIXME: This will only work for 6.* kernels unfortunately # FIXME: The sed is a gross hack, maybe PR upstream? RUN set -e; \ sed -i -e 's/args = \["rpmbuild", "-bb"\]/args = \["rpmbuild", "-bb", "--buildroot", "#{build_path}\/BUILD"\]/g' /usr/local/share/gems/gems/fpm-*/lib/fpm/package/rpm.rb; \ + kernel_version=$(rpm -q --qf "%{VERSION}-%{RELEASE}.%{ARCH}\n" kernel-core | head -n 1); \ for rpm in $(find /var/cache/rpms/kmods -type f -name \*.rpm); do \ basename=$(basename ${rpm}); \ - name=${basename%%-6*}; \ - fpm --verbose -s rpm -t rpm -p ${rpm} -f --name ${name} ${rpm}; \ + name=${basename%%-${kernel_version}*}; \ + if [[ "$basename" == *"$kernel_version"* ]]; then \ + fpm --verbose -s rpm -t rpm -p ${rpm} -f --name ${name} ${rpm}; \ + else \ + echo "Skipping $basename rebuild as its name does not contain $kernel_version"; \ + fi; \ done FROM scratch