mirror of
https://abf.rosa.ru/djam/kernel-5.15.git
synced 2025-02-23 10:32:54 +00:00
Adapt kernel packaging for dnf methods of handling kernels
dnf is able to coinstall multiple versions of one package with the same name, use it to handle clean up of old kernels.
This commit is contained in:
parent
846f0d6a2f
commit
8e1fdb84a2
2 changed files with 145 additions and 280 deletions
404
kernel.spec
404
kernel.spec
|
@ -1,10 +1,6 @@
|
|||
# _get_email() in %%build contains bashisms for regexping
|
||||
%define _buildshell /bin/bash
|
||||
|
||||
# Prevent RPM scripts from stripping signatures,
|
||||
# we strip binaries manually in %%build
|
||||
%define __strip %(which true)
|
||||
|
||||
# brp-python-bytecompile uses /usr/bin/python,
|
||||
# but it is a different python version in different ROSA
|
||||
# releases; there is no good way to tell brp-python-bytecompile
|
||||
|
@ -18,22 +14,29 @@
|
|||
# so we do not loose much by disabling it.
|
||||
%global _find_debuginfo_dwz_opts %{nil}
|
||||
|
||||
# Put everything into one non-standard debuginfo subpackage
|
||||
# TODO: make multiple debuginfo packages coinstallable as installonlypkg,
|
||||
# to achive this, there must be no conflicting files.
|
||||
# Probably signing and compressing of kernel modules
|
||||
# has to be moved to %%_spec_install_post.
|
||||
%global _debuginfo_subpackages %{nil}
|
||||
%global _debuginfo_template %{nil}
|
||||
%undefine _debugsource_packages
|
||||
|
||||
# Hack: flavour and major version are variable, make %%_build_pkgcheck_* always detect and use this config
|
||||
%global _build_pkgcheck_set %(echo "%{_build_pkgcheck_set}" | sed -e 's,/%{name}.rpmlintrc,/kernel.rpmlintrc,')
|
||||
%global _build_pkgcheck_srpm %(echo "%{_build_pkgcheck_srpm}" | sed -e 's,/%{name}.rpmlintrc,/kernel.rpmlintrc,')
|
||||
|
||||
%define kernelversion 5
|
||||
%define patchlevel 10
|
||||
%define sublevel 34
|
||||
|
||||
# Release number. Increase this before a rebuild.
|
||||
%define rpmrel 1
|
||||
%define rpmrel 2
|
||||
%define fullrpmrel %{rpmrel}
|
||||
|
||||
%define rpmtag %{disttag}
|
||||
|
||||
# fakerel and fakever never change, they are used to fool
|
||||
# rpm/urpmi/smart and ensure the kernels are installed,
|
||||
# not upgraded so old kernel is not overwritten or removed
|
||||
%define fakever 1
|
||||
%define fakerel %mkrel 1
|
||||
|
||||
# version defines
|
||||
%define kversion %{kernelversion}.%{patchlevel}.%{sublevel}
|
||||
%define kverrel %{kversion}-%{fullrpmrel}
|
||||
|
@ -145,6 +148,15 @@
|
|||
%define certs_key_config_rnd %{certs_dir_rnd}/x509.genkey
|
||||
%define certs_public_keys %{certs_dir_rnd}/public.pem
|
||||
%define certs_verify_tmp %{certs_dir_rnd}/verify.tmp
|
||||
|
||||
%define kernel_files %{_builddir}/kernel_files.list
|
||||
%define debuginfo_files %{_builddir}/debuginfo_files.list
|
||||
|
||||
# Append list of files generate by find-debuginfo.sh to our custom list
|
||||
%global __debug_install_post \
|
||||
%{__debug_install_post} \
|
||||
cat %{_builddir}/debugfiles.list >> %{debuginfo_files}
|
||||
|
||||
############################################################################
|
||||
|
||||
# Build defines
|
||||
|
@ -221,7 +233,7 @@
|
|||
# SRC RPM description
|
||||
#
|
||||
Summary: The Linux kernel
|
||||
Name: kernel
|
||||
Name: kernel-%{kernelversion}.%{patchlevel}-%{flavour}
|
||||
Version: %{kversion}
|
||||
Release: %{fullrpmrel}
|
||||
License: GPLv2
|
||||
|
@ -407,64 +419,42 @@ BuildRequires: ccache
|
|||
BuildRequires: zstd
|
||||
%endif
|
||||
|
||||
# might be useful too:
|
||||
Recommends: microcode
|
||||
|
||||
|
||||
%description
|
||||
The kernel package contains the Linux kernel (vmlinuz), the core of your
|
||||
operating system. The kernel handles the basic functions
|
||||
of the operating system: memory allocation, process allocation, device
|
||||
input and output, etc.
|
||||
|
||||
############################################################################
|
||||
|
||||
%package -n kernel-%{flavour}-%{buildrel}
|
||||
Version: %{fakever}
|
||||
Release: %{fakerel}
|
||||
|
||||
Provides: kernel = %{kverrel}
|
||||
Provides: kernel = %{kernelversion}.%{patchlevel}
|
||||
Provides: kernel-%{flavour} = %{kverrel}
|
||||
Provides: alsa = 1.0.27
|
||||
Provides: should-restart = system
|
||||
Provides: kernel = %{EVRD}
|
||||
Provides: kernel-%{flavour} = %{EVRD}
|
||||
# dnf config-manager --dump | grep installonly
|
||||
Provides: installonlypkg(kernel) = %{EVRD}.image
|
||||
Provides: installonlypkg(kernel) = %{EVRD}.modules
|
||||
|
||||
Requires(post): dracut
|
||||
Requires(post): kmod
|
||||
|
||||
# Usually necessary, but sometimes user may want to not install them
|
||||
Recommends: linux-firmware
|
||||
Recommends: wireless-regdb
|
||||
Recommends: crda
|
||||
|
||||
%if %{with flow_abi}
|
||||
Requires: kernel-%{kernelversion}.%{patchlevel}-rosa-flow-abi
|
||||
%endif
|
||||
|
||||
Recommends: microcode
|
||||
# Set BFQ as default scheduler for HDDs
|
||||
# https://www.phoronix.com/scan.php?page=article&item=linux-50hdd-io
|
||||
Recommends: udev-rules-ioschedulers
|
||||
|
||||
# Keep these deps on old platforms
|
||||
# but get rid of puling gcc etc. by the kernel on newer platforms
|
||||
%if %{build_devel} && %{mdvver} < 201900
|
||||
Requires: kernel-%{flavour}-devel-%{buildrel}
|
||||
Requires(post): kernel-%{flavour}-devel-%{buildrel}
|
||||
%if %{with flow_abi}
|
||||
Requires: kernel-%{kernelversion}.%{patchlevel}-rosa-flow-abi
|
||||
%endif
|
||||
|
||||
%ifarch %{ix86}
|
||||
Conflicts: arch(x86_64)
|
||||
%endif
|
||||
|
||||
Summary: A general-purpose Linux Kernel
|
||||
Group: System/Kernel and hardware
|
||||
Obsoletes: kernel-%{flavour}-%{kernelversion}.%{patchlevel}-latest < 5.10.34-2
|
||||
Provides: kernel-%{flavour}-%{kernelversion}.%{patchlevel}-latest = %{EVRD}
|
||||
|
||||
%description -n kernel-%{flavour}-%{buildrel}
|
||||
%description
|
||||
The kernel package contains the Linux kernel (vmlinuz), the core of your
|
||||
operating system. The kernel handles the basic functions
|
||||
of the operating system: memory allocation, process allocation, device
|
||||
input and output, etc. This is a general-purpose kernel.
|
||||
|
||||
%posttrans -n kernel-%{flavour}-%{buildrel}
|
||||
%posttrans
|
||||
# We always regenerate initrd here, even if it already exists. This may
|
||||
# happen if kernel-<...>-devel is installed first, triggers rebuild of
|
||||
# DKMS modules and some of these request remaking of initrd. The initrd
|
||||
|
@ -483,7 +473,7 @@ input and output, etc. This is a general-purpose kernel.
|
|||
# File triggers from grub packages will handle this.
|
||||
#/usr/sbin/update-grub2
|
||||
|
||||
%postun -n kernel-%{flavour}-%{buildrel}
|
||||
%postun
|
||||
|
||||
# Do not remove just installed kernel if package is being reinstalled
|
||||
if [ "$1" -gt 0 ]; then exit 0; fi
|
||||
|
@ -499,16 +489,43 @@ rm -rf /lib/modules/%{kver_full}/modules*
|
|||
# Remove /lib/modules/<...>/ if it is empty (-devel uses it too).
|
||||
find /lib/modules/%{kver_full} -maxdepth 0 -empty -exec rm -rf {} \; || true
|
||||
|
||||
|
||||
%files -n kernel-%{flavour}-%{buildrel} -f kernel_files.%{flavour}
|
||||
%files -f %{kernel_files}
|
||||
%{_bootdir}/System.map-%{kver_full}
|
||||
%{_bootdir}/symvers-%{kver_full}.zst
|
||||
%{_bootdir}/config-%{kver_full}
|
||||
%{_bootdir}/vmlinuz-%{kver_full}
|
||||
%ifarch %{armx}
|
||||
%{_bootdir}/dtb-%{kver_full}
|
||||
%endif
|
||||
%{_modulesdir}/%{kver_full}/modules.*
|
||||
%if %{with flow_abi}
|
||||
%{_modulesdir}/%{kver_full}/kernel/zzz-%{kernelversion}.%{patchlevel}-rosa-flow-abi
|
||||
%endif
|
||||
%if %{with binary_extra_modules}
|
||||
# 8821ce.ko.debug will not be excluded and will be in the main debug subpackage
|
||||
%exclude %{_modulesdir}/%{kver_full}/kernel/net/wireless/8821ce.ko%{kmod_suffix}
|
||||
%if %{with binary_shredder}
|
||||
%exclude %{_modulesdir}/%{kver_full}/kernel/extra/shredder-kernel.ko%{kmod_suffix}
|
||||
%endif
|
||||
%if %{with binary_virtualbox_host}
|
||||
# vbox host modules may be built here (vboxnetflt vboxnetadp vboxdrv vboxpci)
|
||||
# vbox guest modules are in the mainline kernel now (vboxvideo vboxguest vboxsf)
|
||||
%exclude %{_modulesdir}/%{kver_full}/kernel/misc/vbox*.ko%{kmod_suffix}
|
||||
%endif
|
||||
%exclude %{_modulesdir}/%{kver_full}/kernel/net/xt_TRIPSO.ko%{kmod_suffix}
|
||||
%exclude %{_modulesdir}/%{kver_full}/kernel/net/xt_so.ko%{kmod_suffix}
|
||||
%if %{with nickel}
|
||||
%exclude %{_modulesdir}/%{kver_full}/kernel/misc/nlkm.ko%{kmod_suffix}
|
||||
%exclude %{_modulesdir}/%{kver_full}/kernel/misc/memfreetest.ko%{kmod_suffix}
|
||||
%exclude %{_modulesdir}/%{kver_full}/kernel/misc/pcietest.ko%{kmod_suffix}
|
||||
%endif
|
||||
%endif #with binary_extra_modules
|
||||
|
||||
############################################################################
|
||||
|
||||
%if %build_devel
|
||||
%package -n kernel-%{flavour}-devel-%{buildrel}
|
||||
Version: %{fakever}
|
||||
Release: %{fakerel}
|
||||
Summary: Development files for kernel-%{flavour}-%{buildrel}
|
||||
%package devel
|
||||
Summary: Development files for %{name}
|
||||
Group: Development/Kernel
|
||||
Requires: glibc-devel
|
||||
Requires: ncurses-devel
|
||||
|
@ -517,27 +534,28 @@ Requires: gcc
|
|||
Requires: perl
|
||||
Provides: kernel-devel = %{kverrel}
|
||||
Provides: kernel-%{flavour}-devel = %{kverrel}
|
||||
Provides: installonlypkg(kernel) = %{EVRD}.devel
|
||||
Obsoletes: kernel-%{flavour}-%{kernelversion}.%{patchlevel}-devel-latest < 5.10.34-2
|
||||
Provides: kernel-%{flavour}-%{kernelversion}.%{patchlevel}-devel-latest = %{EVRD}
|
||||
|
||||
# Have dkms updated/installed before the kernel, scriptlet here checks if dkms exists
|
||||
%if %rpm4
|
||||
OrderWithRequires(post): dkms
|
||||
%endif
|
||||
|
||||
%ifarch %{ix86}
|
||||
Conflicts: arch(x86_64)
|
||||
%endif
|
||||
|
||||
%description -n kernel-%{flavour}-devel-%{buildrel}
|
||||
%description devel
|
||||
This package contains the kernel files (headers and build tools)
|
||||
that should be enough to build additional drivers for
|
||||
use with kernel-%{flavour}-%{buildrel}.
|
||||
use with %{name}.
|
||||
|
||||
%post -n kernel-%{flavour}-devel-%{buildrel}
|
||||
%post devel
|
||||
if command -v dkms_autoinstaller >/dev/null 2>&1; then
|
||||
dkms_autoinstaller start %{kver_full}
|
||||
fi
|
||||
|
||||
%preun -n kernel-%{flavour}-devel-%{buildrel}
|
||||
%preun devel
|
||||
|
||||
# If any DKMS modules with REMAKE_INITRD=yes in their configs have been
|
||||
# uninstalled, initrd has been regenerated for the given kernel. However,
|
||||
|
@ -558,7 +576,7 @@ for ii in $(/usr/sbin/dkms status -k %{kver_full} | awk '{ print $1 $2; }'); do
|
|||
/usr/sbin/dkms --rpm_safe_upgrade uninstall -m $mod -v $ver -k %{kver_full} || :
|
||||
done
|
||||
|
||||
%postun -n kernel-%{flavour}-devel-%{buildrel}
|
||||
%postun devel
|
||||
rm -rf /usr/src/linux-%{kver_full} >/dev/null
|
||||
# depmod (called when removing DKMS modules) might have created files in
|
||||
# /lib/modules/.../. Remove these first.
|
||||
|
@ -567,7 +585,7 @@ rm -rf /lib/modules/%{kver_full}/modules*
|
|||
find /lib/modules/%{kver_full} -maxdepth 0 -empty -exec rm -rf {} \; || true
|
||||
|
||||
|
||||
%files -n kernel-%{flavour}-devel-%{buildrel}
|
||||
%files devel
|
||||
%{devel_root}/Documentation
|
||||
%dir %{devel_root}
|
||||
%dir %{devel_root}/arch
|
||||
|
@ -632,88 +650,38 @@ find /lib/modules/%{kver_full} -maxdepth 0 -empty -exec rm -rf {} \; || true
|
|||
%{_modulesdir}/%{kver_full}/build
|
||||
%{_modulesdir}/%{kver_full}/source
|
||||
|
||||
%endif
|
||||
%endif # /build_devel
|
||||
|
||||
############################################################################
|
||||
|
||||
%if %build_debug
|
||||
%package -n kernel-%{flavour}-%{buildrel}-debuginfo
|
||||
Version: %{fakever}
|
||||
Release: %{fakerel}
|
||||
Summary: Debuginfo for kernel-%{flavour}-%{buildrel}
|
||||
%package debuginfo
|
||||
Summary: Debuginfo for %{name}
|
||||
Group: Development/Debug
|
||||
Provides: kernel-debug = %{kverrel}
|
||||
AutoReq: 0
|
||||
AutoProv: 0
|
||||
|
||||
%ifarch %{ix86}
|
||||
Conflicts: arch(x86_64)
|
||||
%endif
|
||||
%description debuginfo
|
||||
This package contains the files with debuginfo for %{name}.
|
||||
|
||||
%description -n kernel-%{flavour}-%{buildrel}-debuginfo
|
||||
This package contains the files with debuginfo for kernel-%{flavour}-%{buildrel}.
|
||||
%files debuginfo -f %{debuginfo_files}
|
||||
%{_bootdir}/vmlinux-%{kver_full}
|
||||
|
||||
%files -n kernel-%{flavour}-%{buildrel}-debuginfo -f kernel_debug_files.%{flavour}
|
||||
|
||||
%endif
|
||||
|
||||
############################################################################
|
||||
|
||||
%package -n kernel-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
||||
Version: %{kversion}
|
||||
Release: %{fullrpmrel}
|
||||
Summary: Meta package for the latest kernel-%{flavour} in %{kernelversion}.%{patchlevel} series
|
||||
Group: System/Kernel and hardware
|
||||
Requires: kernel-%{flavour}-%{buildrel}
|
||||
|
||||
%ifarch %{ix86}
|
||||
Conflicts: arch(x86_64)
|
||||
%endif
|
||||
|
||||
%description -n kernel-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
||||
This meta package aims to make sure you always have the
|
||||
latest kernel-%{flavour} %{kernelversion}.%{patchlevel}.x installed.
|
||||
|
||||
%files -n kernel-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
||||
# no files
|
||||
|
||||
############################################################################
|
||||
|
||||
%if %build_devel
|
||||
|
||||
%package -n kernel-%{flavour}-%{kernelversion}.%{patchlevel}-devel-latest
|
||||
Version: %{kversion}
|
||||
Release: %{fullrpmrel}
|
||||
Summary: Meta package for the latest kernel-%{flavour}-devel in %{kernelversion}.%{patchlevel} series
|
||||
Group: Development/Kernel
|
||||
Requires: kernel-%{flavour}-devel-%{buildrel}
|
||||
Provides: kernel-devel-latest
|
||||
|
||||
%ifarch %{ix86}
|
||||
Conflicts: arch(x86_64)
|
||||
%endif
|
||||
|
||||
%description -n kernel-%{flavour}-%{kernelversion}.%{patchlevel}-devel-latest
|
||||
This meta package aims to make sure you always have the
|
||||
latest kernel-%{flavour}-devel %{kernelversion}.%{patchlevel}.x installed.
|
||||
|
||||
%files -n kernel-%{flavour}-%{kernelversion}.%{patchlevel}-devel-latest
|
||||
# no files
|
||||
|
||||
%endif
|
||||
%endif # /build_debug
|
||||
|
||||
############################################################################
|
||||
|
||||
%if %build_doc
|
||||
%package -n kernel-doc
|
||||
Version: %{kversion}
|
||||
Release: %{fullrpmrel}
|
||||
%package doc
|
||||
Summary: Various documentation bits found in the kernel source
|
||||
Group: Documentation
|
||||
Buildarch: noarch
|
||||
|
||||
%description -n kernel-doc
|
||||
%description doc
|
||||
This package contains documentation files from the kernel source.
|
||||
|
||||
%files -n kernel-doc
|
||||
%files doc
|
||||
%doc linux-%{tar_ver}/Documentation/*
|
||||
|
||||
%endif
|
||||
|
@ -722,8 +690,6 @@ This package contains documentation files from the kernel source.
|
|||
|
||||
%if %{build_perf}
|
||||
%package -n perf
|
||||
Version: %{kversion}
|
||||
Release: %{fullrpmrel}
|
||||
Summary: perf tool and the supporting documentation
|
||||
Group: System/Kernel and hardware
|
||||
|
||||
|
@ -754,14 +720,9 @@ The package contains perf tool and the supporting documentation.
|
|||
|
||||
%if %{build_cpupower}
|
||||
%package -n cpupower
|
||||
Version: %{kversion}
|
||||
Release: %{fullrpmrel}
|
||||
|
||||
Summary: The cpupower tools
|
||||
Group: System/Kernel and hardware
|
||||
Requires(post): rpm-helper >= 0.24.0-3
|
||||
Requires(preun): rpm-helper >= 0.24.0-3
|
||||
Obsoletes: cpufreq < 3.0
|
||||
Obsoletes: cpufrequtils < 10.0
|
||||
|
||||
%description -n cpupower
|
||||
The cpupower tools.
|
||||
|
@ -795,11 +756,9 @@ fi
|
|||
############################################################################
|
||||
|
||||
%package -n cpupower-devel
|
||||
Version: %{kversion}
|
||||
Release: %{fullrpmrel}
|
||||
Summary: Development files for cpupower
|
||||
Group: Development/Kernel
|
||||
Requires: cpupower = %{kversion}-%{fullrpmrel}
|
||||
Requires: cpupower = %{EVRD}
|
||||
Conflicts: %{_lib}cpufreq-devel
|
||||
|
||||
%description -n cpupower-devel
|
||||
|
@ -815,16 +774,14 @@ This package contains the development files for cpupower.
|
|||
############################################################################
|
||||
|
||||
%if %{build_headers}
|
||||
%package headers
|
||||
Version: %kversion
|
||||
Release: %fullrpmrel
|
||||
%package -n kernel-headers
|
||||
Summary: Linux kernel header files mostly used by your C library
|
||||
Group: System/Kernel and hardware
|
||||
Epoch: 1
|
||||
Provides: linux-userspace-headers = %{EVRD}
|
||||
Provides: kernel-release-headers = %{EVRD}
|
||||
|
||||
%description headers
|
||||
%description -n kernel-headers
|
||||
C header files from the Linux kernel. The header files define
|
||||
structures and constants that are needed for building most
|
||||
standard programs, notably the C library.
|
||||
|
@ -832,7 +789,7 @@ standard programs, notably the C library.
|
|||
This package is not suitable for building kernel modules, you
|
||||
should use the 'kernel-devel' package instead.
|
||||
|
||||
%files headers
|
||||
%files -n kernel-headers
|
||||
%{_includedir}/*
|
||||
# Don't conflict with cpupower-devel
|
||||
%if %{build_cpupower}
|
||||
|
@ -845,79 +802,40 @@ should use the 'kernel-devel' package instead.
|
|||
|
||||
%if %{with uml}
|
||||
|
||||
%package -n kernel-uml-%{flavour}-%{buildrel}
|
||||
Version: %{fakever}
|
||||
Release: %{fakerel}
|
||||
Provides: kernel-uml = %{kverrel}
|
||||
Provides: kernel-uml-%{flavour} = %{kverrel}
|
||||
%package uml
|
||||
Summary: User Mode Linux binary
|
||||
Group: System/Kernel and hardware
|
||||
Provides: kernel-uml = %{kverrel}
|
||||
Provides: kernel-uml-%{flavour} = %{kverrel}
|
||||
Provides: installonlypkg(kernel) = %{EVRD}.uml
|
||||
Obsoletes: kernel-uml-%{flavour}-%{kernelversion}.%{patchlevel}-latest < 5.10.34-2
|
||||
Provides: kernel-uml-%{flavour}-%{kernelversion}.%{patchlevel}-latest = %{EVRD}
|
||||
|
||||
%description -n kernel-uml-%{flavour}-%{buildrel}
|
||||
%description uml
|
||||
User Mode Linux binary.
|
||||
Stripped, debug is in kernel-%{flavour}-%{buildrel}-debuginfo.
|
||||
Stripped, debug is in %{name}-debuginfo.
|
||||
|
||||
%files -n kernel-uml-%{flavour}-%{buildrel}
|
||||
%files uml
|
||||
%{_bindir}/linux-uml-%{kver_full}
|
||||
#------------------------------------------------
|
||||
|
||||
%package -n kernel-uml-modules-%{flavour}-%{buildrel}
|
||||
Version: %{fakever}
|
||||
Release: %{fakerel}
|
||||
Provides: kernel-uml-modules = %{kverrel}
|
||||
Provides: kernel-uml-modules-%{flavour} = %{kverrel}
|
||||
%package uml-modules
|
||||
Summary: User Mode Linux (UML) kernel modules
|
||||
Group: System/Kernel and hardware
|
||||
Provides: kernel-uml-modules = %{kverrel}
|
||||
Provides: kernel-uml-modules-%{flavour} = %{kverrel}
|
||||
Provides: installonlypkg(kernel-module) = %{EVRD}.uml
|
||||
Obsoletes: kernel-uml-modules-%{flavour}-%{kernelversion}.%{patchlevel}-latest < 5.10.34-2
|
||||
Provides: kernel-uml-modules-%{flavour}-%{kernelversion}.%{patchlevel}-latest = %{EVRD}
|
||||
|
||||
%description -n kernel-uml-modules-%{flavour}-%{buildrel}
|
||||
%description uml-modules
|
||||
User Mode Linux (UML) kernel modules
|
||||
- not compressed
|
||||
- not stripped
|
||||
- signed
|
||||
|
||||
%files -n kernel-uml-modules-%{flavour}-%{buildrel}
|
||||
%files uml-modules
|
||||
/lib/modules-uml/%{kver_full}
|
||||
#------------------------------------------------
|
||||
|
||||
%package -n kernel-uml-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
||||
Version: %{kversion}
|
||||
Release: %{fullrpmrel}
|
||||
Summary: Meta package for the latest kernel-uml-%{flavour} in %{kernelversion}.%{patchlevel} series
|
||||
Group: System/Kernel and hardware
|
||||
Requires: kernel-uml-%{flavour}-%{buildrel}
|
||||
|
||||
%ifarch %{ix86}
|
||||
Conflicts: arch(x86_64)
|
||||
%endif
|
||||
|
||||
%description -n kernel-uml-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
||||
This meta package aims to make sure you always have the
|
||||
latest kernel-uml-%{flavour} %{kernelversion}.%{patchlevel}.x
|
||||
(User Mode Linux binary) installed.
|
||||
|
||||
%files -n kernel-uml-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
||||
# no files
|
||||
#------------------------------------------------
|
||||
|
||||
%package -n kernel-uml-modules-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
||||
Version: %{kversion}
|
||||
Release: %{fullrpmrel}
|
||||
Summary: Meta package for the latest kernel-uml-modules-%{flavour} in %{kernelversion}.%{patchlevel} series
|
||||
Group: System/Kernel and hardware
|
||||
Requires: kernel-uml-modules-%{flavour}-%{buildrel}
|
||||
|
||||
%ifarch %{ix86}
|
||||
Conflicts: arch(x86_64)
|
||||
%endif
|
||||
|
||||
%description -n kernel-uml-modules-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
||||
This meta package aims to make sure you always have the
|
||||
latest kernel-uml-modules-%{flavour} %{kernelversion}.%{patchlevel}.x
|
||||
(User Mode Linux kernel modules) installed.
|
||||
|
||||
%files -n kernel-uml-modules-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
||||
# no files
|
||||
#------------------------------------------------
|
||||
|
||||
%endif #endif uml
|
||||
|
||||
|
@ -943,20 +861,19 @@ latest kernel-uml-modules-%{flavour} %{kernelversion}.%{patchlevel}.x
|
|||
%ksob_mk_module_pkg -n vboxpci -s misc
|
||||
|
||||
# a package which will pull all those modules
|
||||
%package -n kernel-modules-virtualbox-host-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
||||
%package -n kernel-modules-virtualbox-host-%{ksob_kernel}
|
||||
Summary: Meta package to pull VirtualBox host kernel modules for kernel-%{flavour}-%{kernelversion}.%{patchlevel}
|
||||
Group: System/Kernel and hardware
|
||||
Version: %{kversion}
|
||||
Release: %{fullrpmrel}
|
||||
Requires: kernel-module-vboxnetflt-%{flavour}-%{buildrel}
|
||||
Requires: kernel-module-vboxnetadp-%{flavour}-%{buildrel}
|
||||
Requires: kernel-module-vboxdrv-%{flavour}-%{buildrel}
|
||||
Requires: kernel-module-vboxpci-%{flavour}-%{buildrel}
|
||||
Requires: kernel-module-vboxnetflt-%{ksob_kernel}
|
||||
Requires: kernel-module-vboxnetadp-%{ksob_kernel}
|
||||
Requires: kernel-module-vboxdrv-%{ksob_kernel}
|
||||
Requires: kernel-module-vboxpci-%{ksob_kernel}
|
||||
Obsoletes: kernel-modules-virtualbox-host-%{flavour}-%{kernelversion}.%{patchlevel}-latest < 5.10.34-2
|
||||
|
||||
%description -n kernel-modules-virtualbox-host-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
||||
Meta package to pull VirtualBox host kernel modules for kernel-%{flavour}-%{kernelversion}.%{patchlevel}
|
||||
%description -n kernel-modules-virtualbox-host-%{ksob_kernel}
|
||||
Meta package to pull VirtualBox host kernel modules for %{name}
|
||||
|
||||
%files -n kernel-modules-virtualbox-host-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
||||
%files -n kernel-modules-virtualbox-host-%{ksob_kernel}
|
||||
# empty
|
||||
%endif #ifarch x86
|
||||
#------------------------------------------------
|
||||
|
@ -996,6 +913,12 @@ This package does nothing, just owns a directory for third-party binary kernel m
|
|||
################################################
|
||||
|
||||
%prep
|
||||
|
||||
# avoid accidental merge
|
||||
%if 0%{?rpm5}
|
||||
%{error:Package structure is for dnf, not for urpmi!}
|
||||
%endif
|
||||
|
||||
%setup -q -n %top_dir_name -c
|
||||
%if %{with uml}
|
||||
cp -r %{src_dir} %{src_dir}.uml
|
||||
|
@ -1450,13 +1373,8 @@ patch -p1 --fuzz=0 -d %{temp_devel_root} -i %{SOURCE2}
|
|||
# endif build_devel
|
||||
%endif
|
||||
|
||||
# Manage the files with debug info, provide the debug links in the
|
||||
# kernel modules.
|
||||
# TODO: maybe move to /usr/lib/debug?
|
||||
%if %build_debug
|
||||
install -m 644 vmlinux %{temp_boot}/vmlinux-%{kver_full}
|
||||
kernel_debug_files=../kernel_debug_files.%{flavour}
|
||||
echo "%{_bootdir}/vmlinux-%{kver_full}" >> $kernel_debug_files
|
||||
|
||||
find %{temp_modules}/%{kver_full}/kernel \
|
||||
-name "*.ko" | \
|
||||
%kxargs -I '{}' objcopy --only-keep-debug '{}' '{}'.debug
|
||||
|
@ -1465,19 +1383,7 @@ find %{temp_modules}/%{kver_full}/kernel \
|
|||
sh -c 'cd `dirname {}`; \
|
||||
objcopy --add-gnu-debuglink=`basename {}`.debug \
|
||||
--strip-debug `basename {}`'
|
||||
|
||||
pushd %{temp_modules}
|
||||
find %{kver_full}/kernel -name "*.ko.debug" > debug_module_list
|
||||
popd
|
||||
cat %{temp_modules}/debug_module_list | \
|
||||
sed 's|\(.*\)|%{_modulesdir}/\1|' >> $kernel_debug_files
|
||||
cat %{temp_modules}/debug_module_list | \
|
||||
sed 's|\(.*\)|%exclude %{_modulesdir}/\1|' \
|
||||
>> ../kernel_exclude_debug_files.%{flavour}
|
||||
rm -f %{temp_modules}/debug_module_list
|
||||
|
||||
# endif build_debug
|
||||
%endif
|
||||
%endif # /build_debug
|
||||
|
||||
# https://patchwork.kernel.org/patch/11446123/
|
||||
_libressl_sign(){
|
||||
|
@ -1504,44 +1410,6 @@ find %{temp_modules}/%{kver_full}/kernel \
|
|||
xargs --null -P "$(nproc)" -I {} "$SHELL" -e -x -c 'if ! _libressl_sign "{}"; \
|
||||
then echo Failed _libressl_sign on "{}" && exit 1; fi'
|
||||
|
||||
# Create the list of files for the kernel.
|
||||
kernel_files=../kernel_files.%{flavour}
|
||||
|
||||
cat > $kernel_files <<EOF
|
||||
%{_bootdir}/System.map-%{kver_full}
|
||||
%{_bootdir}/symvers-%{kver_full}.zst
|
||||
%{_bootdir}/config-%{kver_full}
|
||||
%{_bootdir}/vmlinuz-%{kver_full}
|
||||
%ifarch %{armx}
|
||||
%{_bootdir}/dtb-%{kver_full}
|
||||
%endif
|
||||
%{_modulesdir}/%{kver_full}/kernel
|
||||
%if %{with binary_extra_modules}
|
||||
# 8821ce.ko.debug will not be excluded and will be in the main debug subpackage
|
||||
%exclude %{_modulesdir}/%{kver_full}/kernel/net/wireless/8821ce.ko%{kmod_suffix}
|
||||
%if %{with binary_shredder}
|
||||
%exclude %{_modulesdir}/%{kver_full}/kernel/extra/shredder-kernel.ko%{kmod_suffix}
|
||||
%endif
|
||||
%if %{with binary_virtualbox_host}
|
||||
# vbox host modules may be built here (vboxnetflt vboxnetadp vboxdrv vboxpci)
|
||||
# vbox guest modules are in the mainline kernel now (vboxvideo vboxguest vboxsf)
|
||||
%exclude %{_modulesdir}/%{kver_full}/kernel/misc/vbox*.ko%{kmod_suffix}
|
||||
%endif
|
||||
%exclude %{_modulesdir}/%{kver_full}/kernel/net/xt_TRIPSO.ko%{kmod_suffix}
|
||||
%exclude %{_modulesdir}/%{kver_full}/kernel/net/xt_so.ko%{kmod_suffix}
|
||||
%if %{with nickel}
|
||||
%exclude %{_modulesdir}/%{kver_full}/kernel/misc/nlkm.ko%{kmod_suffix}
|
||||
%exclude %{_modulesdir}/%{kver_full}/kernel/misc/memfreetest.ko%{kmod_suffix}
|
||||
%exclude %{_modulesdir}/%{kver_full}/kernel/misc/pcietest.ko%{kmod_suffix}
|
||||
%endif
|
||||
%endif #with binary_extra_modules
|
||||
%{_modulesdir}/%{kver_full}/modules.*
|
||||
EOF
|
||||
|
||||
%if %build_debug
|
||||
cat ../kernel_exclude_debug_files.%{flavour} >> $kernel_files
|
||||
%endif
|
||||
|
||||
# set extraversion to match srpm to get nice version reported by the tools
|
||||
LC_ALL=C sed -ri "s/^EXTRAVERSION.*/EXTRAVERSION = -%{fullrpmrel}/" Makefile
|
||||
|
||||
|
@ -1602,6 +1470,14 @@ rm -f %{certs_verify_tmp}
|
|||
find %{target_modules} -name "*.ko" | %kxargs %{zstd_cmd} --rm -T1
|
||||
%endif
|
||||
|
||||
find %{buildroot}%{_modulesdir} -type f -name '*.ko%{kmod_suffix}' | sed -e 's,^%{buildroot},,' | sort -u >> %{kernel_files}
|
||||
find %{buildroot}%{_modulesdir} -type d -name '*.ko%{kmod_suffix}' | sed -e 's,^%{buildroot},,' -e 's,^,%dir ,' | sort -u >> %{kernel_files}
|
||||
|
||||
%if %build_debug
|
||||
install -m 644 vmlinux %{buildroot}%{_bootdir}/vmlinux-%{kver_full}
|
||||
find %{buildroot}%{_modulesdir} -type f -name '*.debug' | sed -e 's,^%{buildroot},,' | sort -u >> %{debuginfo_files}
|
||||
%endif # /build_debug
|
||||
|
||||
pushd %{target_modules}
|
||||
for i in *; do
|
||||
rm -f $i/build $i/source
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
# TODO: define it somewhere else...
|
||||
# TODO: avoid depending from %%flavour, %%buildrel etc ?!
|
||||
# TODO: fail if needed macros are not defined
|
||||
%ksob_kernel %{flavour}-%{buildrel}
|
||||
%ksob_kernel %{kernelversion}.%{patchlevel}-%{flavour}
|
||||
|
||||
# %%ksob_mk_module_pkg -n module name -s module section [ -r additional requires for this package ]
|
||||
# Examples:
|
||||
|
@ -16,7 +16,6 @@
|
|||
\
|
||||
%define module_name %{-n:%{-n*}}%{!-n:%{error:Module name not defined!}} \
|
||||
%define pkg_main kernel-module-%{module_name}-%{ksob_kernel} \
|
||||
%define pkg_latest kernel-module-%{module_name}-%{flavour}-%{kernelversion}.%{patchlevel}-latest \
|
||||
%define module_section %{-s:%{-s*}}%{!-s:%{error:Module section (e.g. extra) not defined!}} \
|
||||
\
|
||||
%{expand: \
|
||||
|
@ -24,9 +23,11 @@
|
|||
# TODO: convert long kernel name to one macro \
|
||||
Summary: Binary module %{module_name} for kernel-%{ksob_kernel} \
|
||||
Group: System/Kernel and hardware \
|
||||
Version: 1 \
|
||||
Release: 1 \
|
||||
\
|
||||
%{-r:Requires: %{-r*}} \
|
||||
Provides: installonlypkg(kernel-module) = %{EVRD}.module.%{module_name} \
|
||||
Provides: kernel-module-%{module_name}-%{flavour}-%{kernelversion}.%{patchlevel}-latest = %{EVRD} \
|
||||
Obsoletes: kernel-module-%{module_name}-%{flavour}-%{kernelversion}.%{patchlevel}-latest < 5.10.34-2 \
|
||||
\
|
||||
%description -n %{pkg_main} \
|
||||
Binary module %{module_name} for kernel-%{ksob_kernel} \
|
||||
|
@ -35,17 +36,5 @@ Binary module %{module_name} for kernel-%{ksob_kernel} \
|
|||
# XXX TODO: how to %%exclude these files from the main package automatically? \
|
||||
%{_modulesdir}/%{kver_full}/kernel/%{module_section}/%{module_name}.ko%{kmod_suffix} \
|
||||
\
|
||||
%package -n %{pkg_latest} \
|
||||
Summary: Meta package for the latest binary module %{module_name} for the latest kernel-%{flavour} in %{kernelversion}.%{patchlevel} series \
|
||||
Group: System/Kernel and hardware \
|
||||
Version: %{kversion} \
|
||||
Release: %{fullrpmrel} \
|
||||
Requires: %{pkg_main} \
|
||||
\
|
||||
%description -n %{pkg_latest} \
|
||||
Meta package for the latest binary module %{module_name} for the latest \
|
||||
kernel-%{flavour} in %{kernelversion}.%{patchlevel} series \
|
||||
# No files \
|
||||
%files -n %{pkg_latest} \
|
||||
%{nil} \
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue