From 22bd1d2435df28d60ceac6ba0bdb71109668ae77 Mon Sep 17 00:00:00 2001 From: Gilver Date: Thu, 18 Dec 2025 14:49:33 -0600 Subject: [PATCH] feat(kmod-nvidia): Update for 590 (#8461) * feat(kmod-nvidia): Update for 590 * cleanup: Formatting * chore: Manual bump (cherry picked from commit dc0a45cf68c6f31594dc9cff4fe95c0a1845c215) --- .../nvidia/kmod-nvidia/RELEASE_kernel.txt | 1 + .../nvidia/kmod-nvidia/VERSION_kernel.txt | 1 + anda/system/nvidia/kmod-nvidia/anda.hcl | 10 ++ .../kmod-nvidia/kmod-nvidia-ldflags.patch | 36 +++++++ .../kmod-nvidia-no-hostname-whoami.patch | 12 +++ .../nvidia/kmod-nvidia/kmod-nvidia.spec | 100 ++++++++++++++++++ anda/system/nvidia/kmod-nvidia/update.rhai | 20 ++++ 7 files changed, 180 insertions(+) create mode 100644 anda/system/nvidia/kmod-nvidia/RELEASE_kernel.txt create mode 100644 anda/system/nvidia/kmod-nvidia/VERSION_kernel.txt create mode 100644 anda/system/nvidia/kmod-nvidia/anda.hcl create mode 100644 anda/system/nvidia/kmod-nvidia/kmod-nvidia-ldflags.patch create mode 100644 anda/system/nvidia/kmod-nvidia/kmod-nvidia-no-hostname-whoami.patch create mode 100644 anda/system/nvidia/kmod-nvidia/kmod-nvidia.spec create mode 100644 anda/system/nvidia/kmod-nvidia/update.rhai diff --git a/anda/system/nvidia/kmod-nvidia/RELEASE_kernel.txt b/anda/system/nvidia/kmod-nvidia/RELEASE_kernel.txt new file mode 100644 index 0000000000..d69e1e9e5d --- /dev/null +++ b/anda/system/nvidia/kmod-nvidia/RELEASE_kernel.txt @@ -0,0 +1 @@ +124.13.1 diff --git a/anda/system/nvidia/kmod-nvidia/VERSION_kernel.txt b/anda/system/nvidia/kmod-nvidia/VERSION_kernel.txt new file mode 100644 index 0000000000..d4e6cb4293 --- /dev/null +++ b/anda/system/nvidia/kmod-nvidia/VERSION_kernel.txt @@ -0,0 +1 @@ +6.12.0 diff --git a/anda/system/nvidia/kmod-nvidia/anda.hcl b/anda/system/nvidia/kmod-nvidia/anda.hcl new file mode 100644 index 0000000000..8421909bfc --- /dev/null +++ b/anda/system/nvidia/kmod-nvidia/anda.hcl @@ -0,0 +1,10 @@ +project pkg { + rpm { + spec = "kmod-nvidia.spec" + } + labels { + subrepo = "nvidia" + mock = 1 + updbranch = 1 + } +} diff --git a/anda/system/nvidia/kmod-nvidia/kmod-nvidia-ldflags.patch b/anda/system/nvidia/kmod-nvidia/kmod-nvidia-ldflags.patch new file mode 100644 index 0000000000..4b3bd00d94 --- /dev/null +++ b/anda/system/nvidia/kmod-nvidia/kmod-nvidia-ldflags.patch @@ -0,0 +1,36 @@ +From 38b7e1478b58b983724ec817562301edd5c244a2 Mon Sep 17 00:00:00 2001 +From: Neal Gompa +Date: Mon, 7 Apr 2025 19:34:49 -0400 +Subject: [PATCH] src/nvidia/Makefile: Drop broken addition of userspace linker + flags + +The Makefile currently causes the package build of the kernel modules +to fail with the following error: + +ld: unrecognized option '-Wl,-z,relro' +ld: use the --help option for usage information +make[1]: *** [Makefile:214: _out/Linux_x86_64/nv-kernel.o] Error 1 +make: *** [Makefile:34: src/nvidia/_out/Linux_x86_64/nv-kernel.o] Error 2 + +Dropping this line fixes this issue. + +Signed-off-by: Neal Gompa +--- + src/nvidia/Makefile | 2 -- + 1 file changed, 2 deletions(-) + +diff --git a/src/nvidia/Makefile b/src/nvidia/Makefile +index 931a74c0..423414af 100644 +--- a/src/nvidia/Makefile ++++ b/src/nvidia/Makefile +@@ -208,8 +208,6 @@ all: $(NV_KERNEL_O) + + LINKER_SCRIPT = nv-kernel.ld + +-NV_KERNEL_O_LDFLAGS += $(LDFLAGS) +- + $(NV_KERNEL_O): $(OBJS) $(EXPORTS_LINK_COMMAND) $(LINKER_SCRIPT) + $(call quiet_cmd,LD) \ + $(NV_KERNEL_O_LDFLAGS) \ +-- +2.48.1 diff --git a/anda/system/nvidia/kmod-nvidia/kmod-nvidia-no-hostname-whoami.patch b/anda/system/nvidia/kmod-nvidia/kmod-nvidia-no-hostname-whoami.patch new file mode 100644 index 0000000000..e16336f827 --- /dev/null +++ b/anda/system/nvidia/kmod-nvidia/kmod-nvidia-no-hostname-whoami.patch @@ -0,0 +1,12 @@ +--- a/utils.mk 2025-05-29 12:58:21.000000000 -0500 ++++ b/utils.mk 2025-06-01 18:17:28.229885115 -0500 +@@ -116,9 +116,6 @@ + XZ ?= xz + PKG_CONFIG ?= pkg-config + +-NV_BUILD_USER ?= $(shell whoami) +-NV_BUILD_HOST ?= $(shell hostname) +- + NV_AUTO_DEPEND ?= 1 + NV_VERBOSE ?= 0 + diff --git a/anda/system/nvidia/kmod-nvidia/kmod-nvidia.spec b/anda/system/nvidia/kmod-nvidia/kmod-nvidia.spec new file mode 100644 index 0000000000..02b5e13380 --- /dev/null +++ b/anda/system/nvidia/kmod-nvidia/kmod-nvidia.spec @@ -0,0 +1,100 @@ +%global kmod_name nvidia + +%global debug_package %{nil} + +# Generate kernel symbols requirements: +%global _use_internal_dependency_generator 0 + +# uname -r does not work in GitHub runners +%{!?kversion: %global kversion %(rpm -q kernel-devel | sed 's/kernel-devel-//g')} + +Name: kmod-%{kmod_name} +Version: 590.48.01 +Release: 1%?dist +Summary: NVIDIA display driver kernel module +Epoch: 3 +License: NVIDIA License +URL: http://www.nvidia.com/ +ExclusiveArch: x86_64 aarch64 + +Source0: https://github.com/NVIDIA/open-gpu-kernel-modules/archive/refs/tags/%{version}.tar.gz +# https://git.almalinux.org/ngompa/nvidia-kmod-el-rpm/ +Patch0: %{name}-ldflags.patch +Patch1: %{name}-no-hostname-whoami.patch +# This is needed for the Makefile for the beta drivers, added just in case it's needed in the future +%dnl Patch3: fix-build-in-actions.patch + +BuildRequires: elfutils-libelf-devel +BuildRequires: gcc +BuildRequires: gcc-c++ +BuildRequires: kernel-abi-stablelists +BuildRequires: kernel-devel +BuildRequires: kernel-rpm-macros +BuildRequires: kmod +BuildRequires: redhat-rpm-config + +Provides: kabi-modules = %{kversion} +Provides: %{kmod_name}-kmod = %{?epoch:%{epoch}:}%{version}-%{release} +Requires: module-init-tools + +%description +This package provides the proprietary NVIDIA kernel modules. It is built to +depend upon the specific ABI provided by a range of releases of the same variant +of the Linux kernel and not on any one specific build. + +%prep +%autosetup -p1 -n open-gpu-kernel-modules-%{version} + +echo "override %{kmod_name} * weak-updates/%{kmod_name}" > kmod-%{kmod_name}.conf + +%build +export SYSSRC=%{_usrsrc}/kernels/%{kversion} +export IGNORE_XEN_PRESENCE=1 +export IGNORE_PREEMPT_RT_PRESENCE=1 +export IGNORE_CC_MISMATCH=1 +export EXTRA_CFLAGS+=" -Wno-incompatible-pointer-types" + +%make_build modules + +%install +export INSTALL_MOD_PATH=%{buildroot}%{_prefix} +export INSTALL_MOD_DIR=extra/%{kmod_name} + +make -C %{_usrsrc}/kernels/%{kversion} -j$(nproc) modules_install M=$PWD/kernel-open + +install -d %{buildroot}%{_sysconfdir}/depmod.d/ +install kmod-%{kmod_name}.conf %{buildroot}%{_sysconfdir}/depmod.d/ +# Remove the unrequired files. +rm -f %{buildroot}%{_prefix}/lib/modules/%{kversion}/modules.* + +find %{buildroot} -type f -name '*.ko' | xargs %{__strip} --strip-debug +find %{buildroot} -type f -name '*.ko' | xargs xz + +%post +if [ -e "/boot/System.map-%{kversion}" ]; then + %{_sbindir}/depmod -aeF "/boot/System.map-%{kversion}" "%{kversion}" > /dev/null || : +fi +modules=( $(find %{_prefix}/lib/modules/%{kversion}/extra/%{kmod_name} | grep '\.ko.xz$') ) +if [ -x "%{_sbindir}/weak-modules" ]; then + printf '%s\n' "${modules[@]}" | %{_sbindir}/weak-modules --add-modules +fi + +%preun +rpm -ql kmod-%{kmod_name}-%{version}-%{release}.%{_target_cpu} | grep '\.ko.xz$' > %{_var}/run/rpm-kmod-%{kmod_name}-modules + +%postun +if [ -e "/boot/System.map-%{kversion}" ]; then + %{_sbindir}/depmod -aeF "/boot/System.map-%{kversion}" "%{kversion}" > /dev/null || : +fi +modules=( $(cat /var/run/rpm-kmod-%{kmod_name}-modules) ) +rm %{_var}/run/rpm-kmod-%{kmod_name}-modules +if [ -x "%{_sbindir}/weak-modules" ]; then + printf '%s\n' "${modules[@]}" | %{_sbindir}/weak-modules --remove-modules +fi + +%files +%{_prefix}/lib/modules/%{kversion}/extra/* +%config %{_sysconfdir}/depmod.d/kmod-%{kmod_name}.conf + +%changelog +%autochangelog diff --git a/anda/system/nvidia/kmod-nvidia/update.rhai b/anda/system/nvidia/kmod-nvidia/update.rhai new file mode 100644 index 0000000000..1a96a612e6 --- /dev/null +++ b/anda/system/nvidia/kmod-nvidia/update.rhai @@ -0,0 +1,20 @@ +import "andax/bump_extras.rhai" as bump; +import "andax/spec.rhai" as spec; + +let v = bump::madoguchi("nvidia-kmod-common", labels.branch); +let m = gh("NVIDIA/open-gpu-kernel-modules"); +if m == v { + rpm.version(v); +} + +// Rebuild the package whenever the Alma kernel updates +let kver = bump::alma_vr("kernel", "BaseOS", labels.branch)[1]; +let krel = bump::alma_vr("kernel", "BaseOS", labels.branch)[2]; +open_file("anda/system/nvidia/kmod-nvidia/VERSION_kernel.txt", "w").write(kver); +open_file("anda/system/nvidia/kmod-nvidia/RELEASE_kernel.txt", "w").write(krel); + +let dir = sub(`/[^/]+$`, "", __script_path); +if sh("[[ `git status " + dir + " --porcelain` ]] && exit 1 || exit 0", #{}).ctx.rc == 1 { + let rel = spec::get_release(rpm).parse_int(); + rpm.release(rel + 1); +}