Build binary nvidia390 kernel modules

This commit is contained in:
Mikhail Novosyolov 2021-10-10 16:12:22 +03:00
parent 9b561f0c3a
commit 4ed26971fe

View file

@ -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