2024-07-27 08:25:53 +00:00
|
|
|
%define kernelversion 5
|
|
|
|
%define patchlevel 15
|
|
|
|
# sublevel is used for stable-based kernels
|
|
|
|
%define sublevel 161
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2016-07-22 22:05:03 +03: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}
|
2020-03-18 22:20:03 +03:00
|
|
|
|
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}
|
2021-05-03 18:21:14 +03:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# Kernel flavour
|
2024-07-27 08:25:53 +00:00
|
|
|
%define flavour generic
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# The full kernel version
|
2024-07-27 08:25:53 +00:00
|
|
|
%define kver_full %{kversion}-%{flavour}-%{buildrpmrel}
|
2019-07-16 18:30:53 +03:00
|
|
|
############################################################################
|
|
|
|
|
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}
|
2019-07-16 18:30:53 +03:00
|
|
|
|
|
|
|
# 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}
|
Delete old initrds by RPM
After moving to dnf (installonlypkg(kernel)) schema of packaging the kernel,
the %%postun scriptlet stopped working properly because $1 is the number
of packages left after the transaction, and there are multiple
kernels - packages with the same name but of different version/release - left.
Let's just make initrd be %%ghost as Fedora (but increase its size from Fedora's 20 MiB to 65 MiB),
and drop deleting empty directories etc. Recent commit fixed ownership of directories,
now /lib/modules/kernel_version is owned by RPM (it was not), dkms will remove modules
that it built, and, if anything else was left, then let's just not touch it, why must we delete
what we know nothing about?
Also delete scriptlet in the devel subpackage, that scriptlet would probably cause problems
with reinstalling the devel package.
2021-05-24 21:10:00 +03:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# 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}
|
2019-07-16 18:30:53 +03:00
|
|
|
|
|
|
|
# Directories definition needed for installing
|
2024-07-27 08:25:53 +00:00
|
|
|
%define target_boot %{buildroot}%{_bootdir}
|
|
|
|
%define target_modules %{buildroot}%{_modulesdir}
|
2016-07-29 13:39:16 +03:00
|
|
|
############################################################################
|
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}
|
2022-03-09 19:02:02 +01:00
|
|
|
|
2016-07-21 15:59:26 +03:00
|
|
|
%if !%{build_debug}
|
|
|
|
# Disable debug rpms.
|
2024-07-27 08:25:53 +00:00
|
|
|
%define _enable_debug_packages %{nil}
|
|
|
|
%define debug_package %{nil}
|
2016-07-21 15:59:26 +03:00
|
|
|
%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
|
2019-07-16 18:30:53 +03:00
|
|
|
# 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
|
|
|
|
2015-03-17 20:53:12 +03:00
|
|
|
# Cpupower: the service, the config, etc.
|
2022-03-15 17:03:05 +03:00
|
|
|
Source50: cpupower.service
|
|
|
|
Source51: cpupower.config
|
|
|
|
Source52: cpupower-start.sh
|
|
|
|
Source53: cpupower.path
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2022-03-15 17:03:05 +03:00
|
|
|
Source80: kernel.rpmlintrc
|
2016-07-26 11:24:24 +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
|
|
|
|
2013-11-16 00:27:01 +04:00
|
|
|
# Patches
|
|
|
|
|
2016-07-22 22:05:03 +03:00
|
|
|
# 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
|
2019-07-16 18:30:53 +03:00
|
|
|
|
|
|
|
# Patches from mainline
|
|
|
|
# none
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2016-07-26 11:24:24 +03: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
|
2016-07-26 11:24:24 +03:00
|
|
|
|
|
|
|
# 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
|
2016-07-26 11:24:24 +03:00
|
|
|
|
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
|
|
|
|
2022-03-09 19:02:02 +01: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
|
2014-05-19 18:34:31 +04:00
|
|
|
%endif
|
|
|
|
|
2024-07-27 08:25:53 +00:00
|
|
|
# for perf, cpufreq and all other tools
|
|
|
|
# for cpupower
|
2014-07-11 16:00:31 +04:00
|
|
|
%if %{build_cpupower}
|
2024-07-27 08:25:53 +00:00
|
|
|
BuildRequires: pciutils-devel
|
2014-07-11 16:00:31 +04:00
|
|
|
%endif
|
2024-07-27 08:25:53 +00:00
|
|
|
# for perf
|
2014-07-11 16:00:31 +04:00
|
|
|
%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
|
2020-12-30 21:25:08 +03:00
|
|
|
|
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
|
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
%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}
|
2019-07-16 18:30:53 +03:00
|
|
|
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}
|
2019-07-16 18:30:53 +03:00
|
|
|
# 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
|
|
|
|
2019-07-16 18:30:53 +03: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
|
2021-10-17 00:46:32 +03:00
|
|
|
fi
|
|
|
|
|
2024-07-27 08:25:53 +00:00
|
|
|
# File triggers from grub packages will handle this.
|
|
|
|
#/usr/sbin/update-grub2
|
2021-10-17 00:46:32 +03:00
|
|
|
|
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}
|
2019-07-16 18:30:53 +03:00
|
|
|
|
|
|
|
############################################################################
|
|
|
|
|
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}
|
2019-07-16 18:30:53 +03:00
|
|
|
Group: Development/Kernel
|
2024-07-27 08:25:53 +00:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
Requires: glibc-devel
|
|
|
|
Requires: ncurses-devel
|
2022-03-09 19:02:02 +01:00
|
|
|
Requires: make
|
2024-07-27 08:25:53 +00:00
|
|
|
Requires: gcc
|
2019-07-16 18:30:53 +03:00
|
|
|
Requires: perl
|
2024-07-27 08:25:53 +00:00
|
|
|
Requires(post): dkms
|
|
|
|
Requires(preun): dkms
|
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
Provides: kernel-devel = %{kverrel}
|
2019-11-17 15:12:03 +03:00
|
|
|
Provides: kernel-%{flavour}-devel = %{kverrel}
|
2021-04-22 16:04:36 +03:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
%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}.
|
2022-03-09 19:02:02 +01:00
|
|
|
|
2024-07-27 08:25:53 +00:00
|
|
|
%post -n kernel-%{flavour}-devel-%{buildrel}
|
|
|
|
/usr/sbin/dkms_autoinstaller start %{kver_full}
|
2019-07-16 18:30:53 +03:00
|
|
|
|
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
|
2019-11-12 16:16:27 +03:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# 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
|
2020-03-18 22:20:03 +03:00
|
|
|
|
2022-03-09 19:02:02 +01:00
|
|
|
|
2024-07-27 08:25:53 +00:00
|
|
|
%files -n kernel-%{flavour}-devel-%{buildrel}
|
2019-07-16 18:30:53 +03:00
|
|
|
%dir %{devel_root}
|
|
|
|
%dir %{devel_root}/arch
|
|
|
|
%dir %{devel_root}/include
|
2024-07-27 08:25:53 +00:00
|
|
|
%{devel_root}/Documentation
|
2019-07-16 18:30:53 +03:00
|
|
|
%{devel_root}/arch/um
|
2020-11-26 21:33:48 +00:00
|
|
|
%{devel_root}/arch/x86
|
2019-07-16 18:30:53 +03:00
|
|
|
%{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
|
2019-07-16 18:30:53 +03:00
|
|
|
%{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
|
2019-07-16 18:30:53 +03:00
|
|
|
%{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
|
2019-09-24 18:37:26 +03:00
|
|
|
%{devel_root}/include/vdso
|
2019-07-16 18:30:53 +03:00
|
|
|
%{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-07-27 08:25:53 +00:00
|
|
|
|
2022-03-09 19:02:02 +01:00
|
|
|
%endif
|
2019-07-16 18:30:53 +03:00
|
|
|
|
|
|
|
############################################################################
|
|
|
|
|
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}
|
2019-07-16 18:30:53 +03:00
|
|
|
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}
|
2019-07-16 18:30:53 +03:00
|
|
|
|
2022-03-09 19:02:02 +01:00
|
|
|
%endif
|
2019-07-16 18:30:53 +03:00
|
|
|
|
|
|
|
############################################################################
|
|
|
|
|
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
|
2019-07-16 18:30:53 +03:00
|
|
|
This package contains documentation files from the kernel source.
|
|
|
|
|
2024-07-27 08:25:53 +00:00
|
|
|
%files -n kernel-doc
|
2019-07-21 21:43:25 +03:00
|
|
|
%doc linux-%{tar_ver}/Documentation/*
|
2024-07-27 08:25:53 +00:00
|
|
|
|
2013-11-16 00:27:01 +04:00
|
|
|
%endif
|
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
############################################################################
|
|
|
|
|
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
|
2019-07-16 18:30:53 +03:00
|
|
|
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
|
2019-07-16 18:30:53 +03:00
|
|
|
%{_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
|
|
|
|
2019-07-16 18:30:53 +03: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}
|
2014-10-14 13:22:01 +04:00
|
|
|
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
|
2014-10-14 13:22:01 +04:00
|
|
|
The cpupower tools.
|
2013-11-16 00:27:01 +04:00
|
|
|
|
|
|
|
%post -n cpupower
|
2024-07-27 08:25:53 +00:00
|
|
|
|
2014-04-18 15:05:40 +04:00
|
|
|
if [ $1 -ge 0 ]; then
|
2015-03-17 20:53:12 +03:00
|
|
|
# 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
|
|
|
|
2019-07-16 18:30:53 +03: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
|
2019-07-16 18:30:53 +03:00
|
|
|
|
|
|
|
############################################################################
|
|
|
|
|
2013-11-16 00:27:01 +04:00
|
|
|
%package -n cpupower-devel
|
2024-07-27 08:25:53 +00:00
|
|
|
Version: %{kversion}
|
|
|
|
Release: %{fullrpmrel}
|
2014-10-14 13:22:01 +04:00
|
|
|
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.
|
2019-07-16 18:30:53 +03:00
|
|
|
|
|
|
|
%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
|
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
############################################################################
|
|
|
|
|
2018-09-04 11:17:26 +03:00
|
|
|
%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
|
2022-03-23 12:00:37 +03:00
|
|
|
%endif
|
2018-09-04 11:17:26 +03:00
|
|
|
%endif
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2019-07-16 18:30:53 +03: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
|
|
|
|
#
|
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# 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
|
2019-11-21 21:17:42 +03:00
|
|
|
%endif
|
2020-12-30 19:47:16 +03:00
|
|
|
|
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
|
2020-03-18 22:20:03 +03:00
|
|
|
%endif
|
2020-03-16 23:19:46 +03:00
|
|
|
|
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
|
2022-03-09 19:02:02 +01:00
|
|
|
|
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
|
2022-03-09 19:02:02 +01:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# 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 && \
|
2019-07-16 18:30:53 +03:00
|
|
|
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
|
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
echo "Created ${cfg_file}."
|
2016-07-22 16:37:05 +03:00
|
|
|
|
2024-07-27 08:25:53 +00:00
|
|
|
# make sure the kernel has the sublevel we know it has...
|
2019-07-16 18:30:53 +03:00
|
|
|
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
|
2015-10-13 10:17:01 +03:00
|
|
|
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
|
2022-03-09 19:02:02 +01:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
############################################################################
|
|
|
|
|
2013-11-16 00:27:01 +04:00
|
|
|
%build
|
2019-11-11 22:27:50 +03:00
|
|
|
|
2019-07-16 18:30:53 +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
|
|
|
|
2019-07-16 18:30: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
|
2019-07-16 18:30:53 +03:00
|
|
|
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}"
|
2020-08-06 17:26:48 +03:00
|
|
|
|
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
|
2019-07-16 18:30:53 +03:00
|
|
|
install -d %{temp_boot}
|
|
|
|
install -m 644 System.map %{temp_boot}/System.map-%{kver_full}
|
|
|
|
install -m 644 .config %{temp_boot}/config-%{kver_full}
|
2022-03-09 19:02:02 +01:00
|
|
|
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
|
2019-07-16 18:30:53 +03:00
|
|
|
%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
|
2019-07-16 18:30:53 +03:00
|
|
|
rm -rf %{temp_root}/lib/firmware
|
2014-12-11 19:36:25 +03:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# Prepare the files for kernel*-devel
|
2024-07-27 08:25:53 +00:00
|
|
|
%if %build_devel
|
2014-12-11 19:36:25 +03:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
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
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
cp -fR include %{temp_devel_root}
|
2014-12-11 19:36:25 +03:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
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/
|
2019-07-16 18:30:53 +03:00
|
|
|
cp -fR .config Module.symvers %{temp_devel_root}
|
2014-12-11 19:36:25 +03:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# Needed for truecrypt build (Danny)
|
|
|
|
cp -fR drivers/md/dm.h %{temp_devel_root}/drivers/md/
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2019-07-16 18:30:53 +03: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/
|
2017-03-13 18:10:33 +03:00
|
|
|
|
2024-07-27 08:25:53 +00:00
|
|
|
# add acpica header files, needed for fglrx build
|
2019-07-16 18:30:53 +03:00
|
|
|
cp -fR drivers/acpi/acpica/*.h %{temp_devel_root}/drivers/acpi/acpica/
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2019-07-16 18:30:53 +03: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
|
|
|
|
2019-07-16 18:30:53 +03: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/
|
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
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
|
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# 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
|
2019-07-16 18:30:53 +03:00
|
|
|
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
|
2019-07-16 18:30:53 +03:00
|
|
|
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
|
2022-03-09 19:02:02 +01:00
|
|
|
|
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
|
|
|
|
2019-07-16 18:30:53 +03: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
|
2020-03-15 20:26:01 +03:00
|
|
|
%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
|
2019-07-16 18:30:53 +03:00
|
|
|
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
|
2014-01-23 11:57:37 +04:00
|
|
|
%make -C tools/power/cpupower CPUFREQ_BENCH=false
|
2013-11-16 00:27:01 +04:00
|
|
|
%endif
|
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
############################################################################
|
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}
|
2022-03-09 19:02:02 +01:00
|
|
|
find %{target_modules} -name "*.ko" | %kxargs xz -6e
|
2022-03-15 17:03:05 +03:00
|
|
|
%else
|
2024-07-27 08:25:53 +00:00
|
|
|
find %{target_modules} -name "*.ko" | %kxargs gzip -9
|
2022-03-09 19:02:02 +01:00
|
|
|
%endif
|
2021-05-03 15:56:13 +03:00
|
|
|
|
2015-04-21 19:03:58 +03:00
|
|
|
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
|
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# 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
|
2019-07-16 18:30:53 +03:00
|
|
|
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
|
2019-07-16 18:30:53 +03:00
|
|
|
LC_ALL=C sed -ri "s/^EXTRAVERSION.*/EXTRAVERSION = -%{fullrpmrel}/" Makefile
|
2022-03-09 19:02:02 +01:00
|
|
|
%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}
|
2014-01-23 11:57:37 +04:00
|
|
|
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
|
2015-03-17 20:53:12 +03:00
|
|
|
install -m644 %{SOURCE53} %{buildroot}%{_unitdir}/cpupower.path
|
2013-11-16 00:27:01 +04:00
|
|
|
install -m644 %{SOURCE51} %{buildroot}%{_sysconfdir}/sysconfig/cpupower
|
2015-03-13 17:29:40 +03:00
|
|
|
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
|
|
|
|
rm -rf %{buildroot}/usr/src/linux-5.15.161-generic-1R11-x86_64/io_uring/Makefile
|