From 4ed26971febfc6a93fb346174b38009449500b5d Mon Sep 17 00:00:00 2001 From: Mikhail Novosyolov Date: Sun, 10 Oct 2021 16:12:22 +0300 Subject: [PATCH] Build binary nvidia390 kernel modules --- kernel.spec | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/kernel.spec b/kernel.spec index 2429758..8354061 100644 --- a/kernel.spec +++ b/kernel.spec @@ -122,6 +122,7 @@ # The full kernel version %define kver_full %{kversion}-%{flavour}-%{buildrpmrel} + ############################################################################ %define top_dir_name kernel-%{_arch} @@ -165,6 +166,17 @@ cat %{_builddir}/debugfiles.list >> %{debuginfo_files} ############################################################################ +%if %{with binary_extra_modules} +# https://github.com/rpm-software-management/rpm/pull/1794 +%define nvidia_390_j %(if rpm -q kernel-source-nvidia390 >/dev/null 2>&1; then rpm -q --qf '%%{version}' kernel-source-nvidia390 | awk -F '.' '{print $1}'; else echo 0; fi) +%define nvidia_390_n %(if rpm -q kernel-source-nvidia390 >/dev/null 2>&1; then rpm -q --qf '%%{version}' kernel-source-nvidia390 | awk -F '.' '{print $2}'; else echo 0; fi) + +# For SRPM stage when auto-krokodil-rpm-macros is not installed +%{?!kroko_req_modules_in_kernel:%define kroko_req_modules_in_kernel(j:n:p:) %{nil}} +%endif + +############################################################################ + # Build defines %define build_doc 0 %define build_devel 1 @@ -437,11 +449,13 @@ BuildRequires: libressl libressl-devel BuildRequires: findutils util-linux %if %{with binary_extra_modules} +BuildRequires: auto-krokodil-rpm-macros BuildRequires: kernel-source-rtl8821ce BuildRequires: kernel-source-rtl8821cu -# broadcom-wl contains a proprietary blob which is only for x86 +# broadcom-wl and nvidia390 contain a proprietary blob which is only for x86 %ifarch %{ix86} %{x86_64} BuildRequires: kernel-source-broadcom-wl +BuildRequires: kernel-source-nvidia390 %endif BuildRequires: kernel-source-tripso BuildRequires: kernel-source-ipt-so @@ -468,6 +482,7 @@ BuildRequires: zstd Provides: kernel = %{EVRD} Provides: kernel-%{flavour} = %{EVRD} +Provides: kernel-abi(%{kver_full}) = %{EVRD} # dnf config-manager --dump | grep installonly Provides: installonlypkg(kernel) = %{EVRD}.image Provides: installonlypkg(kernel) = %{EVRD}.modules @@ -498,6 +513,12 @@ Conflicts: arch(x86_64) Recommends: kernel-headers = %{EVRD} %endif +%if %{with binary_extra_modules} +%ifarch %{ix86} %{x86_64} +%kroko_req_modules_in_kernel -j %{nvidia_390_j} -n %{nvidia_390_n} -p %{kver_full} +%endif +%endif + Obsoletes: kernel-%{flavour}-%{kernelversion}.%{patchlevel}-latest < 5.10.34-2 %description @@ -544,6 +565,7 @@ input and output, etc. This is a general-purpose kernel. %exclude %{_modulesdir}/%{kver_full}/kernel/net/wireless/8821cu.ko%{kmod_suffix} %ifarch %{ix86} %{x86_64} %exclude %{_modulesdir}/%{kver_full}/kernel/net/wireless/wl.ko%{kmod_suffix} +%exclude %{_modulesdir}/%{kver_full}/kernel/drivers/video/nvidia390 %endif %if %{with binary_shredder} %exclude %{_modulesdir}/%{kver_full}/kernel/extra/shredder-kernel.ko%{kmod_suffix} @@ -882,6 +904,7 @@ User Mode Linux (UML) kernel modules %ksob_mk_module_pkg -n 8821cu -s net/wireless %ifarch %{ix86} %{x86_64} %ksob_mk_module_pkg -n wl -s net/wireless -r broadcom-wl-aliases +%kroko_kmod_pkg -j %{nvidia_390_j} -n %{nvidia_390_n} -f %{flavour} -k %{kernelversion}.%{patchlevel} -m %{sublevel} -p %{kver_full} -s %{NAME} -r %{kroko_mk_release} %endif %ksob_mk_module_pkg -n xt_TRIPSO -s net -r tripso %ksob_mk_module_pkg -n xt_so -s net -r ipt-so @@ -1264,6 +1287,14 @@ mkdir -p %{temp_modules}/%{kver_full}/kernel/net/wireless/ cp wl.ko %{temp_modules}/%{kver_full}/kernel/net/wireless/wl.ko popd rm -fr kernel-source-broadcom-wl + +cp -r "$(rpm -q --qf '/usr/src/nvidia390-%%{VERSION}-%%{RELEASE}' kernel-source-nvidia390)" kernel-source-nvidia390 +pushd kernel-source-nvidia390 +%make SYSSRC=%{src_dir} +mkdir -p %{temp_modules}/%{kver_full}/kernel/drivers/video/nvidia390 +cp *.ko %{temp_modules}/%{kver_full}/kernel/drivers/video/nvidia390 +popd +rm -fr kernel-source-nvidia390 %endif cp -r "$(rpm -q --qf '/usr/src/tripso-%%{VERSION}-%%{RELEASE}' kernel-source-tripso)" kernel-source-tripso