# Macros for nvidia modules # e - kernel %%{EVRD} # m - nvidia majors (390,470,510) # p - full kernel version (uname -r, 5.10.71-generic-1rosa2021.1-x86_64) # v - nvidia major %nvidia_module(e:m:p:v:) \ # kernel version \ %define kver %(echo %{-p*} |cut -d- -f1) \ # kernel major version \ %define kmver %(echo %{kver} |cut -d. -f-2) \ # kernel release \ %define krel %(echo %{-p*} |cut -d- -f3 |sed "s/rosa.*//") \ # kernel flavour \ %define kfla %(echo %{-p*} |cut -d- -f2) \ # kernel name \ %define kname kernel-%{kmver}-%{kfla} \ # pkg name \ %define nname kernel-modules-nvidia%{-v*}-%{kver}-%{krel}-%{kfla} \ \ %{expand: \ %package -n %{nname} \ Summary: Binary modules of Nvidia%{-v*} for kernel %{kver}-%{krel} \ Group: System/Kernel and hardware \ Supplements: ((%{kname} = %{-e*}) and nvidia%{-v*}-core) \ Requires: %{kname} = %{-e*} \ Requires: nvidia%{-v*}-core \ Provides: installonlypkg(kernel) = %{kver}.module \ %(for c in %(echo %{-m*} |tr , " "); do echo %{nname} |sed "s/\\(.*nvidia\\)\\(.*\\)/Conflicts:\\t\\1$c\\2 = %{-e*}/"; done) \ \ %description -n %{nname} \ Binary modules of Nvidia%{-v*} for kernel %{kver}-%{krel} \ \ %files -n %{nname} \ %dir /lib/modules/%{-p*}/kernel/drivers/video/nvidia%{-v*} \ /lib/modules/%{-p*}/kernel/drivers/video/nvidia%{-v*}/*.ko* \ %{nil} \ } # TODO drop autoconflicts %nvidia_modules_pkg(e:m:p:) \ %(for i in %(echo %{-m*} |tr , " "); do echo "%nvidia_module -e %{-e*} -m %{-m*} -p %{-p*} -v $i \ "; done)