diff --git a/anda/system/nvidia/dkms-nvidia/anda.hcl b/anda/system/nvidia/dkms-nvidia/anda.hcl new file mode 100644 index 0000000000..1fc99a9f40 --- /dev/null +++ b/anda/system/nvidia/dkms-nvidia/anda.hcl @@ -0,0 +1,8 @@ +project pkg { + rpm { + spec = "dkms-nvidia.spec" + } + labels { + subrepo = "nvidia" + } +} diff --git a/anda/system/nvidia/dkms-nvidia/dkms-nvidia.conf b/anda/system/nvidia/dkms-nvidia/dkms-nvidia.conf new file mode 100644 index 0000000000..bd53ff3ab3 --- /dev/null +++ b/anda/system/nvidia/dkms-nvidia/dkms-nvidia.conf @@ -0,0 +1,29 @@ +PACKAGE_NAME="nvidia" +PACKAGE_VERSION="__VERSION_STRING" +AUTOINSTALL="yes" + +. /etc/nvidia/kernel.conf + +# Quote make to avoid DKMS replacing it with "make -j$parallel_jobs KERNELRELEASE=$kernelver" +CLEAN="'make' -j$(nproc) -C ${MODULE_VARIANT} clean" +MAKE[0]="'make' -j$(nproc) -C ${MODULE_VARIANT} KERNEL_UNAME=${kernelver} modules" + +BUILT_MODULE_NAME[0]="nvidia" +BUILT_MODULE_LOCATION[0]="${MODULE_VARIANT}" +DEST_MODULE_LOCATION[0]="/extra" + +BUILT_MODULE_NAME[1]="nvidia-modeset" +BUILT_MODULE_LOCATION[1]="${MODULE_VARIANT}" +DEST_MODULE_LOCATION[1]="/extra" + +BUILT_MODULE_NAME[2]="nvidia-drm" +BUILT_MODULE_LOCATION[2]="${MODULE_VARIANT}" +DEST_MODULE_LOCATION[2]="/extra" + +BUILT_MODULE_NAME[3]="nvidia-uvm" +BUILT_MODULE_LOCATION[3]="${MODULE_VARIANT}" +DEST_MODULE_LOCATION[3]="/extra" + +BUILT_MODULE_NAME[4]="nvidia-peermem" +BUILT_MODULE_LOCATION[4]="${MODULE_VARIANT}" +DEST_MODULE_LOCATION[4]="/extra" diff --git a/anda/system/nvidia/dkms-nvidia/dkms-nvidia.spec b/anda/system/nvidia/dkms-nvidia/dkms-nvidia.spec new file mode 100644 index 0000000000..6cfde5b983 --- /dev/null +++ b/anda/system/nvidia/dkms-nvidia/dkms-nvidia.spec @@ -0,0 +1,55 @@ +## NVIDIA DKMS package, based on the work of Negativo17 with tweaks for Terra. + +%global debug_package %{nil} +%global modulename nvidia + +Name: dkms-%{modulename} +Version: 570.133.07 +Release: 1%{?dist} +Summary: NVIDIA display driver kernel module +Epoch: 3 +License: NVIDIA License +URL: http://www.nvidia.com/object/unix.html +Source0: http://download.nvidia.com/XFree86/Linux-%{_arch}/%{version}/NVIDIA-Linux-%{_arch}-%{version}.run +Source1: %{name}.conf +BuildRequires: sed +Provides: %{modulename}-kmod = %{?epoch:%{epoch}:}%{version} +Requires: %{modulename}-kmod-common = %{?epoch:%{epoch}:}%{version} +Requires: dkms +Conflicts: akmod-nvidia +# Unlike most DKMS packages, this package is NOT noarch! +ExclusiveArch: x86_64 aarch64 + +%description +This package provides the proprietary NVIDIA kernel driver modules. + +%prep +sh %{SOURCE0} -x --target dkms-nvidia-%{version}-%{_arch} +%setup -T -D -n dkms-nvidia-%{version}-%{_arch} + +cp -f %{SOURCE1} dkms.conf + +sed -i -e 's/__VERSION_STRING/%{version}/g' dkms.conf + +%build + +%install +mkdir -p %{buildroot}%{_usrsrc}/%{modulename}-%{version}/ +cp -fr * %{buildroot}%{_usrsrc}/%{modulename}-%{version}/ +rm -f %{buildroot}%{_usrsrc}/%{modulename}-%{version}/*/dkms.conf + +%post +dkms add -m %{modulename} -v %{version} -q --rpm_safe_upgrade || : +# Rebuild and make available for the currently running kernel: +dkms build -m %{modulename} -v %{version} -q || : +dkms install -m %{modulename} -v %{version} -q --force || : + +%preun +# Remove all versions from DKMS registry: +dkms remove -m %{modulename} -v %{version} -q --all --rpm_safe_upgrade || : + +%files +%{_usrsrc}/%{modulename}-%{version} + +%changelog +%autochangelog diff --git a/anda/system/nvidia/dkms-nvidia/update.rhai b/anda/system/nvidia/dkms-nvidia/update.rhai new file mode 100644 index 0000000000..e5eff132c0 --- /dev/null +++ b/anda/system/nvidia/dkms-nvidia/update.rhai @@ -0,0 +1,3 @@ +import "andax/nvidia.rhai" as nvidia; + +rpm.version(nvidia::nvidia_driver_version()); diff --git a/anda/system/nvidia/nvidia-kmod-common/nvidia-kmod-common.spec b/anda/system/nvidia/nvidia-kmod-common/nvidia-kmod-common.spec index 481f74c369..6548750cc2 100644 --- a/anda/system/nvidia/nvidia-kmod-common/nvidia-kmod-common.spec +++ b/anda/system/nvidia/nvidia-kmod-common/nvidia-kmod-common.spec @@ -23,6 +23,7 @@ Source19: nvidia-modeset.conf Source20: nvidia.conf Source21: 60-nvidia.rules Source24: 99-nvidia.conf +Source25: akmod-modules.conf # UDev rule location (_udevrulesdir) and systemd macros: BuildRequires: systemd-rpm-macros @@ -37,11 +38,19 @@ Obsoletes: cuda-nvidia-kmod-common < %{?epoch:%{epoch}:}%{version} %description This package provides the common files required by all NVIDIA kernel module package variants. + +%package -n nvidia-akmod-modules +Summary: Modules for the NVIDIA Akmods package +BuildArch: noarch + +%description -n nvidia-akmod-modules +Modules needed for the akmod-nvidia package. %prep sh %{SOURCE0} -x --target nvidia-kmod-%{version}-x86_64 %setup -T -D -n nvidia-kmod-%{version}-x86_64 + %install # Script for post/preun tasks install -p -m 0755 -D %{SOURCE17} %{buildroot}%{_sbindir}/nvidia-boot-update