kernel-5.15/kernel.spec

1047 lines
31 KiB
RPMSpec
Raw Permalink Normal View History

2024-07-27 08:25:53 +00:00
%define kernelversion 5
%define patchlevel 15
# sublevel is used for stable-based kernels
2024-12-11 11:38:08 +00:00
%define sublevel 173
2013-11-16 00:27:01 +04:00
# Release number. Increase this before a rebuild.
2024-07-27 08:25:53 +00:00
%define rpmrel 1
%define fullrpmrel %{rpmrel}
2013-11-16 00:27:01 +04:00
2024-07-27 08:25:53 +00:00
%define rpmtag %{disttag}11
2013-11-16 00:27:01 +04:00
2024-07-27 08:25:53 +00:00
# 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
2013-11-16 00:27:01 +04:00
2024-07-27 08:25:53 +00:00
# version defines
%define kversion %{kernelversion}.%{patchlevel}.%{sublevel}
%define kverrel %{kversion}-%{fullrpmrel}
%define tar_ver %{kernelversion}.%{patchlevel}
2024-07-27 08:25:53 +00:00
%ifarch %{ix86}
# Use a standard suffix for 32-bit x86
%define arch_suffix i586
2020-07-29 10:59:41 +03:00
%else
2024-07-27 08:25:53 +00:00
%define arch_suffix %{_arch}
2020-07-29 10:59:41 +03:00
%endif
2024-07-27 08:25:53 +00:00
%define buildrpmrel %{fullrpmrel}%{rpmtag}-%{arch_suffix}
%define buildrel %{kversion}-%{buildrpmrel}
# Kernel flavour
2024-07-27 08:25:53 +00:00
%define flavour generic
2013-11-16 00:27:01 +04:00
# The full kernel version
2024-07-27 08:25:53 +00:00
%define kver_full %{kversion}-%{flavour}-%{buildrpmrel}
############################################################################
2024-07-27 08:25:53 +00:00
%define top_dir_name kernel-%{_arch}
%define build_dir ${RPM_BUILD_DIR}/%{top_dir_name}
%define src_dir %{build_dir}/linux-%{tar_ver}
# Common target directories
2024-07-27 08:25:53 +00:00
%define _bootdir /boot
%define _modulesdir /lib/modules
%define devel_root /usr/src/linux-%{kver_full}
# Directories needed for building
2024-07-27 08:25:53 +00:00
%define temp_root %{build_dir}/temp-root
%define temp_boot %{temp_root}%{_bootdir}
%define temp_modules %{temp_root}%{_modulesdir}
%define temp_devel_root %{temp_root}%{devel_root}
# Directories definition needed for installing
2024-07-27 08:25:53 +00:00
%define target_boot %{buildroot}%{_bootdir}
%define target_modules %{buildroot}%{_modulesdir}
############################################################################
2013-11-16 00:27:01 +04:00
2024-07-27 08:25:53 +00:00
# SELinux is now built in by default but some other hardening features
# are not.
%{?build_selinux}%{?!build_selinux:%bcond_with selinux}
%if %{with selinux}
%global enhanced_security 1
%else
%global enhanced_security 0
%endif
# Allow "rpmbuild --with enhanced_security <...>"
%{?_with_enhanced_security:%global enhanced_security 1}
############################################################################
2021-10-10 16:12:22 +03:00
2024-07-27 08:25:53 +00:00
# Development files for SystemTap may be needed for its integration with perf.
%bcond_without systemtap
2021-10-10 16:12:22 +03:00
############################################################################
2024-07-27 08:25:53 +00:00
# Build defines
%define build_doc 0
%define build_devel 1
%define build_debug 0
# Build kernel-headers package
%define build_headers 1
# build perf and cpupower tools
%define build_perf 1
%define build_cpupower 1
# compress modules with xz
%define build_modxz 1
# End of user definitions
# buildtime flags
2013-11-16 00:27:01 +04:00
%{?_without_doc: %global build_doc 0}
%{?_without_devel: %global build_devel 0}
%{?_without_debug: %global build_debug 0}
%{?_without_perf: %global build_perf 0}
%{?_without_cpupower: %global build_cpupower 0}
2024-07-27 08:25:53 +00:00
%{?_without_modxz: %global build_modxz 0}
2013-11-16 00:27:01 +04:00
%{?_with_doc: %global build_doc 1}
%{?_with_devel: %global build_devel 1}
%{?_with_debug: %global build_debug 1}
%{?_with_perf: %global build_perf 1}
%{?_with_cpupower: %global build_cpupower 1}
2024-07-27 08:25:53 +00:00
%{?_with_modxz: %global build_modxz 1}
%if !%{build_debug}
# Disable debug rpms.
2024-07-27 08:25:53 +00:00
%define _enable_debug_packages %{nil}
%define debug_package %{nil}
%endif
2024-07-27 08:25:53 +00:00
%if %(if [ -z "$CC" ] ; then echo 0; else echo 1; fi)
%define kmake %make CC="$CC"
2013-11-16 00:27:01 +04:00
%else
2024-07-27 08:25:53 +00:00
%define kmake %make
2020-11-26 18:48:55 +00:00
%endif
2024-07-27 08:25:53 +00:00
# there are places where parallel make don't work
%define smake make
2020-11-26 18:48:55 +00:00
2013-11-16 00:27:01 +04:00
# Parallelize xargs invocations on smp machines
2024-07-27 08:25:53 +00:00
%define kxargs xargs %([ -z "$RPM_BUILD_NCPUS" ] \\\
2013-11-16 00:27:01 +04:00
&& RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"; \\\
[ "$RPM_BUILD_NCPUS" -gt 1 ] && echo "-P $RPM_BUILD_NCPUS")
#
# SRC RPM description
#
2024-07-27 08:25:53 +00:00
Summary: The Linux kernel
Name: kernel
Version: %{kversion}
Release: %{fullrpmrel}
License: GPLv2
Group: System/Kernel and hardware
ExclusiveArch: x86_64
URL: http://www.kernel.org
2013-11-16 00:27:01 +04:00
####################################################################
#
# Sources
#
2024-07-27 08:25:53 +00:00
Source0: https://cdn.kernel.org/pub/linux/kernel/v%{kernelversion}.x/linux-%{tar_ver}.tar.xz
Revisited the set of kernel flavours and the generation of config files Until now, the build system for the kernel supported a number of flavours: nrj and non-nrj ones, desktop-, laptop-, server- and netbook-oriented, etc. It turned out over the years, however, that our users mostly need the following: * a kernel to use on the desktops (home and office use) with reasonable default settings for performance and responsiveness; * a kernel for laptops, with a bit more emphasis on power consumption. Other variants were rarely used. We also did not have enough time to properly support all these. Besides, the kernels for ARM and other architectures need a somewhat different build process than for x86. So, they are better off to be in separate ABF projects, even if they are needed. No signs of ROSA on ARM yet, btw. So, I kept only nrj-desktop and nrj-laptop flavours and only x86. Non-PAE systems also seem to be rare now, so I enabled PAE by default for the 32-bit kernels. Non-PAE kernels are no longer built. If they are needed, we may use a separate git branch or an ABF project for that. To simplify debugging, maintenance and experimentation with the kernel builds further, I revisited the process of preparing the kernel configuration files. The goal is to get rid of a separate git repo with the default configs (kernel-patches-and-configs) and keep everything in this project. The default config files are now kept here. For x86_64: * kernel-x86_64.config contains the options for both nrj-desktop and nrn-laptop flavours; * kernel-{nrj_desktop|nrj_laptop}-x86_64.config files contain the flavour-specific options. This way, it is easier to track which config options changed when, easier to experiment with the custom configs and so on. The kernel will be built with debug info if rpmbuild is called with "--with debug".
2016-07-21 13:56:25 +03:00
2013-11-16 00:27:01 +04:00
# This is for disabling *config, mrproper, prepare, scripts on -devel rpms
# Needed, because otherwise the -devel won't build correctly.
2024-07-27 08:25:53 +00:00
Source2: disable-mrproper-prepare-scripts-configs-in-devel-rpms.patch
2020-07-29 10:59:41 +03:00
Revisited the set of kernel flavours and the generation of config files Until now, the build system for the kernel supported a number of flavours: nrj and non-nrj ones, desktop-, laptop-, server- and netbook-oriented, etc. It turned out over the years, however, that our users mostly need the following: * a kernel to use on the desktops (home and office use) with reasonable default settings for performance and responsiveness; * a kernel for laptops, with a bit more emphasis on power consumption. Other variants were rarely used. We also did not have enough time to properly support all these. Besides, the kernels for ARM and other architectures need a somewhat different build process than for x86. So, they are better off to be in separate ABF projects, even if they are needed. No signs of ROSA on ARM yet, btw. So, I kept only nrj-desktop and nrj-laptop flavours and only x86. Non-PAE systems also seem to be rare now, so I enabled PAE by default for the 32-bit kernels. Non-PAE kernels are no longer built. If they are needed, we may use a separate git branch or an ABF project for that. To simplify debugging, maintenance and experimentation with the kernel builds further, I revisited the process of preparing the kernel configuration files. The goal is to get rid of a separate git repo with the default configs (kernel-patches-and-configs) and keep everything in this project. The default config files are now kept here. For x86_64: * kernel-x86_64.config contains the options for both nrj-desktop and nrn-laptop flavours; * kernel-{nrj_desktop|nrj_laptop}-x86_64.config files contain the flavour-specific options. This way, it is easier to track which config options changed when, easier to experiment with the custom configs and so on. The kernel will be built with debug info if rpmbuild is called with "--with debug".
2016-07-21 13:56:25 +03:00
# Kernel configuration files.
2024-07-27 08:25:53 +00:00
Source110: kernel-%{arch_suffix}.config
2013-11-16 00:27:01 +04:00
# Cpupower: the service, the config, etc.
Source50: cpupower.service
Source51: cpupower.config
Source52: cpupower-start.sh
Source53: cpupower.path
2013-11-16 00:27:01 +04:00
Source80: kernel.rpmlintrc
####################################################################
Revisited the set of kernel flavours and the generation of config files Until now, the build system for the kernel supported a number of flavours: nrj and non-nrj ones, desktop-, laptop-, server- and netbook-oriented, etc. It turned out over the years, however, that our users mostly need the following: * a kernel to use on the desktops (home and office use) with reasonable default settings for performance and responsiveness; * a kernel for laptops, with a bit more emphasis on power consumption. Other variants were rarely used. We also did not have enough time to properly support all these. Besides, the kernels for ARM and other architectures need a somewhat different build process than for x86. So, they are better off to be in separate ABF projects, even if they are needed. No signs of ROSA on ARM yet, btw. So, I kept only nrj-desktop and nrj-laptop flavours and only x86. Non-PAE systems also seem to be rare now, so I enabled PAE by default for the 32-bit kernels. Non-PAE kernels are no longer built. If they are needed, we may use a separate git branch or an ABF project for that. To simplify debugging, maintenance and experimentation with the kernel builds further, I revisited the process of preparing the kernel configuration files. The goal is to get rid of a separate git repo with the default configs (kernel-patches-and-configs) and keep everything in this project. The default config files are now kept here. For x86_64: * kernel-x86_64.config contains the options for both nrj-desktop and nrn-laptop flavours; * kernel-{nrj_desktop|nrj_laptop}-x86_64.config files contain the flavour-specific options. This way, it is easier to track which config options changed when, easier to experiment with the custom configs and so on. The kernel will be built with debug info if rpmbuild is called with "--with debug".
2016-07-21 13:56:25 +03:00
2013-11-16 00:27:01 +04:00
# Patches
# The patch to make kernel x.y.z from x.y.0.
2024-07-27 08:25:53 +00:00
Patch1: https://cdn.kernel.org/pub/linux/kernel/v%{kernelversion}.x/patch-%{kversion}.xz
# Patches from mainline
# none
2013-11-16 00:27:01 +04:00
# ROSA-specific patches
# Perf docs are built after all the kernels. To validate the xml files
# generated during that process, xmlto tries to get DTD files from the Net.
# If it fails, the whole build fails, which is unfortunate. Let us avoid
# this.
2024-07-27 08:25:53 +00:00
Patch101: perf-xmlto-skip-validation.patch
# http://bugs.rosalinux.ru/show_bug.cgi?id=6235
# http://bugs.rosalinux.ru/show_bug.cgi?id=6459
2024-07-27 08:25:53 +00:00
Patch102: audit-make-it-less-verbose.patch
2024-07-27 08:25:53 +00:00
#if #{mdvver} >= 201900
# May help when building with GCC 8+.
#Patch105: perf-silence-format-warnings-gcc8.patch
#endif
# AUFS from http://aufs.sourceforge.net/
#Patch109: fs-aufs.patch
# Other patches
Patch120: objtool-sync-check.sh-set-the-exit-code-explicitly.patch
####################################################################
Autoreqprov: no
BuildRequires: bc
BuildRequires: binutils
BuildRequires: gcc
# For power tools
BuildRequires: pkgconfig(ncurses)
BuildRequires: kmod-devel kmod-compat
2019-12-07 21:57:55 +03:00
BuildRequires: bison
BuildRequires: flex
2024-07-27 08:25:53 +00:00
BuildRequires: bzip2
BuildRequires: pkgconfig(libzstd)
2019-09-24 11:56:44 +03:00
BuildRequires: rsync
2024-07-27 08:25:53 +00:00
2024-07-28 18:57:22 +00:00
BuildRequires: git-core
BuildRequires: java-devel
2024-07-27 08:25:53 +00:00
%ifarch x86_64
BuildRequires: numa-devel
%endif
2024-07-27 08:25:53 +00:00
# for perf, cpufreq and all other tools
# for cpupower
%if %{build_cpupower}
2024-07-27 08:25:53 +00:00
BuildRequires: pciutils-devel
%endif
2024-07-27 08:25:53 +00:00
# for perf
%if %{build_perf}
2024-07-27 08:25:53 +00:00
BuildRequires: asciidoc
BuildRequires: audit-devel
BuildRequires: binutils-devel
BuildRequires: elfutils-devel
BuildRequires: libunwind-devel
BuildRequires: newt-devel
BuildRequires: perl-devel
BuildRequires: python3
BuildRequires: python3-devel
BuildRequires: xmlto
BuildRequires: zlib-devel
#BuildRequires: pkgconfig(libcrypto)
BuildRequires: openssl-devel
BuildRequires: openssl
BuildRequires: pkgconfig(libressl)
BuildRequires: pkgconfig(libcap)
%if %{with systemtap}
BuildRequires: systemtap-devel
%endif
%endif
# might be useful too:
Suggests: microcode
2024-07-27 08:25:53 +00:00
%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
Requires(pre): grub2
Requires(pre): dracut >= 046
Requires(pre): kmod >= 20-1
Requires(pre): sysfsutils >= 2.1.0-12
Requires: dracut >= 046
Requires: linux-firmware >= 20181026
Requires: wireless-regdb
Suggests: crda
%if %build_devel
Requires: kernel-%{flavour}-devel-%{buildrel}
Requires(post): kernel-%{flavour}-devel-%{buildrel}
2013-11-16 00:27:01 +04:00
%endif
%ifarch %{ix86}
Conflicts: arch(x86_64)
2013-11-16 00:27:01 +04:00
%endif
2016-07-21 15:58:13 +03:00
2024-07-27 08:25:53 +00:00
Summary: A general-purpose Linux Kernel
Group: System/Kernel and hardware
2021-10-10 16:12:22 +03:00
2024-07-27 08:25:53 +00:00
%description -n kernel-%{flavour}-%{buildrel}
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.
2024-07-27 08:25:53 +00:00
%post -n kernel-%{flavour}-%{buildrel}
# 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
# that is created then will be non-functional. But when the user installs
# kernel-<...> package, that defunct initrd will be replaced with a working
# one here.
2024-07-27 08:25:53 +00:00
#
# depmod is also needed, because some DKMS-modules might have been installed
# when the devel package was installed but that was before the main modules
# were installed.
# This is also the reason the devel package is in Requires(post) for this
# package now: it must be installed completely before we call depmod here.
/sbin/depmod -a %{kver_full}
/sbin/dracut -f /boot/initrd-%{kver_full}.img %{kver_full}
2013-11-16 00:27:01 +04:00
# File triggers from grub packages will handle this.
#/usr/sbin/update-grub2
2013-11-16 00:27:01 +04:00
2024-07-27 08:25:53 +00:00
pushd /boot > /dev/null
if [ -L vmlinuz-%{flavour} ]; then
rm -f vmlinuz-%{flavour}
fi
if [ -L initrd-%{flavour}.img ]; then
rm -f initrd-%{flavour}.img
fi
popd > /dev/null
exit 0
%preun -n kernel-%{flavour}-%{buildrel}
pushd /boot > /dev/null
if [ -L vmlinuz-%{flavour} ]; then
if [ "$(readlink vmlinuz-%{flavour})" = "vmlinuz-%{kver_full}" ]; then
rm -f vmlinuz-%{flavour}
fi
fi
if [ -L initrd-%{flavour}.img ]; then
if [ "$(readlink initrd-%{flavour}.img)" = "initrd-%{kver_full}.img" ]; then
rm -f initrd-%{flavour}.img
fi
fi
2024-07-27 08:25:53 +00:00
# File triggers from grub packages will handle this.
#/usr/sbin/update-grub2
2024-07-27 08:25:53 +00:00
popd > /dev/null
exit 0
%postun -n kernel-%{flavour}-%{buildrel}
# Do not remove just installed kernel if package is being reinstalled
if [ "$1" -gt 0 ]; then exit 0; fi
rm -f /boot/initrd-%{kver_full}.img
rm -f /boot/initrd-%{kver_full}_old.img
rm -f /boot/initrd-%{kver_full}kdump.img
rm -f /boot/initramfs-%{kver_full}kdump.img
# Third-party modules might have left something in /lib/modules/.../kernel/.
rm -rf /lib/modules/%{kver_full}/kernel/
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}
############################################################################
2024-07-27 08:25:53 +00:00
%if %build_devel
%package -n kernel-%{flavour}-devel-%{buildrel}
Version: %{fakever}
Release: %{fakerel}
Summary: Development files for kernel-%{flavour}-%{buildrel}
Group: Development/Kernel
2024-07-27 08:25:53 +00:00
Requires: glibc-devel
Requires: ncurses-devel
Requires: make
2024-07-27 08:25:53 +00:00
Requires: gcc
Requires: perl
2024-07-27 08:25:53 +00:00
Requires(post): dkms
Requires(preun): dkms
Provides: kernel-devel = %{kverrel}
Provides: kernel-%{flavour}-devel = %{kverrel}
%ifarch %{ix86}
Conflicts: arch(x86_64)
2013-11-16 00:27:01 +04:00
%endif
2024-07-27 08:25:53 +00:00
%description -n kernel-%{flavour}-devel-%{buildrel}
This package contains the kernel files (headers and build tools)
that should be enough to build additional drivers for
use with kernel-%{flavour}-%{buildrel}.
2024-07-27 08:25:53 +00:00
%post -n kernel-%{flavour}-devel-%{buildrel}
/usr/sbin/dkms_autoinstaller start %{kver_full}
2024-07-27 08:25:53 +00:00
%preun -n kernel-%{flavour}-devel-%{buildrel}
for ii in $(/usr/sbin/dkms status -k %{kver_full} | awk '{ print $1 $2; }'); do
mod=$(echo $ii | awk -v FS=',' '{ print $1; }')
ver=$(echo $ii | awk -v FS=',' '{ print $2; }')
/usr/sbin/dkms --rpm_safe_upgrade uninstall -m $mod -v $ver -k %{kver_full} || true
done
# If any DKMS modules with REMAKE_INITRD=yes in their configs have been
# uninstalled, initrd has been regenerated for the given kernel. However,
# the kernel itself might have been uninstalled before, so that (defunct)
# initrd image files would be left behind. Remove them if the kernel itself
# is no longer installed. Should work if they are uninstalled in parallel
# too.
if ! test -f /boot/vmlinuz-%{kver_full}; then
rm -f /boot/initrd-%{kver_full}.img
rm -f /boot/initrd-%{kver_full}_old.img
fi
2024-07-27 08:25:53 +00:00
%postun -n kernel-%{flavour}-devel-%{buildrel}
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.
rm -rf /lib/modules/%{kver_full}/modules*
# Remove the dir if it is already empty.
find /lib/modules/%{kver_full} -maxdepth 0 -empty -exec rm -rf {} \; || true
2024-07-27 08:25:53 +00:00
%files -n kernel-%{flavour}-devel-%{buildrel}
%dir %{devel_root}
%dir %{devel_root}/arch
%dir %{devel_root}/include
2024-07-27 08:25:53 +00:00
%{devel_root}/Documentation
%{devel_root}/arch/um
2020-11-26 21:33:48 +00:00
%{devel_root}/arch/x86
%{devel_root}/block
%{devel_root}/certs
%{devel_root}/crypto
%{devel_root}/drivers
%{devel_root}/fs
%{devel_root}/include/acpi
%{devel_root}/include/asm-generic
%{devel_root}/include/clocksource
%{devel_root}/include/config
%{devel_root}/include/crypto
%{devel_root}/include/drm
%{devel_root}/include/dt-bindings
%{devel_root}/include/generated
%{devel_root}/include/keys
Update from 5.4 to 5.10.1 - rediffed most of patches, renamed files to easify further rediffs by git format-patch - thanks to abf.io/kernels_stable for some patches for kernel 5.9 - using unofficial patch for AUFS for kernel 5.10, there may be issues with stability, try to avoid using AUFS (I would have dropped it, but MagOS wants it very much) - pulled updates of AltHa from http://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un-def.git;a=history;f=security/altha;hb=HEAD - dropped patch adding sysctl to disable disk-based swap because it has not found any usage - bpf is now in the list of LSM modules (ability to write LSM modules as BPF programs), enable it, it is potentially useful and does not seem to be harmful - keeping kernel libc headers in older kernels for now - dropped building external virtualbox guest modules because they are now included into the mainline kernel - offed building VirtualBox host modules, I do not know how to keep these binary modules in sync with userspace part of VirtualBox, users can continue using dkms - offed building kernel-shredder because it is not buildable on kernel 5.10 - updated rtl8821ce and added a dependency from its "blacklist" subpackage here (see https://github.com/tomaspinho/rtl8821ce/commit/14b536f0) It is not clear if kernel 5.10 will receive an LTS support longer than 5.4 or not. Support until Dec, 2022 is declared right now at https://www.kernel.org/category/releases.html for 5.10 and until Dec, 2025 - for 5.4. TODO: update kernel configs TODO: solve problems with version of virtualbox host modules not matching version of the virtualbox package after virtualbox is updated but kernel is not rebuilt
2020-12-20 18:49:24 +03:00
%{devel_root}/include/kunit
2024-07-27 08:25:53 +00:00
%{devel_root}/include/kvm
%{devel_root}/include/linux
%{devel_root}/include/math-emu
%{devel_root}/include/media
Update from 5.4 to 5.10.1 - rediffed most of patches, renamed files to easify further rediffs by git format-patch - thanks to abf.io/kernels_stable for some patches for kernel 5.9 - using unofficial patch for AUFS for kernel 5.10, there may be issues with stability, try to avoid using AUFS (I would have dropped it, but MagOS wants it very much) - pulled updates of AltHa from http://git.altlinux.org/gears/k/kernel-image-un-def.git?p=kernel-image-un-def.git;a=history;f=security/altha;hb=HEAD - dropped patch adding sysctl to disable disk-based swap because it has not found any usage - bpf is now in the list of LSM modules (ability to write LSM modules as BPF programs), enable it, it is potentially useful and does not seem to be harmful - keeping kernel libc headers in older kernels for now - dropped building external virtualbox guest modules because they are now included into the mainline kernel - offed building VirtualBox host modules, I do not know how to keep these binary modules in sync with userspace part of VirtualBox, users can continue using dkms - offed building kernel-shredder because it is not buildable on kernel 5.10 - updated rtl8821ce and added a dependency from its "blacklist" subpackage here (see https://github.com/tomaspinho/rtl8821ce/commit/14b536f0) It is not clear if kernel 5.10 will receive an LTS support longer than 5.4 or not. Support until Dec, 2022 is declared right now at https://www.kernel.org/category/releases.html for 5.10 and until Dec, 2025 - for 5.4. TODO: update kernel configs TODO: solve problems with version of virtualbox host modules not matching version of the virtualbox package after virtualbox is updated but kernel is not rebuilt
2020-12-20 18:49:24 +03:00
%{devel_root}/include/memory
%{devel_root}/include/misc
%{devel_root}/include/net
%{devel_root}/include/pcmcia
%{devel_root}/include/ras
%{devel_root}/include/rdma
%{devel_root}/include/scsi
%{devel_root}/include/sound
%{devel_root}/include/target
%{devel_root}/include/trace
%{devel_root}/include/uapi
%{devel_root}/include/vdso
%{devel_root}/include/video
%{devel_root}/include/xen
%{devel_root}/init
%{devel_root}/ipc
%{devel_root}/kernel
%{devel_root}/lib
%{devel_root}/mm
%{devel_root}/net
%{devel_root}/samples
%{devel_root}/scripts
%{devel_root}/security
%{devel_root}/sound
%{devel_root}/tools
%{devel_root}/usr
%{devel_root}/virt
%{devel_root}/.config
%{devel_root}/Kbuild
%{devel_root}/Kconfig
%{devel_root}/Makefile
%{devel_root}/Module.symvers
%{devel_root}/arch/Kconfig
%{_modulesdir}/%{kver_full}/build
%{_modulesdir}/%{kver_full}/source
2024-12-11 15:46:11 +00:00
#/usr/src/linux-5.15.173-generic-1R11-x86_64/io_uring/Makefile
2024-12-12 11:10:09 +00:00
%{devel_root}/io_uring/*
2024-07-27 08:25:53 +00:00
%endif
############################################################################
2024-07-27 08:25:53 +00:00
%if %build_debug
%package -n kernel-%{flavour}-%{buildrel}-debuginfo
Version: %{fakever}
Release: %{fakerel}
Summary: Debuginfo for kernel-%{flavour}-%{buildrel}
Group: Development/Debug
Provides: kernel-debug = %{kverrel}
2024-07-27 08:25:53 +00:00
%ifarch %{ix86}
Conflicts: arch(x86_64)
%endif
%description -n kernel-%{flavour}-%{buildrel}-debuginfo
This package contains the files with debuginfo for kernel-%{flavour}-%{buildrel}.
%files -n kernel-%{flavour}-%{buildrel}-debuginfo -f kernel_debug_files.%{flavour}
%endif
############################################################################
2024-07-27 08:25:53 +00:00
%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}
2013-11-16 00:27:01 +04:00
2024-07-27 08:25:53 +00:00
%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}
%ifarch %{ix86}
Conflicts: arch(x86_64)
%endif
Provides: kernel-devel-latest
%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
############################################################################
%if %build_doc
%package -n kernel-doc
Version: %{kversion}
Release: %{fullrpmrel}
Summary: Various documentation bits found in the kernel source
Group: Documentation
Buildarch: noarch
%description -n kernel-doc
This package contains documentation files from the kernel source.
2024-07-27 08:25:53 +00:00
%files -n kernel-doc
%doc linux-%{tar_ver}/Documentation/*
2024-07-27 08:25:53 +00:00
2013-11-16 00:27:01 +04:00
%endif
############################################################################
2013-11-16 00:27:01 +04:00
%if %{build_perf}
%package -n perf
2024-07-27 08:25:53 +00:00
Version: %{kversion}
Release: %{fullrpmrel}
2013-11-16 00:27:01 +04:00
Summary: perf tool and the supporting documentation
Group: System/Kernel and hardware
%description -n perf
The package contains perf tool and the supporting documentation.
%files -n perf
%{_bindir}/perf
%ifarch x86_64
%{_bindir}/perf-read-vdso32
2013-11-16 00:27:01 +04:00
%endif
%{_bindir}/trace
%dir %{_prefix}/libexec/perf-core
%dir %{_libdir}/traceevent
%dir %{_libdir}/traceevent/plugins
%{_libdir}/traceevent/plugins/*
%{_prefix}/libexec/perf-core/*
%{_mandir}/man[1-8]/perf*
%{_sysconfdir}/bash_completion.d/perf
%{_datadir}/perf-core/strace/groups/*
%{_datadir}/doc/perf-tip/*.txt
/usr/lib/perf/examples/bpf/*
/usr/lib/perf/include/bpf/*
2024-07-27 08:25:53 +00:00
%endif
############################################################################
2013-11-16 00:27:01 +04:00
%if %{build_cpupower}
%package -n cpupower
2024-07-27 08:25:53 +00:00
Version: %{kversion}
Release: %{fullrpmrel}
Summary: The cpupower tools
2013-11-16 00:27:01 +04:00
Group: System/Kernel and hardware
2024-07-27 08:25:53 +00:00
Requires(post): rpm-helper >= 0.24.0-3
Requires(preun): rpm-helper >= 0.24.0-3
Obsoletes: cpufreq < 3.0
Obsoletes: cpufrequtils < 10.0
2013-11-16 00:27:01 +04:00
%description -n cpupower
The cpupower tools.
2013-11-16 00:27:01 +04:00
%post -n cpupower
2024-07-27 08:25:53 +00:00
if [ $1 -ge 0 ]; then
# Do not enable/disable cpupower.service directly, because it should start
# when cpupower.path triggers it.
/bin/systemctl enable cpupower.path >/dev/null 2>&1 || :
/bin/systemctl start cpupower.path >/dev/null 2>&1 || :
2014-04-01 15:25:39 +04:00
fi
2013-11-16 00:27:01 +04:00
%preun -n cpupower
2014-04-01 15:25:39 +04:00
if [ $1 -eq 0 ]; then
2024-07-27 08:25:53 +00:00
/bin/systemctl --no-reload disable cpupower.path > /dev/null 2>&1 || :
/bin/systemctl stop cpupower.path > /dev/null 2>&1 || :
2014-04-01 15:25:39 +04:00
fi
2013-11-16 00:27:01 +04:00
%files -n cpupower -f cpupower.lang
%{_bindir}/cpupower
%{_bindir}/cpupower-start.sh
%{_libdir}/libcpupower.so.0
%{_libdir}/libcpupower.so.0.0.1
%{_unitdir}/cpupower.service
%{_unitdir}/cpupower.path
%{_datadir}/bash-completion/completions/cpupower
%{_mandir}/man[1-8]/cpupower*
2024-07-27 08:25:53 +00:00
%config(noreplace) %{_sysconfdir}/sysconfig/cpupower
############################################################################
2013-11-16 00:27:01 +04:00
%package -n cpupower-devel
2024-07-27 08:25:53 +00:00
Version: %{kversion}
Release: %{fullrpmrel}
Summary: Development files for cpupower
2013-11-16 00:27:01 +04:00
Group: Development/Kernel
2024-07-27 08:25:53 +00:00
Requires: cpupower = %{kversion}-%{fullrpmrel}
2013-11-16 00:27:01 +04:00
Conflicts: %{_lib}cpufreq-devel
%description -n cpupower-devel
This package contains the development files for cpupower.
%files -n cpupower-devel
%{_libdir}/libcpupower.so
%{_includedir}/cpufreq.h
2024-07-27 08:25:53 +00:00
2013-11-16 00:27:01 +04:00
%endif
############################################################################
%if %{build_headers}
2024-07-27 08:25:53 +00:00
%package headers
Version: %kversion
Release: %fullrpmrel
2013-11-16 00:27:01 +04:00
Summary: Linux kernel header files mostly used by your C library
Group: System/Kernel and hardware
2024-07-27 08:25:53 +00:00
Epoch: 1
%rename linux-userspace-headers
2013-11-16 00:27:01 +04:00
2024-07-27 08:25:53 +00:00
%description headers
2013-11-16 00:27:01 +04:00
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.
This package is not suitable for building kernel modules, you
should use the 'kernel-devel' package instead.
2024-07-27 08:25:53 +00:00
%files headers
%_includedir/*
2013-11-16 00:27:01 +04:00
# Don't conflict with cpupower-devel
%if %{build_cpupower}
2024-07-27 08:25:53 +00:00
%exclude %_includedir/cpufreq.h
%endif
%endif
2013-11-16 00:27:01 +04:00
############################################################################
2013-11-16 00:27:01 +04:00
%prep
2024-07-27 08:25:53 +00:00
%setup -q -n %top_dir_name -c
cd %src_dir
2013-11-16 00:27:01 +04:00
2024-07-27 08:25:53 +00:00
%apply_patches
2013-11-16 00:27:01 +04:00
#
# Setup Begin
#
# Kernel configuration
echo "Creating the kernel configuration file."
Revisited the set of kernel flavours and the generation of config files Until now, the build system for the kernel supported a number of flavours: nrj and non-nrj ones, desktop-, laptop-, server- and netbook-oriented, etc. It turned out over the years, however, that our users mostly need the following: * a kernel to use on the desktops (home and office use) with reasonable default settings for performance and responsiveness; * a kernel for laptops, with a bit more emphasis on power consumption. Other variants were rarely used. We also did not have enough time to properly support all these. Besides, the kernels for ARM and other architectures need a somewhat different build process than for x86. So, they are better off to be in separate ABF projects, even if they are needed. No signs of ROSA on ARM yet, btw. So, I kept only nrj-desktop and nrj-laptop flavours and only x86. Non-PAE systems also seem to be rare now, so I enabled PAE by default for the 32-bit kernels. Non-PAE kernels are no longer built. If they are needed, we may use a separate git branch or an ABF project for that. To simplify debugging, maintenance and experimentation with the kernel builds further, I revisited the process of preparing the kernel configuration files. The goal is to get rid of a separate git repo with the default configs (kernel-patches-and-configs) and keep everything in this project. The default config files are now kept here. For x86_64: * kernel-x86_64.config contains the options for both nrj-desktop and nrn-laptop flavours; * kernel-{nrj_desktop|nrj_laptop}-x86_64.config files contain the flavour-specific options. This way, it is easier to track which config options changed when, easier to experiment with the custom configs and so on. The kernel will be built with debug info if rpmbuild is called with "--with debug".
2016-07-21 13:56:25 +03:00
# Configs
2024-07-27 08:25:53 +00:00
cp %{SOURCE110} .config
2013-11-16 00:27:01 +04:00
2024-07-27 08:25:53 +00:00
# Disable ASLR for 32-bit systems because it does not play well with
# hibernate.
%ifarch %{ix86}
sed -i 's/CONFIG_RANDOMIZE_BASE=y/# CONFIG_RANDOMIZE_BASE is not set/' .config
%endif
2024-07-27 08:25:53 +00:00
# Disable checking for W+X memory mappings for 32-bit systems. The warnings
# may confuse the users and noone is eager to fix the underlying problem,
# it seems.
%ifarch %{ix86}
sed -i 's/CONFIG_DEBUG_WX=y/# CONFIG_DEBUG_WX is not set/' .config
%endif
2024-07-27 08:25:53 +00:00
# GCC 5.5 may not support -fstack-protector-* on 32-bit systems.
# Let us disable the stack protector in the config explicitly.
%ifarch %{ix86}
sed -i 's/CONFIG_STACKPROTECTOR=y/# CONFIG_STACKPROTECTOR is not set/' .config
sed -i 's/CONFIG_STACKPROTECTOR_STRONG=y/# CONFIG_STACKPROTECTOR_STRONG is not set/' .config
%endif
2020-03-13 20:35:12 +03:00
2024-07-27 08:25:53 +00:00
# Enable debug info if requested.
%if %build_debug
sed -i 's/# CONFIG_DEBUG_INFO is not set/CONFIG_DEBUG_INFO=y\nCONFIG_DEBUG_INFO_DWARF4=y\nCONFIG_GDB_SCRIPTS=y/' .config
%endif
2024-07-27 08:25:53 +00:00
%if %{enhanced_security}
# seems to be needed to boot system in enforcing selinux mode
# note: cpio fpormat of initramfs does not support xattrs without patches
# see also: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1680315
sed -i '/CONFIG_SECURITY_SELINUX_DISABLE/d' .config
echo CONFIG_SECURITY_SELINUX_DISABLE=y >> .config
# enable selinux in kernel by default if not disabled explicitly
sed -i '/CONFIG_SECURITY_SELINUX_BOOTPARAM/d' .config
echo CONFIG_SECURITY_SELINUX_BOOTPARAM=y >> .config
%endif
# Store the config file in the appropriate directory.
2024-07-27 08:25:53 +00:00
CONFIG_DIR=arch/x86/configs
Revisited the set of kernel flavours and the generation of config files Until now, the build system for the kernel supported a number of flavours: nrj and non-nrj ones, desktop-, laptop-, server- and netbook-oriented, etc. It turned out over the years, however, that our users mostly need the following: * a kernel to use on the desktops (home and office use) with reasonable default settings for performance and responsiveness; * a kernel for laptops, with a bit more emphasis on power consumption. Other variants were rarely used. We also did not have enough time to properly support all these. Besides, the kernels for ARM and other architectures need a somewhat different build process than for x86. So, they are better off to be in separate ABF projects, even if they are needed. No signs of ROSA on ARM yet, btw. So, I kept only nrj-desktop and nrj-laptop flavours and only x86. Non-PAE systems also seem to be rare now, so I enabled PAE by default for the 32-bit kernels. Non-PAE kernels are no longer built. If they are needed, we may use a separate git branch or an ABF project for that. To simplify debugging, maintenance and experimentation with the kernel builds further, I revisited the process of preparing the kernel configuration files. The goal is to get rid of a separate git repo with the default configs (kernel-patches-and-configs) and keep everything in this project. The default config files are now kept here. For x86_64: * kernel-x86_64.config contains the options for both nrj-desktop and nrn-laptop flavours; * kernel-{nrj_desktop|nrj_laptop}-x86_64.config files contain the flavour-specific options. This way, it is easier to track which config options changed when, easier to experiment with the custom configs and so on. The kernel will be built with debug info if rpmbuild is called with "--with debug".
2016-07-21 13:56:25 +03:00
mkdir -p "${CONFIG_DIR}"
2024-07-27 08:25:53 +00:00
cfg_file=arch/x86/configs/%{arch_suffix}_defconfig-%{flavour}
make ARCH=%{_arch} oldconfig && \
mv .config ${cfg_file}
2024-07-27 08:25:53 +00:00
# Looks like 'make oldconfig' removes '# CONFIG_64BIT is not set' for some
# reason. For now, let us restore it.
%ifarch %{ix86}
sed -i 's/CONFIG_64BIT=y//' ${cfg_file}
echo '# CONFIG_64BIT is not set' >> ${cfg_file}
%endif
echo "Created ${cfg_file}."
2024-07-27 08:25:53 +00:00
# make sure the kernel has the sublevel we know it has...
LC_ALL=C sed -ri "s/^SUBLEVEL.*/SUBLEVEL = %{sublevel}/" Makefile
2013-11-16 00:27:01 +04:00
2024-07-27 08:25:53 +00:00
# get rid of unwanted files
2013-11-16 00:27:01 +04:00
find . -name '*~' -o -name '*.orig' -o -name '*.append' | %kxargs rm -f
find . -name '.get_maintainer.ignore' | %kxargs rm -f
2013-11-16 00:27:01 +04:00
2024-07-27 08:25:53 +00:00
# gen certs
#scripts/config --disable SYSTEM_TRUSTED_KEYS
#scripts/config --disable SYSTEM_REVOCATION_KEYS
############################################################################
2013-11-16 00:27:01 +04:00
%build
2019-11-11 22:27:50 +03:00
rm -rf %{temp_root}
install -d %{temp_root}
2013-11-16 00:27:01 +04:00
2024-07-27 08:25:53 +00:00
cd %src_dir
2019-11-11 17:47:53 +03:00
# .config
%smake -s mrproper
2024-07-27 08:25:53 +00:00
cp arch/x86/configs/%{arch_suffix}_defconfig-%{flavour} .config
# off certs
#scripts/config --disable SYSTEM_TRUSTED_KEYS
#scripts/config --disable SYSTEM_REVOCATION_KEYS
#scripts/config --disable CONFIG_CHECK_SIGNATURE
# gen cert
#openssl req -x509 -newkey rsa:4096 -keyout certs/signing_key_priv.key -out certs/signing_key.x509 -nodes -days 3650 -subj "/C=RU/ST=Saint-Petersburg/L=Saint-Petersburg/O=R11 ORG/OU=IT Department/CN=r11.org.ru"
#scripts/config --enable CONFIG_MODULE_SIG_KEY="certs/signing_key.x509"
#scripts/config --enable CONFIG_SYSTEM_TRUSTED_KEYRING=y
#scripts/config --enable CONFIG_SYSTEM_TRUSTED_KEYS="certs/signing_key_priv.key"
#scripts/config --enable CONFIG_SYSTEM_EXTRA_CERTIFICATE=y
#scripts/config --enable CONFIG_SYSTEM_EXTRA_CERTIFICATE_SIZE=4096
#scripts/config --enable CONFIG_SECONDARY_TRUSTED_KEYRING=y
#scripts/config --enable CONFIG_SYSTEM_BLACKLIST_KEYRING=y
#scripts/config --enable CONFIG_SYSTEM_BLACKLIST_HASH_LIST=""
scripts/config --disable CONFIG_CHECK_SIGNATURE
scripts/config --set-str SYSTEM_TRUSTED_KEYS ""
scripts/config --set-str SYSTEM_REVOCATION_KEYS ""
scripts/config --set-str CONFIG_MODULE_SIG_KEY ""
# make sure EXTRAVERSION says what we want it to say
LC_ALL=C sed -ri "s/^EXTRAVERSION.*/EXTRAVERSION = -%{flavour}-%{buildrpmrel}/" Makefile
2013-11-16 00:27:01 +04:00
2020-07-29 10:59:41 +03:00
2024-07-27 08:25:53 +00:00
#scripts/config --disable CONFIG_CHECK_SIGNATURE
2020-07-29 10:59:41 +03:00
2024-07-27 08:25:53 +00:00
# build the kernel
echo "Building kernel %{kver_full}"
2024-07-27 08:25:53 +00:00
%kmake -s all
2020-03-13 20:35:12 +03:00
2024-07-27 08:25:53 +00:00
# Start installing stuff
install -d %{temp_boot}
install -m 644 System.map %{temp_boot}/System.map-%{kver_full}
install -m 644 .config %{temp_boot}/config-%{kver_full}
xz -c Module.symvers > %{temp_boot}/symvers-%{kver_full}.xz
2013-11-16 00:27:01 +04:00
2024-07-27 08:25:53 +00:00
cp -f arch/x86/boot/bzImage %{temp_boot}/vmlinuz-%{kver_full}
2021-04-06 19:36:12 +00:00
2024-07-27 08:25:53 +00:00
# modules
install -d %{temp_modules}/%{kver_full}
%smake INSTALL_MOD_PATH=%{temp_root} KERNELRELEASE=%{kver_full} INSTALL_MOD_STRIP=1 modules_install
2013-11-16 00:27:01 +04:00
2024-07-27 08:25:53 +00:00
# headers
%if %{build_headers}
%make INSTALL_HDR_PATH=%{temp_root}%{_prefix} KERNELRELEASE=%{kver_full} headers_install
find %{temp_root}%{_prefix} -name .install -or -name ..install.cmd | %kxargs rm -f
2013-11-16 00:27:01 +04:00
%endif
2024-07-27 08:25:53 +00:00
# remove /lib/firmware, we use a separate linux-firmware package
rm -rf %{temp_root}/lib/firmware
# Prepare the files for kernel*-devel
2024-07-27 08:25:53 +00:00
%if %build_devel
mkdir -p %{temp_devel_root}
for i in $(find . -name 'Makefile*'); do cp -R --parents $i %{temp_devel_root}; done
for i in $(find . -name 'Kconfig*' -o -name 'Kbuild*'); do cp -R --parents $i %{temp_devel_root}; done
2013-11-16 00:27:01 +04:00
cp -fR include %{temp_devel_root}
cp -fR scripts %{temp_devel_root}
cp -fR kernel/bounds.c %{temp_devel_root}/kernel
cp -fR kernel/time/timeconst.bc %{temp_devel_root}/kernel/time
cp -fR tools %{temp_devel_root}/
2024-07-27 08:25:53 +00:00
cp -fR arch/x86/kernel/asm-offsets.{c,s} %{temp_devel_root}/arch/x86/kernel/
cp -fR arch/x86/kernel/asm-offsets_{32,64}.c %{temp_devel_root}/arch/x86/kernel/
cp -fR arch/x86/purgatory/* %{temp_devel_root}/arch/x86/purgatory/
cp -fR arch/x86/entry/syscalls/syscall* %{temp_devel_root}/arch/x86/entry/syscalls/
cp -fR arch/x86/include %{temp_devel_root}/arch/x86/
cp -fR arch/x86/tools %{temp_devel_root}/arch/x86/
cp -fR .config Module.symvers %{temp_devel_root}
# Needed for truecrypt build (Danny)
cp -fR drivers/md/dm.h %{temp_devel_root}/drivers/md/
2013-11-16 00:27:01 +04:00
# Needed for lirc_gpio (#39004)
cp -fR drivers/media/pci/bt8xx/bttv{,p}.h %{temp_devel_root}/drivers/media/pci/bt8xx/
cp -fR drivers/media/pci/bt8xx/bt848.h %{temp_devel_root}/drivers/media/pci/bt8xx/
cp -fR drivers/media/common/btcx-risc.h %{temp_devel_root}/drivers/media/common/
2024-07-27 08:25:53 +00:00
# add acpica header files, needed for fglrx build
cp -fR drivers/acpi/acpica/*.h %{temp_devel_root}/drivers/acpi/acpica/
2013-11-16 00:27:01 +04:00
# aufs2 has a special file needed
2024-07-27 23:24:12 +00:00
#cp -fR fs/aufs/magic.mk %{temp_devel_root}/fs/aufs
2013-11-16 00:27:01 +04:00
# SELinux needs security/selinux/include
cp -fR security/selinux/include %{temp_devel_root}/security/selinux
2013-11-16 00:27:01 +04:00
2024-07-27 08:25:53 +00:00
# needed for kexec
cp -fR arch/x86/boot/*.h %{temp_devel_root}/arch/x86/boot/
cp -fR arch/x86/boot/*.c %{temp_devel_root}/arch/x86/boot/
# needed for arch/x86/purgatory
cp -fR lib/*.h lib/*.c %{temp_devel_root}/lib/
for i in alpha arc avr32 blackfin c6x cris csky frv h8300 hexagon ia64 m32r m68k m68knommu metag microblaze \
mips mn10300 nds32 nios2 openrisc parisc powerpc riscv s390 score sh sparc tile unicore32 xtensa; do
rm -rf %{temp_devel_root}/arch/$i
done
2013-11-16 00:27:01 +04:00
2024-07-27 08:25:53 +00:00
rm -rf %{temp_devel_root}/arch/arm*
rm -rf %{temp_devel_root}/include/kvm/arm*
rm -rf %{temp_devel_root}/include/soc
# Clean the scripts tree, and make sure everything is ok (sanity check)
# running prepare+scripts (tree was already "prepared" in build)
2024-07-27 08:25:53 +00:00
pushd %{temp_devel_root} >/dev/null
%smake -s prepare scripts
%smake -s clean
popd >/dev/null
rm -f %{temp_devel_root}/.config.old
2013-11-16 00:27:01 +04:00
2024-07-27 08:25:53 +00:00
# fix permissions
chmod -R a+rX %{temp_devel_root}
2013-11-16 00:27:01 +04:00
2024-07-27 08:25:53 +00:00
# disable mrproper in -devel rpms
2024-07-28 10:50:35 +00:00
#patch -p1 --fuzz=0 -d %{temp_devel_root} -i %{SOURCE2}
2024-07-27 08:25:53 +00:00
# Create the symlinks needed by DKMS
mkdir -p %{temp_modules}/%{kver_full}
# endif build_devel
2013-11-16 00:27:01 +04:00
%endif
2024-07-27 08:25:53 +00:00
# Manage the files with debug info, provide the debug links in the
# kernel modules.
%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
2013-11-16 00:27:01 +04:00
find %{temp_modules}/%{kver_full}/kernel \
-name "*.ko" | \
%kxargs -I '{}' objcopy --only-keep-debug '{}' '{}'.debug
find %{temp_modules}/%{kver_full}/kernel \
-name "*.ko" | %kxargs -I '{}' \
sh -c 'cd `dirname {}`; \
objcopy --add-gnu-debuglink=`basename {}`.debug \
--strip-debug `basename {}`'
2024-07-27 08:25:53 +00:00
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
2024-07-27 08:25:53 +00:00
# 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}.xz
%{_bootdir}/config-%{kver_full}
%{_bootdir}/vmlinuz-%{kver_full}
%{_modulesdir}/%{kver_full}/kernel
%{_modulesdir}/%{kver_full}/modules.*
EOF
%if %build_debug
cat ../kernel_exclude_debug_files.%{flavour} >> $kernel_files
2020-03-13 20:35:12 +03:00
%endif
2019-11-13 17:35:59 +03:00
2024-07-27 08:25:53 +00:00
# set extraversion to match srpm to get nice version reported by the tools
LC_ALL=C sed -ri "s/^EXTRAVERSION.*/EXTRAVERSION = -%{fullrpmrel}/" Makefile
2013-11-16 00:27:01 +04:00
%if %{build_perf}
2024-07-27 08:25:53 +00:00
%ifarch x86_64
%define perf_is_x64 1
%else
%define perf_is_x64 0
%endif
%smake -C tools/perf -s IS_X86_64=%{perf_is_x64} HAVE_CPLUS_DEMANGLE=1 prefix=%{_prefix} NO_GTK2=1 all
%smake -C tools/perf -s prefix=%{_prefix} NO_GTK2=1 man
2013-11-16 00:27:01 +04:00
%endif
%if %{build_cpupower}
2024-07-27 08:25:53 +00:00
# make sure version-gen.sh is executable.
2013-11-16 00:27:01 +04:00
chmod +x tools/power/cpupower/utils/version-gen.sh
%make -C tools/power/cpupower CPUFREQ_BENCH=false
2013-11-16 00:27:01 +04:00
%endif
############################################################################
2013-11-16 00:27:01 +04:00
%install
2024-07-27 08:25:53 +00:00
cd %src_dir
2013-11-16 00:27:01 +04:00
# We want to be able to test several times the install part
rm -rf %{buildroot}
cp -a %{temp_root} %{buildroot}
2024-07-27 08:25:53 +00:00
# compressing modules
%if %{build_modxz}
find %{target_modules} -name "*.ko" | %kxargs xz -6e
%else
2024-07-27 08:25:53 +00:00
find %{target_modules} -name "*.ko" | %kxargs gzip -9
%endif
pushd %{target_modules}
for i in *; do
rm -f $i/build $i/source
ln -sf /usr/src/linux-$i $i/build
ln -sf /usr/src/linux-$i $i/source
done
2024-07-27 08:25:53 +00:00
# sniff, if we compressed all the modules, we change the stamp :(
2013-11-16 00:27:01 +04:00
# we really need the depmod -ae here
for i in *; do
/sbin/depmod -ae -b %{buildroot} -F %{target_boot}/System.map-$i $i
echo $?
done
# We used to create modules.description files which contained the
# description strings for the modules as shown by modinfo. These files
# are unlikely to be used right now, so create them (in case some old tool
# checks for their existence) but keep them empty.
2013-11-16 00:27:01 +04:00
for i in *; do
touch $i/modules.description
2013-11-16 00:27:01 +04:00
done
popd
2024-07-27 08:25:53 +00:00
# need to set extraversion to match srpm again to avoid rebuild
LC_ALL=C sed -ri "s/^EXTRAVERSION.*/EXTRAVERSION = -%{fullrpmrel}/" Makefile
%if %{build_perf}
2013-11-16 00:27:01 +04:00
2024-07-27 08:25:53 +00:00
# perf tool binary and supporting scripts/binaries
make -C tools/perf -s V=1 DESTDIR=%{buildroot} IS_X86_64=%{perf_is_x64} HAVE_CPLUS_DEMANGLE=1 prefix=%{_prefix} install
2020-05-11 09:33:18 +03:00
2024-07-27 08:25:53 +00:00
# perf man pages (note: implicit rpm magic compresses them later)
make -C tools/perf -s V=1 DESTDIR=%{buildroot} IS_X86_64=%{perf_is_x64} HAVE_CPLUS_DEMANGLE=1 prefix=%{_prefix} install-man
2013-11-16 00:27:01 +04:00
%endif
%if %{build_cpupower}
make -C tools/power/cpupower DESTDIR=%{buildroot} libdir=%{_libdir} mandir=%{_mandir} CPUFREQ_BENCH=false install
2013-11-16 00:27:01 +04:00
rm -f %{buildroot}%{_libdir}/*.{a,la}
%find_lang cpupower
mv cpupower.lang ../
chmod 0755 %{buildroot}%{_libdir}/libcpupower.so*
mkdir -p %{buildroot}%{_unitdir} %{buildroot}%{_sysconfdir}/sysconfig
install -m644 %{SOURCE50} %{buildroot}%{_unitdir}/cpupower.service
install -m644 %{SOURCE53} %{buildroot}%{_unitdir}/cpupower.path
2013-11-16 00:27:01 +04:00
install -m644 %{SOURCE51} %{buildroot}%{_sysconfdir}/sysconfig/cpupower
install -m755 %{SOURCE52} %{buildroot}%{_bindir}/cpupower-start.sh
2013-11-16 00:27:01 +04:00
%endif
2024-07-28 23:15:16 +00:00
# rm
2024-12-11 15:46:11 +00:00
#rm -rf %{buildroot}/usr/src/linux-5.15.161-generic-1R11-x86_64/io_uring/Makefile