2019-11-12 02:06:06 +03:00
|
|
|
# _get_email() in %%build contains bashisms for regexping
|
|
|
|
%define _buildshell /bin/bash
|
|
|
|
|
2019-11-13 17:35:59 +03:00
|
|
|
# Prevent RPM scripts from stripping signatures,
|
|
|
|
# we strip binaries manually in %%build
|
|
|
|
%define __strip %(which true)
|
|
|
|
|
2020-05-11 09:35:25 +03:00
|
|
|
# brp-python-bytecompile uses /usr/bin/python,
|
|
|
|
# but it is a different python version in different ROSA
|
|
|
|
# releases; there is no good way to tell brp-python-bytecompile
|
|
|
|
# which iterpreter to use; so just disable it to avoid problems
|
|
|
|
%define _python_bytecompile_build 0
|
|
|
|
|
2020-06-19 23:42:50 +03:00
|
|
|
# Probably dwz bug, on i686 only file is not packaged:
|
|
|
|
# /usr/lib/debug/usr/bin/trace-5.4.40-3.i386.debug.#dwz#.b5xuKG
|
|
|
|
# dwz compresses only debuginfo from perf, cpupower, uml,
|
|
|
|
# not the kernel itself (because it is stripped not by RPM),
|
|
|
|
# so we do not loose much by disabling it.
|
|
|
|
%global _find_debuginfo_dwz_opts %{nil}
|
|
|
|
|
2019-04-09 17:26:40 +03:00
|
|
|
%define kernelversion 5
|
2019-12-11 21:21:05 +03:00
|
|
|
%define patchlevel 4
|
2019-07-16 18:30:53 +03:00
|
|
|
# sublevel is used for stable-based kernels
|
2020-10-27 20:03:51 +03:00
|
|
|
%define sublevel 72
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2016-07-22 22:05:03 +03:00
|
|
|
# Release number. Increase this before a rebuild.
|
2020-11-05 02:42:36 +03:00
|
|
|
%define rpmrel 2
|
2019-07-16 18:30:53 +03:00
|
|
|
%define fullrpmrel %{rpmrel}
|
2013-11-16 00:27:01 +04:00
|
|
|
|
|
|
|
%define rpmtag %{disttag}
|
|
|
|
|
|
|
|
# fakerel and fakever never change, they are used to fool
|
2015-07-01 16:47:47 +03:00
|
|
|
# rpm/urpmi/smart and ensure the kernels are installed,
|
|
|
|
# not upgraded so old kernel is not overwritten or removed
|
2013-11-16 00:27:01 +04:00
|
|
|
%define fakever 1
|
|
|
|
%define fakerel %mkrel 1
|
|
|
|
|
|
|
|
# version defines
|
|
|
|
%define kversion %{kernelversion}.%{patchlevel}.%{sublevel}
|
2019-07-16 18:30:53 +03:00
|
|
|
%define kverrel %{kversion}-%{fullrpmrel}
|
2013-11-16 00:27:01 +04:00
|
|
|
%define tar_ver %{kernelversion}.%{patchlevel}
|
|
|
|
|
2015-03-16 18:42:29 +03:00
|
|
|
%ifarch %{ix86}
|
|
|
|
# Use a standard suffix for 32-bit x86
|
|
|
|
%define arch_suffix i586
|
|
|
|
%else
|
|
|
|
%define arch_suffix %{_arch}
|
|
|
|
%endif
|
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
%define buildrpmrel %{fullrpmrel}%{rpmtag}-%{arch_suffix}
|
2013-11-16 00:27:01 +04:00
|
|
|
%define buildrel %{kversion}-%{buildrpmrel}
|
|
|
|
|
2019-11-11 21:28:45 +03:00
|
|
|
# %%build_selinux may be defined in branding-configs
|
2020-03-18 22:20:03 +03:00
|
|
|
#%%{?build_selinux}%{?!build_selinux:%bcond_with selinux}
|
|
|
|
#%%if %{with selinux}
|
2019-11-11 21:28:45 +03:00
|
|
|
%global enhanced_security 1
|
2020-03-18 22:20:03 +03:00
|
|
|
#%%else
|
|
|
|
#%%global enhanced_security 0
|
|
|
|
#%%endif
|
|
|
|
# Allow "rpmbuild --without enhanced_security <...>"
|
|
|
|
%{?_without_enhanced_security:%global enhanced_security 0}
|
2019-11-11 21:28:45 +03:00
|
|
|
|
2019-11-17 16:56:39 +03:00
|
|
|
%if %{enhanced_security}
|
|
|
|
%bcond_without additional_keys
|
|
|
|
%endif
|
2020-03-13 20:35:12 +03:00
|
|
|
# User Mode Linux, https://habr.com/ru/company/itsumma/blog/459558/
|
|
|
|
%bcond_without uml
|
2019-11-17 16:56:39 +03:00
|
|
|
|
2020-03-18 22:20:03 +03:00
|
|
|
# "Nickel" is a special brand for certified distros
|
2020-03-29 01:07:43 +03:00
|
|
|
# gost_sign will probably be enabled outside of Nickel later,
|
|
|
|
# but for now let's better do not make such experiments in stable platforms
|
2020-03-18 22:20:03 +03:00
|
|
|
%if %{mdvver} == 201900 || %{mdvver} == 201905
|
|
|
|
%bcond_without nickel
|
2020-03-29 01:07:43 +03:00
|
|
|
%bcond_without gost_sign
|
2020-08-06 14:44:29 +03:00
|
|
|
%bcond_without oblig_signed_modules
|
2020-03-18 22:20:03 +03:00
|
|
|
%else
|
|
|
|
%bcond_with nickel
|
2020-03-29 01:07:43 +03:00
|
|
|
%bcond_with gost_sign
|
2020-08-06 14:44:29 +03:00
|
|
|
%bcond_with oblig_signed_modules
|
2020-03-18 22:20:03 +03:00
|
|
|
%endif
|
|
|
|
|
2020-07-29 10:59:41 +03:00
|
|
|
# Build binary out-of-tree kernel modules (experimental)
|
|
|
|
%if %{mdvver} >= 201905
|
|
|
|
%bcond_without binary_extra_modules
|
|
|
|
%else
|
|
|
|
%bcond_with binary_extra_modules
|
|
|
|
%endif
|
|
|
|
|
2020-07-27 16:53:12 +03:00
|
|
|
%bcond_with ccache
|
2020-08-19 20:02:58 +03:00
|
|
|
%bcond_without flow_abi
|
2020-07-27 16:53:12 +03:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# Kernel flavour
|
2020-03-18 22:20:03 +03:00
|
|
|
%if %{with nickel}
|
2019-11-11 21:28:45 +03:00
|
|
|
%define flavour nickel
|
|
|
|
%else
|
2020-03-18 22:20:03 +03:00
|
|
|
%define flavour generic
|
2019-11-11 21:28:45 +03:00
|
|
|
%endif
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# The full kernel version
|
|
|
|
%define kver_full %{kversion}-%{flavour}-%{buildrpmrel}
|
|
|
|
############################################################################
|
|
|
|
|
|
|
|
%define top_dir_name kernel-%{_arch}
|
2013-11-16 00:27:01 +04:00
|
|
|
%define build_dir ${RPM_BUILD_DIR}/%{top_dir_name}
|
2019-07-21 21:43:25 +03:00
|
|
|
%define src_dir %{build_dir}/linux-%{tar_ver}
|
2019-07-16 18:30:53 +03:00
|
|
|
|
|
|
|
# Common target directories
|
|
|
|
%define _bootdir /boot
|
|
|
|
%define _modulesdir /lib/modules
|
|
|
|
|
|
|
|
%define devel_root /usr/src/linux-%{kver_full}
|
|
|
|
|
|
|
|
# Directories needed for building
|
|
|
|
%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
|
|
|
|
%define target_boot %{buildroot}%{_bootdir}
|
|
|
|
%define target_modules %{buildroot}%{_modulesdir}
|
2019-11-11 17:47:53 +03:00
|
|
|
|
|
|
|
# Manual control of creating and deleting keys
|
|
|
|
# "rnd" is "random" and means that a key pair is generated at build time
|
|
|
|
# and is not saved anywhere.
|
2019-11-19 16:37:20 +03:00
|
|
|
%define certs_dir_rnd certs
|
2019-12-07 21:57:55 +03:00
|
|
|
%define certs_signing_key_priv_rnd %{certs_dir_rnd}/signing_key_priv.key
|
|
|
|
%define certs_signing_der %{certs_dir_rnd}/signing_key.x509
|
2019-11-11 17:47:53 +03:00
|
|
|
%define certs_key_config_rnd %{certs_dir_rnd}/x509.genkey
|
2019-11-18 18:48:33 +03:00
|
|
|
%define certs_public_keys %{certs_dir_rnd}/public.pem
|
2019-11-11 21:16:01 +03:00
|
|
|
%define certs_verify_tmp %{certs_dir_rnd}/verify.tmp
|
2016-07-29 13:39:16 +03:00
|
|
|
############################################################################
|
2013-11-16 00:27:01 +04:00
|
|
|
|
|
|
|
# Build defines
|
2019-07-16 17:21:32 +03:00
|
|
|
%define build_doc 0
|
2013-11-16 00:27:01 +04:00
|
|
|
%define build_devel 1
|
2019-11-12 16:07:05 +03:00
|
|
|
%define build_debug 1
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2018-09-04 11:17:26 +03:00
|
|
|
# Build kernel-headers package
|
2020-03-21 03:02:08 +03:00
|
|
|
# Make headers of this kernel not default for rosa2016.1
|
|
|
|
%if %{mdvver} <= 201610
|
|
|
|
%define build_headers 0
|
|
|
|
%else
|
|
|
|
%define build_headers 1
|
2020-03-21 03:17:06 +03:00
|
|
|
%endif
|
2018-09-04 11:17:26 +03:00
|
|
|
|
2013-11-16 00:27:01 +04:00
|
|
|
# build perf and cpupower tools
|
2016-01-06 17:46:38 +03:00
|
|
|
%define build_perf 1
|
2013-11-16 00:27:01 +04:00
|
|
|
%define build_cpupower 1
|
|
|
|
|
|
|
|
# compress modules with xz
|
|
|
|
%define build_modxz 1
|
|
|
|
# End of user definitions
|
|
|
|
|
|
|
|
# buildtime flags
|
|
|
|
%{?_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}
|
|
|
|
%{?_without_modxz: %global build_modxz 0}
|
|
|
|
|
|
|
|
%{?_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}
|
|
|
|
%{?_with_modxz: %global build_modxz 1}
|
|
|
|
|
2020-07-29 10:59:41 +03:00
|
|
|
%if %{build_modxz}
|
|
|
|
%define kmod_suffix .xz
|
|
|
|
%else
|
|
|
|
%define kmod_suffix .gz
|
|
|
|
%endif
|
|
|
|
|
2016-07-21 15:59:26 +03:00
|
|
|
%if !%{build_debug}
|
|
|
|
# Disable debug rpms.
|
|
|
|
%define _enable_debug_packages %{nil}
|
|
|
|
%define debug_package %{nil}
|
|
|
|
%endif
|
|
|
|
|
2020-07-27 16:53:12 +03:00
|
|
|
# http://nickdesaulniers.github.io/blog/2018/06/02/speeding-up-linux-kernel-builds-with-ccache/
|
|
|
|
%if %{with ccache}
|
|
|
|
%define kmake KBUILD_BUILD_TIMESTAMP='' %make CC='ccache gcc'
|
2013-11-16 00:27:01 +04:00
|
|
|
%else
|
2020-07-27 16:53:12 +03:00
|
|
|
%define kmake %make CC='gcc'
|
2013-11-16 00:27:01 +04:00
|
|
|
%endif
|
2020-07-27 16:53:12 +03:00
|
|
|
|
2013-11-16 00:27:01 +04:00
|
|
|
# there are places where parallel make don't work
|
2014-01-23 11:57:37 +04:00
|
|
|
%define smake make
|
2014-01-22 18:31:57 +04:00
|
|
|
|
2013-11-16 00:27:01 +04:00
|
|
|
# Parallelize xargs invocations on smp machines
|
|
|
|
%define kxargs xargs %([ -z "$RPM_BUILD_NCPUS" ] \\\
|
|
|
|
&& RPM_BUILD_NCPUS="`/usr/bin/getconf _NPROCESSORS_ONLN`"; \\\
|
|
|
|
[ "$RPM_BUILD_NCPUS" -gt 1 ] && echo "-P $RPM_BUILD_NCPUS")
|
|
|
|
|
|
|
|
#
|
|
|
|
# SRC RPM description
|
|
|
|
#
|
2016-07-26 11:41:00 +03:00
|
|
|
Summary: The Linux kernel
|
2019-07-16 18:30:53 +03:00
|
|
|
Name: kernel
|
2013-11-16 00:27:01 +04:00
|
|
|
Version: %{kversion}
|
2019-07-16 18:30:53 +03:00
|
|
|
Release: %{fullrpmrel}
|
2013-11-16 00:27:01 +04:00
|
|
|
License: GPLv2
|
|
|
|
Group: System/Kernel and hardware
|
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
|
|
|
ExclusiveArch: %{ix86} x86_64
|
2013-11-16 00:27:01 +04:00
|
|
|
URL: http://www.kernel.org
|
|
|
|
|
|
|
|
####################################################################
|
|
|
|
#
|
|
|
|
# Sources
|
|
|
|
#
|
2018-01-10 22:20:13 +03: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.
|
2013-11-16 00:27:01 +04:00
|
|
|
Source2: disable-mrproper-prepare-scripts-configs-in-devel-rpms.patch
|
|
|
|
|
2020-07-29 10:59:41 +03:00
|
|
|
# TODO: make a separate package "ksobirator" and BR it
|
|
|
|
# after testing these macros properly
|
|
|
|
Source3: macros.ksobirator
|
|
|
|
%{load:%{SOURCE3}}
|
|
|
|
|
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.
|
|
|
|
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.
|
2013-11-16 00:27:01 +04:00
|
|
|
Source50: cpupower.service
|
|
|
|
Source51: cpupower.config
|
2015-03-13 17:29:40 +03:00
|
|
|
Source52: cpupower-start.sh
|
2015-03-17 20:53:12 +03:00
|
|
|
Source53: cpupower.path
|
2013-11-16 00:27:01 +04: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
|
|
|
Source80: kernel.rpmlintrc
|
2019-11-17 16:56:39 +03:00
|
|
|
|
|
|
|
# Additional keys that can be used to sign kernel modules
|
2020-03-20 21:20:38 +03:00
|
|
|
# Generated by https://abf.io/soft/kernel-keys
|
|
|
|
# Source201..206: public_key_GOST_*.pem
|
|
|
|
%{expand:%(for i in `seq 1 6`; do echo "Source$((200+${i})): public_key_GOST_${i}.pem"; done)}
|
|
|
|
# Source207..212: public_key_RSA_*.pem
|
|
|
|
%{expand:%(for i in `seq 7 12`; do echo "Source$((200+${i})): public_key_RSA_${i}.pem"; done)}
|
2019-11-17 16:56:39 +03:00
|
|
|
|
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.
|
2018-01-10 22:20:13 +03: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.
|
|
|
|
Patch101: perf-xmlto-skip-validation.patch
|
|
|
|
|
|
|
|
# http://bugs.rosalinux.ru/show_bug.cgi?id=6235
|
|
|
|
# http://bugs.rosalinux.ru/show_bug.cgi?id=6459
|
2019-07-16 18:30:53 +03:00
|
|
|
Patch102: audit-make-it-less-verbose.patch
|
2016-07-26 11:24:24 +03:00
|
|
|
|
2020-08-18 08:02:38 +03:00
|
|
|
# AUFS 5 from http://aufs.sourceforge.net/
|
2019-12-16 16:12:07 +03:00
|
|
|
Patch109: fs-aufs.patch
|
2020-08-18 08:02:38 +03:00
|
|
|
Patch110: fs-aufs-2.patch
|
2019-12-07 21:57:55 +03:00
|
|
|
|
2020-06-18 18:38:30 +03:00
|
|
|
# For kmod() generator of RPM Provides
|
|
|
|
# Changes version of aacraid.ko
|
2020-08-18 08:02:38 +03:00
|
|
|
Patch111: 0001-Remove-RPM-illegal-chars-from-module-version.patch
|
2020-06-18 18:38:30 +03:00
|
|
|
|
2020-03-16 23:19:46 +03:00
|
|
|
# AltHa LSM Module
|
|
|
|
# https://www.altlinux.org/AltHa
|
|
|
|
# http://git.altlinux.org/gears/k/kernel-image-un-def.git
|
|
|
|
# TODO: known problem: https://bugzilla.altlinux.org/show_bug.cgi?id=38225
|
|
|
|
Patch201: 0001-AltHa-LSM-module.patch
|
|
|
|
Patch202: 0002-Documentation-for-AltHa-LSM.patch
|
|
|
|
|
2020-03-07 19:46:37 +03:00
|
|
|
# Other patches
|
2020-03-16 23:19:46 +03:00
|
|
|
Patch301: objtool-sync-check.sh-set-the-exit-code-explicitly.patch
|
2020-03-20 11:27:35 +03:00
|
|
|
# sent to upstream, https://patchwork.kernel.org/patch/11446123/
|
2020-03-19 00:41:40 +03:00
|
|
|
Patch302: 0001-sign-file-full-functionality-with-modern-LibreSSL.patch
|
2020-07-27 22:32:06 +03:00
|
|
|
# Add sysctl to disable disk-based swap
|
|
|
|
Patch304: 0001-mm-add-sysctl-to-disable-disk-based-swap.patch
|
2020-08-06 14:30:23 +03:00
|
|
|
# Support loading GOST-signed modules
|
|
|
|
Patch305: 0001-crypto-support-loading-GOST-signed-kernel-modules.patch
|
2020-08-10 10:44:43 +03:00
|
|
|
# Allow to off modules signature check dynamically
|
|
|
|
Patch306: 0001-ROSA-ima-allow-to-off-modules-signature-check-dynami.patch
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2020-03-09 10:50:38 +03:00
|
|
|
# Disable AutoReq
|
|
|
|
AutoReq: 0
|
|
|
|
# but keep autoprov for kmod(xxx)
|
|
|
|
AutoProv: 1
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2020-03-09 10:46:18 +03:00
|
|
|
BuildRequires: bash
|
2014-07-11 16:00:31 +04:00
|
|
|
BuildRequires: bc
|
|
|
|
BuildRequires: binutils
|
|
|
|
BuildRequires: gcc
|
|
|
|
# For power tools
|
|
|
|
BuildRequires: pkgconfig(ncurses)
|
2013-11-16 00:27:01 +04:00
|
|
|
BuildRequires: kmod-devel kmod-compat
|
2018-02-10 19:33:13 +03:00
|
|
|
BuildRequires: bison
|
|
|
|
BuildRequires: flex
|
2019-07-16 18:30:53 +03:00
|
|
|
BuildRequires: bzip2
|
2019-09-24 11:56:44 +03:00
|
|
|
BuildRequires: rsync
|
|
|
|
|
2014-05-19 18:34:31 +04:00
|
|
|
%ifarch x86_64
|
|
|
|
BuildRequires: numa-devel
|
|
|
|
%endif
|
|
|
|
|
2014-07-11 16:00:31 +04:00
|
|
|
# for perf, cpufreq and all other tools
|
|
|
|
# for cpupower
|
|
|
|
%if %{build_cpupower}
|
|
|
|
BuildRequires: pciutils-devel
|
|
|
|
%endif
|
|
|
|
# for perf
|
|
|
|
%if %{build_perf}
|
|
|
|
BuildRequires: asciidoc
|
|
|
|
BuildRequires: audit-devel
|
2013-11-16 00:27:01 +04:00
|
|
|
BuildRequires: binutils-devel
|
2014-07-11 16:00:31 +04:00
|
|
|
BuildRequires: elfutils-devel
|
|
|
|
BuildRequires: libunwind-devel
|
2013-11-16 00:27:01 +04:00
|
|
|
BuildRequires: newt-devel
|
2014-07-11 16:00:31 +04:00
|
|
|
BuildRequires: perl-devel
|
2020-03-09 10:56:05 +03:00
|
|
|
BuildRequires: pkgconfig(python)
|
2013-11-16 00:27:01 +04:00
|
|
|
BuildRequires: xmlto
|
2014-07-11 16:00:31 +04:00
|
|
|
BuildRequires: zlib-devel
|
2016-07-26 18:18:51 +03:00
|
|
|
BuildRequires: pkgconfig(libcrypto)
|
2014-07-11 16:00:31 +04:00
|
|
|
%endif
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2019-11-11 17:47:53 +03:00
|
|
|
%if %{enhanced_security}
|
2019-12-01 02:03:15 +03:00
|
|
|
# (To generate keys)
|
2019-12-07 21:57:55 +03:00
|
|
|
# LibreSSL has GOST support without editing openssl.cnf
|
|
|
|
# or dlopen()-ing external library
|
|
|
|
BuildRequires: libressl libressl-devel
|
2019-11-11 21:16:01 +03:00
|
|
|
# To verify signatures (find, xargs, hexdump)
|
|
|
|
BuildRequires: findutils util-linux
|
2019-11-11 17:47:53 +03:00
|
|
|
%endif
|
|
|
|
|
2020-07-29 10:59:41 +03:00
|
|
|
%if %{with binary_extra_modules}
|
|
|
|
BuildRequires: kernel-source-rtl8821ce
|
|
|
|
BuildRequires: kernel-source-shredder-kernel
|
|
|
|
BuildRequires: kernel-source-tripso
|
|
|
|
BuildRequires: kernel-source-virtualbox
|
|
|
|
# TODO: drop it for kernels >= 5.6
|
|
|
|
# because all guest modules have been upstreamized
|
|
|
|
# https://www.phoronix.com/scan.php?page=news_item&px=VirtualBox-Shared-Folder-5.6
|
|
|
|
BuildRequires: kernel-source-virtualbox-vboxadditions
|
2020-08-06 17:26:48 +03:00
|
|
|
# rosa-test-suite is maintained in certified branches only
|
|
|
|
# nlkm, memfreetest, pcietest
|
|
|
|
%if %{with nickel}
|
|
|
|
BuildRequires: kernel-source-rosa-test-suite
|
2020-07-29 10:59:41 +03:00
|
|
|
%endif
|
2020-08-06 17:26:48 +03:00
|
|
|
%endif #with binary_extra_modules
|
2020-07-29 10:59:41 +03:00
|
|
|
|
2020-07-27 16:53:12 +03:00
|
|
|
%if %{with ccache}
|
|
|
|
BuildRequires: ccache
|
|
|
|
%endif
|
|
|
|
|
2014-07-11 16:00:31 +04:00
|
|
|
# might be useful too:
|
2020-03-09 10:46:18 +03:00
|
|
|
Recommends: microcode
|
2014-07-11 16:00:31 +04:00
|
|
|
|
2013-11-16 00:27:01 +04:00
|
|
|
|
|
|
|
%description
|
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.
|
|
|
|
|
|
|
|
############################################################################
|
|
|
|
|
|
|
|
%package -n kernel-%{flavour}-%{buildrel}
|
|
|
|
Version: %{fakever}
|
|
|
|
Release: %{fakerel}
|
|
|
|
|
|
|
|
Provides: kernel = %{kverrel}
|
|
|
|
Provides: kernel = %{kernelversion}.%{patchlevel}
|
2019-11-17 15:12:03 +03:00
|
|
|
Provides: kernel-%{flavour} = %{kverrel}
|
2019-11-17 15:18:28 +03:00
|
|
|
%if %{enhanced_security}
|
|
|
|
Provides: kernel-hardened = %{kverrel}
|
|
|
|
Provides: kernel-hardened = %{kernelversion}.%{patchlevel}
|
|
|
|
Provides: kernel-hardened-%{flavour} = %{kverrel}
|
|
|
|
%endif
|
2019-07-16 18:30:53 +03:00
|
|
|
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
|
|
|
|
|
2020-08-19 20:02:58 +03:00
|
|
|
%if %{with flow_abi}
|
|
|
|
Requires: kernel-%{kernelversion}.%{patchlevel}-rosa-flow-abi
|
|
|
|
%endif
|
|
|
|
|
2020-03-09 10:46:18 +03:00
|
|
|
Recommends: crda
|
2019-07-16 18:30:53 +03:00
|
|
|
|
2020-08-03 20:51:43 +03:00
|
|
|
# Keep these deps on old platforms
|
|
|
|
# but get rid of puling gcc etc. by the kernel on newer platforms
|
|
|
|
%if %{build_devel} && %{mdvver} < 201900
|
2019-07-16 18:30:53 +03:00
|
|
|
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
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
Summary: A general-purpose Linux Kernel
|
|
|
|
Group: System/Kernel and hardware
|
|
|
|
|
|
|
|
%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.
|
|
|
|
|
|
|
|
%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.
|
2013-11-16 00:27:01 +04:00
|
|
|
#
|
2019-07-16 18:30:53 +03: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
|
|
|
|
2019-07-16 18:30:53 +03: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
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
%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
|
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
|
|
|
|
|
|
|
|
popd > /dev/null
|
|
|
|
exit 0
|
|
|
|
|
|
|
|
%postun -n kernel-%{flavour}-%{buildrel}
|
|
|
|
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
|
|
|
|
|
|
|
|
|
2019-07-21 23:50:25 +03:00
|
|
|
%files -n kernel-%{flavour}-%{buildrel} -f kernel_files.%{flavour}
|
2019-07-16 18:30:53 +03:00
|
|
|
|
|
|
|
############################################################################
|
|
|
|
|
|
|
|
%if %build_devel
|
|
|
|
%package -n kernel-%{flavour}-devel-%{buildrel}
|
|
|
|
Version: %{fakever}
|
|
|
|
Release: %{fakerel}
|
|
|
|
Summary: Development files for kernel-%{flavour}-%{buildrel}
|
|
|
|
Group: Development/Kernel
|
|
|
|
Requires: glibc-devel
|
|
|
|
Requires: ncurses-devel
|
|
|
|
Requires: make
|
|
|
|
Requires: gcc
|
|
|
|
Requires: perl
|
|
|
|
Provides: kernel-devel = %{kverrel}
|
2019-11-17 15:12:03 +03:00
|
|
|
Provides: kernel-%{flavour}-devel = %{kverrel}
|
2019-11-17 15:18:28 +03:00
|
|
|
%if %{enhanced_security}
|
|
|
|
Provides: kernel-hardened-devel = %{kverrel}
|
|
|
|
Provides: kernel-hardened-%{flavour}-devel = %{kverrel}
|
|
|
|
%endif
|
2019-07-16 18:30:53 +03:00
|
|
|
|
|
|
|
%ifarch %{ix86}
|
|
|
|
Conflicts: arch(x86_64)
|
2013-11-16 00:27:01 +04:00
|
|
|
%endif
|
|
|
|
|
2019-07-16 18:30:53 +03: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}.
|
|
|
|
|
|
|
|
%post -n kernel-%{flavour}-devel-%{buildrel}
|
2020-08-03 21:07:52 +03:00
|
|
|
if command -v dkms_autoinstaller >/dev/null 2>&1; then
|
|
|
|
dkms_autoinstaller start %{kver_full}
|
|
|
|
fi
|
2019-07-16 18:30:53 +03:00
|
|
|
|
|
|
|
%preun -n kernel-%{flavour}-devel-%{buildrel}
|
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
|
|
|
|
|
2020-03-18 22:20:03 +03:00
|
|
|
if ! command -v dkms >/dev/null 2>&1; then exit 0; fi
|
|
|
|
|
|
|
|
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} || :
|
|
|
|
done
|
|
|
|
|
2019-07-16 18:30:53 +03: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
|
|
|
|
|
|
|
|
|
|
|
|
%files -n kernel-%{flavour}-devel-%{buildrel}
|
|
|
|
%dir %{devel_root}
|
|
|
|
%dir %{devel_root}/arch
|
|
|
|
%dir %{devel_root}/include
|
|
|
|
%{devel_root}/Documentation
|
|
|
|
%{devel_root}/arch/um
|
|
|
|
%{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
|
|
|
|
%{devel_root}/include/kvm
|
|
|
|
%{devel_root}/include/linux
|
|
|
|
%{devel_root}/include/math-emu
|
|
|
|
%{devel_root}/include/media
|
|
|
|
%{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
|
|
|
|
|
|
|
|
%endif
|
|
|
|
|
|
|
|
############################################################################
|
|
|
|
|
|
|
|
%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}
|
2019-11-17 15:18:28 +03:00
|
|
|
%if %{enhanced_security}
|
|
|
|
Provides: kernel-hardened-debug = %{kverrel}
|
|
|
|
%endif
|
2019-07-16 18:30:53 +03: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}.
|
|
|
|
|
2019-11-14 00:20:41 +03:00
|
|
|
%files -n kernel-%{flavour}-%{buildrel}-debuginfo -f kernel_debug_files.%{flavour}
|
2019-07-16 18:30:53 +03:00
|
|
|
|
|
|
|
%endif
|
|
|
|
|
|
|
|
############################################################################
|
|
|
|
|
|
|
|
%package -n kernel-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
|
|
|
Version: %{kversion}
|
|
|
|
Release: %{fullrpmrel}
|
|
|
|
Summary: Meta package for the latest kernel-%{flavour} in %{kernelversion}.%{patchlevel} series
|
|
|
|
Group: System/Kernel and hardware
|
|
|
|
Requires: kernel-%{flavour}-%{buildrel}
|
|
|
|
|
|
|
|
%ifarch %{ix86}
|
|
|
|
Conflicts: arch(x86_64)
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%description -n kernel-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
|
|
|
This meta package aims to make sure you always have the
|
|
|
|
latest kernel-%{flavour} %{kernelversion}.%{patchlevel}.x installed.
|
|
|
|
|
|
|
|
%files -n kernel-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
|
|
|
# no files
|
|
|
|
|
|
|
|
############################################################################
|
|
|
|
|
|
|
|
%if %build_devel
|
|
|
|
|
|
|
|
%package -n kernel-%{flavour}-%{kernelversion}.%{patchlevel}-devel-latest
|
|
|
|
Version: %{kversion}
|
|
|
|
Release: %{fullrpmrel}
|
|
|
|
Summary: Meta package for the latest kernel-%{flavour}-devel in %{kernelversion}.%{patchlevel} series
|
|
|
|
Group: Development/Kernel
|
|
|
|
Requires: kernel-%{flavour}-devel-%{buildrel}
|
|
|
|
|
|
|
|
%ifarch %{ix86}
|
|
|
|
Conflicts: arch(x86_64)
|
|
|
|
%endif
|
|
|
|
|
|
|
|
Provides: kernel-devel-latest
|
2019-11-17 15:18:28 +03:00
|
|
|
%if %{enhanced_security}
|
|
|
|
Provides: kernel-hardened-devel-latest
|
|
|
|
%endif
|
2019-07-16 18:30:53 +03:00
|
|
|
|
|
|
|
%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
|
|
|
|
|
|
|
|
############################################################################
|
|
|
|
|
2013-11-16 00:27:01 +04:00
|
|
|
%if %build_doc
|
2019-07-16 18:30:53 +03:00
|
|
|
%package -n kernel-doc
|
2013-11-16 00:27:01 +04:00
|
|
|
Version: %{kversion}
|
2019-07-16 18:30:53 +03:00
|
|
|
Release: %{fullrpmrel}
|
|
|
|
Summary: Various documentation bits found in the kernel source
|
2013-11-16 00:27:01 +04:00
|
|
|
Group: Documentation
|
|
|
|
Buildarch: noarch
|
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
%description -n kernel-doc
|
|
|
|
This package contains documentation files from the kernel source.
|
|
|
|
|
|
|
|
%files -n kernel-doc
|
2019-07-21 21:43:25 +03:00
|
|
|
%doc linux-%{tar_ver}/Documentation/*
|
2019-07-16 18:30:53 +03: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
|
|
|
|
Version: %{kversion}
|
2019-07-16 18:30:53 +03:00
|
|
|
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/*
|
|
|
|
|
|
|
|
%endif
|
|
|
|
|
|
|
|
############################################################################
|
2013-11-16 00:27:01 +04:00
|
|
|
|
|
|
|
%if %{build_cpupower}
|
|
|
|
%package -n cpupower
|
|
|
|
Version: %{kversion}
|
2019-07-16 18:30:53 +03:00
|
|
|
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
|
|
|
|
Requires(post): rpm-helper >= 0.24.0-3
|
|
|
|
Requires(preun): rpm-helper >= 0.24.0-3
|
2017-01-21 22:28:16 +03:00
|
|
|
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
|
2014-10-14 13:22:01 +04: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
|
2015-03-17 20:53:12 +03: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*
|
|
|
|
%config(noreplace) %{_sysconfdir}/sysconfig/cpupower
|
|
|
|
|
|
|
|
############################################################################
|
|
|
|
|
2013-11-16 00:27:01 +04:00
|
|
|
%package -n cpupower-devel
|
|
|
|
Version: %{kversion}
|
2019-07-16 18:30:53 +03:00
|
|
|
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
|
2019-07-16 18:30:53 +03: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
|
2020-03-21 12:28:56 +03:00
|
|
|
%{_includedir}/cpuidle.h
|
2019-07-16 18:30:53 +03: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}
|
2013-11-16 00:27:01 +04:00
|
|
|
%package headers
|
|
|
|
Version: %kversion
|
2019-07-16 18:30:53 +03:00
|
|
|
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
|
|
|
|
Epoch: 1
|
2020-04-14 22:03:16 +03:00
|
|
|
Provides: linux-userspace-headers = %{EVRD}
|
|
|
|
Provides: kernel-release-headers = %{EVRD}
|
2013-11-16 00:27:01 +04:00
|
|
|
|
|
|
|
%description headers
|
|
|
|
C header files from the Linux kernel. The header files define
|
|
|
|
structures and constants that are needed for building most
|
|
|
|
standard programs, notably the C library.
|
|
|
|
|
|
|
|
This package is not suitable for building kernel modules, you
|
|
|
|
should use the 'kernel-devel' package instead.
|
|
|
|
|
|
|
|
%files headers
|
2020-03-21 12:28:56 +03:00
|
|
|
%{_includedir}/*
|
2013-11-16 00:27:01 +04:00
|
|
|
# Don't conflict with cpupower-devel
|
|
|
|
%if %{build_cpupower}
|
2020-03-21 12:28:56 +03:00
|
|
|
%exclude %{_includedir}/cpufreq.h
|
|
|
|
%exclude %{_includedir}/cpuidle.h
|
2013-11-16 00:27:01 +04: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
|
|
|
############################################################################
|
|
|
|
|
2020-03-13 20:35:12 +03:00
|
|
|
%if %{with uml}
|
2020-03-18 22:20:03 +03:00
|
|
|
|
2020-03-13 20:35:12 +03:00
|
|
|
%package -n kernel-uml-%{flavour}-%{buildrel}
|
|
|
|
Version: %{fakever}
|
|
|
|
Release: %{fakerel}
|
|
|
|
Provides: kernel-uml = %{kverrel}
|
|
|
|
Provides: kernel-uml-%{flavour} = %{kverrel}
|
|
|
|
Summary: User Mode Linux binary
|
|
|
|
Group: System/Kernel and hardware
|
|
|
|
|
|
|
|
%description -n kernel-uml-%{flavour}-%{buildrel}
|
2020-03-18 22:20:03 +03:00
|
|
|
User Mode Linux binary.
|
|
|
|
Stripped, debug is in kernel-%{flavour}-%{buildrel}-debuginfo.
|
2020-03-13 20:35:12 +03:00
|
|
|
|
|
|
|
%files -n kernel-uml-%{flavour}-%{buildrel}
|
|
|
|
%{_bindir}/linux-uml-%{kver_full}
|
|
|
|
#------------------------------------------------
|
|
|
|
|
|
|
|
%package -n kernel-uml-modules-%{flavour}-%{buildrel}
|
|
|
|
Version: %{fakever}
|
|
|
|
Release: %{fakerel}
|
|
|
|
Provides: kernel-uml-modules = %{kverrel}
|
|
|
|
Provides: kernel-uml-modules-%{flavour} = %{kverrel}
|
|
|
|
Summary: User Mode Linux (UML) kernel modules
|
|
|
|
Group: System/Kernel and hardware
|
|
|
|
|
|
|
|
%description -n kernel-uml-modules-%{flavour}-%{buildrel}
|
|
|
|
User Mode Linux (UML) kernel modules
|
|
|
|
- not compressed
|
|
|
|
- not stripped
|
|
|
|
- signed
|
|
|
|
|
|
|
|
%files -n kernel-uml-modules-%{flavour}-%{buildrel}
|
|
|
|
/lib/modules-uml/%{kver_full}
|
2020-03-18 22:20:03 +03:00
|
|
|
#------------------------------------------------
|
|
|
|
|
|
|
|
%package -n kernel-uml-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
|
|
|
Version: %{kversion}
|
|
|
|
Release: %{fullrpmrel}
|
|
|
|
Summary: Meta package for the latest kernel-uml-%{flavour} in %{kernelversion}.%{patchlevel} series
|
|
|
|
Group: System/Kernel and hardware
|
|
|
|
Requires: kernel-uml-%{flavour}-%{buildrel}
|
|
|
|
|
|
|
|
%ifarch %{ix86}
|
|
|
|
Conflicts: arch(x86_64)
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%description -n kernel-uml-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
|
|
|
This meta package aims to make sure you always have the
|
|
|
|
latest kernel-uml-%{flavour} %{kernelversion}.%{patchlevel}.x
|
|
|
|
(User Mode Linux binary) installed.
|
|
|
|
|
|
|
|
%files -n kernel-uml-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
|
|
|
# no files
|
|
|
|
#------------------------------------------------
|
|
|
|
|
|
|
|
%package -n kernel-uml-modules-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
|
|
|
Version: %{kversion}
|
|
|
|
Release: %{fullrpmrel}
|
|
|
|
Summary: Meta package for the latest kernel-uml-modules-%{flavour} in %{kernelversion}.%{patchlevel} series
|
|
|
|
Group: System/Kernel and hardware
|
|
|
|
Requires: kernel-uml-modules-%{flavour}-%{buildrel}
|
|
|
|
|
|
|
|
%ifarch %{ix86}
|
|
|
|
Conflicts: arch(x86_64)
|
2020-03-13 20:35:12 +03:00
|
|
|
%endif
|
|
|
|
|
2020-03-18 22:20:03 +03:00
|
|
|
%description -n kernel-uml-modules-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
|
|
|
This meta package aims to make sure you always have the
|
|
|
|
latest kernel-uml-modules-%{flavour} %{kernelversion}.%{patchlevel}.x
|
|
|
|
(User Mode Linux kernel modules) installed.
|
|
|
|
|
|
|
|
%files -n kernel-uml-modules-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
|
|
|
# no files
|
|
|
|
#------------------------------------------------
|
|
|
|
|
|
|
|
%endif #endif uml
|
|
|
|
|
2020-07-29 10:59:41 +03:00
|
|
|
#------------------------------------------------
|
|
|
|
|
|
|
|
%if %{with binary_extra_modules}
|
|
|
|
|
|
|
|
%ksob_mk_module_pkg -n 8821ce -s net/wireless
|
|
|
|
%ksob_mk_module_pkg -n shredder-kernel -s extra -r rosa-shredder-user
|
|
|
|
%ksob_mk_module_pkg -n xt_TRIPSO -s net -r tripso
|
|
|
|
|
|
|
|
# virtualbox host
|
|
|
|
%ksob_mk_module_pkg -n vboxnetflt -s misc
|
|
|
|
%ksob_mk_module_pkg -n vboxnetadp -s misc
|
|
|
|
%ksob_mk_module_pkg -n vboxdrv -s misc
|
|
|
|
%ksob_mk_module_pkg -n vboxpci -s misc
|
|
|
|
|
|
|
|
#------------------------------------------------
|
|
|
|
# a package which will pull all those modules
|
|
|
|
%package -n kernel-modules-virtualbox-host-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
|
|
|
Summary: Meta package to pull VirtualBox host kernel modules for kernel-%{flavour}-%{kernelversion}.%{patchlevel}
|
|
|
|
Group: System/Kernel and hardware
|
2020-08-27 18:51:46 +03:00
|
|
|
Version: %{kversion}
|
|
|
|
Release: %{fullrpmrel}
|
2020-07-29 10:59:41 +03:00
|
|
|
Requires: kernel-module-vboxnetflt-%{flavour}-%{buildrel}
|
|
|
|
Requires: kernel-module-vboxnetadp-%{flavour}-%{buildrel}
|
|
|
|
Requires: kernel-module-vboxdrv-%{flavour}-%{buildrel}
|
|
|
|
Requires: kernel-module-vboxpci-%{flavour}-%{buildrel}
|
|
|
|
|
|
|
|
%description -n kernel-modules-virtualbox-host-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
|
|
|
Meta package to pull VirtualBox host kernel modules for kernel-%{flavour}-%{kernelversion}.%{patchlevel}
|
|
|
|
|
|
|
|
%files -n kernel-modules-virtualbox-host-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
|
|
|
# empty
|
|
|
|
#------------------------------------------------
|
|
|
|
|
|
|
|
# virtualbox guest, to be dropped in kernels 5.6+ (upsreamized)
|
|
|
|
%ksob_mk_module_pkg -n vboxvideo -s misc
|
|
|
|
%ksob_mk_module_pkg -n vboxguest -s misc
|
|
|
|
%ksob_mk_module_pkg -n vboxsf -s misc
|
|
|
|
|
|
|
|
#------------------------------------------------
|
|
|
|
# a package which will pull all those modules
|
|
|
|
%package -n kernel-modules-virtualbox-guest-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
|
|
|
Summary: Meta package to pull VirtualBox guest kernel modules for kernel-%{flavour}-%{kernelversion}.%{patchlevel}
|
|
|
|
Group: System/Kernel and hardware
|
2020-08-27 18:51:46 +03:00
|
|
|
Version: %{kversion}
|
|
|
|
Release: %{fullrpmrel}
|
2020-07-29 10:59:41 +03:00
|
|
|
Requires: kernel-module-vboxvideo-%{flavour}-%{buildrel}
|
|
|
|
Requires: kernel-module-vboxguest-%{flavour}-%{buildrel}
|
|
|
|
Requires: kernel-module-vboxsf-%{flavour}-%{buildrel}
|
|
|
|
|
|
|
|
%description -n kernel-modules-virtualbox-guest-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
|
|
|
Meta package to pull VirtualBox guest kernel modules for kernel-%{flavour}-%{kernelversion}.%{patchlevel}
|
|
|
|
|
|
|
|
%files -n kernel-modules-virtualbox-guest-%{flavour}-%{kernelversion}.%{patchlevel}-latest
|
|
|
|
# empty
|
|
|
|
#------------------------------------------------
|
|
|
|
|
2020-08-06 17:26:48 +03:00
|
|
|
%if %{with nickel}
|
|
|
|
%ksob_mk_module_pkg -n nlkm -s misc
|
|
|
|
%ksob_mk_module_pkg -n memfreetest -s misc
|
|
|
|
%ksob_mk_module_pkg -n pcietest -s misc
|
|
|
|
%endif
|
|
|
|
|
2020-07-29 10:59:41 +03:00
|
|
|
%endif #binary_extra_modules
|
|
|
|
|
2020-08-19 20:02:58 +03:00
|
|
|
############################
|
|
|
|
|
|
|
|
%if %{with flow_abi}
|
|
|
|
%package -n kernel-%{kernelversion}.%{patchlevel}-rosa-flow-abi
|
|
|
|
Summary: Directory to install third-party binary kernel modules for kernels %{kernelversion}.%{patchlevel}.x
|
|
|
|
Group: System/Kernel and hardware
|
|
|
|
|
|
|
|
%description -n kernel-%{kernelversion}.%{patchlevel}-rosa-flow-abi
|
|
|
|
This package contains a directory to install third-party binary kernel modules for kernels %{kernelversion}.%{patchlevel}.x.
|
|
|
|
Some vendors provide binary-only kernel modules. They can put them into /lib/modules/%{kernelversion}.%{patchlevel}-rosa-flow-abi.
|
|
|
|
kmod tools will find them for kernels 5.4.x of "generic" and "nickel" flavours,
|
|
|
|
but there is no guarantee that these modules will load and work correctly on newer
|
|
|
|
or older kernels then the ones they were build against.
|
|
|
|
|
|
|
|
We call this "flow ABI" because most ABIs are not changed between %{kernelversion}.%{patchlevel}.x releases,
|
|
|
|
but there are no specific guarantees. ABI may evolve and change.
|
|
|
|
We highly recommend to use DKMS and build third-party kernel modules from source for every kernel!
|
|
|
|
|
|
|
|
This package does nothing, just owns a directory for third-party binary kernel modules.
|
|
|
|
|
|
|
|
%files -n kernel-%{kernelversion}.%{patchlevel}-rosa-flow-abi
|
|
|
|
/lib/modules/%{kernelversion}.%{patchlevel}-rosa-flow-abi
|
|
|
|
%endif #with flow_abi
|
|
|
|
|
|
|
|
################################################
|
2020-03-13 20:35:12 +03:00
|
|
|
|
2013-11-16 00:27:01 +04:00
|
|
|
%prep
|
|
|
|
%setup -q -n %top_dir_name -c
|
2020-03-13 20:35:12 +03:00
|
|
|
%if %{with uml}
|
|
|
|
cp -r %{src_dir} %{src_dir}.uml
|
|
|
|
%endif
|
2013-11-16 00:27:01 +04:00
|
|
|
cd %src_dir
|
|
|
|
|
2016-07-26 11:24:24 +03: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
|
2019-07-16 18:30:53 +03:00
|
|
|
cp %{SOURCE110} .config
|
2018-07-08 22:54:29 +03:00
|
|
|
|
2019-07-16 18:30:53 +03: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
|
|
|
|
|
|
|
|
# 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
|
|
|
|
|
2020-03-13 20:51:12 +03:00
|
|
|
touch %{build_dir}/.config.append
|
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# Enable debug info if requested.
|
2020-03-13 20:51:12 +03:00
|
|
|
sed -i '/CONFIG_DEBUG_INFO/d' .config
|
2013-11-16 00:27:01 +04:00
|
|
|
%if %build_debug
|
2020-03-13 20:51:12 +03:00
|
|
|
echo 'CONFIG_DEBUG_INFO=y' >> %{build_dir}/.config.append
|
|
|
|
echo 'CONFIG_DEBUG_INFO_DWARF4=y' >> %{build_dir}/.config.append
|
|
|
|
echo 'CONFIG_GDB_SCRIPTS=y' >> %{build_dir}/.config.append
|
|
|
|
%else
|
|
|
|
echo 'CONFIG_DEBUG_INFO=n' >> %{build_dir}/.config.append
|
2013-11-16 00:27:01 +04:00
|
|
|
%endif
|
|
|
|
|
2016-07-29 13:39:16 +03:00
|
|
|
%if %{enhanced_security}
|
2019-11-11 17:47:53 +03:00
|
|
|
### SELinux enablement
|
2019-10-07 01:35:53 +03:00
|
|
|
# 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
|
2020-03-13 20:35:12 +03:00
|
|
|
echo CONFIG_SECURITY_SELINUX_DISABLE=y >> %{build_dir}/.config.append
|
2019-10-07 01:35:53 +03:00
|
|
|
# enable selinux in kernel by default if not disabled explicitly
|
|
|
|
sed -i '/CONFIG_SECURITY_SELINUX_BOOTPARAM/d' .config
|
2020-03-13 20:35:12 +03:00
|
|
|
echo CONFIG_SECURITY_SELINUX_BOOTPARAM=y >> %{build_dir}/.config.append
|
2019-11-11 17:47:53 +03:00
|
|
|
|
|
|
|
### Signing kernel modules
|
|
|
|
# https://www.kernel.org/doc/html/v5.3/admin-guide/module-signing.html
|
|
|
|
sed -i '/CONFIG_MODULE_SIG/d' .config
|
2020-03-13 20:35:12 +03:00
|
|
|
echo CONFIG_MODULE_SIG=y >> %{build_dir}/.config.append
|
2019-11-21 21:17:42 +03:00
|
|
|
%if %{with oblig_signed_modules}
|
2019-11-11 17:47:53 +03:00
|
|
|
# Disallow loading not signed modules
|
2020-03-13 20:35:12 +03:00
|
|
|
echo CONFIG_MODULE_SIG_FORCE=y >> %{build_dir}/.config.append
|
2019-11-21 21:17:42 +03:00
|
|
|
%else
|
2020-03-13 20:35:12 +03:00
|
|
|
echo CONFIG_MODULE_SIG_FORCE=n >> %{build_dir}/.config.append
|
2019-11-21 21:17:42 +03:00
|
|
|
%endif
|
2019-12-07 21:57:55 +03:00
|
|
|
# If %%build_debig is true, signatures will be stripped
|
|
|
|
# We sign modules manually in a tricky way bellow
|
2020-03-13 20:35:12 +03:00
|
|
|
echo CONFIG_MODULE_SIG_ALL=n >> %{build_dir}/.config.append
|
2019-12-01 02:03:15 +03:00
|
|
|
# Set path to the key that will be generated later by openssl/libressl
|
2020-03-13 20:35:12 +03:00
|
|
|
echo CONFIG_MODULE_SIG_KEY=\"%{certs_signing_key_priv_rnd}\" >> %{build_dir}/.config.append
|
2019-11-18 18:48:33 +03:00
|
|
|
# Set path to one PEM file with all keys that the kernel must trust
|
|
|
|
sed -i '/CONFIG_SYSTEM_TRUSTED_KEYS/d' .config
|
2020-03-13 20:35:12 +03:00
|
|
|
echo CONFIG_SYSTEM_TRUSTED_KEYS=\"%{certs_public_keys}\" >> %{build_dir}/.config.append
|
2019-11-18 21:25:13 +03:00
|
|
|
# Reserve area for inserting a certificate without recompiling
|
|
|
|
sed -i '/CONFIG_SYSTEM_EXTRA_CERTIFICATE/d' .config
|
2020-03-13 20:35:12 +03:00
|
|
|
echo CONFIG_SYSTEM_EXTRA_CERTIFICATE=y >> %{build_dir}/.config.append
|
2019-11-14 01:08:33 +03:00
|
|
|
|
|
|
|
# Memory wiping
|
|
|
|
# Introduced in kernel 5.3 by commit 6471384af2a6530696fc0203bafe4de41a23c9ef
|
|
|
|
# Estimated performance impact is described in the commit
|
|
|
|
# "Fill newly allocated pages and heap objects with zeroes."
|
|
|
|
# To enable, add to cmdline: init_on_alloc=1
|
2020-03-18 22:20:03 +03:00
|
|
|
sed -i '/CONFIG_INIT_ON_ALLOC_DEFAULT_ON/d' .config
|
|
|
|
echo CONFIG_INIT_ON_ALLOC_DEFAULT_ON=n >> %{build_dir}/.config.append
|
2019-11-14 01:08:33 +03:00
|
|
|
# "Fill freed pages and heap objects with zeroes"
|
|
|
|
# To disable, add to cmdline: init_on_free=0
|
2020-03-18 22:20:03 +03:00
|
|
|
sed -i '/CONFIG_INIT_ON_FREE_DEFAULT_ON/d' .config
|
|
|
|
%if %{with nickel}
|
2020-03-13 20:35:12 +03:00
|
|
|
echo CONFIG_INIT_ON_FREE_DEFAULT_ON=y >> %{build_dir}/.config.append
|
2020-03-18 22:20:03 +03:00
|
|
|
%else
|
|
|
|
echo CONFIG_INIT_ON_FREE_DEFAULT_ON=n >> %{build_dir}/.config.append
|
|
|
|
%endif
|
2019-11-14 01:08:33 +03:00
|
|
|
# Here enabling only either only init_on_free or only init_on_alloc
|
|
|
|
# makes sense; init_on_alloc is not about protecting information.
|
2020-03-13 20:35:12 +03:00
|
|
|
|
2020-03-20 21:28:35 +03:00
|
|
|
# To load kernel keyring in UML
|
|
|
|
for i in STREEBOG SHA1 SHA256 SHA512 ECRDSA RSA ; do
|
|
|
|
sed -i "/CONFIG_CRYPTO_${i}/d" .config
|
|
|
|
echo "CONFIG_CRYPTO_${i}=y" >> %{build_dir}/.config.append
|
|
|
|
done
|
2020-03-16 23:19:46 +03:00
|
|
|
|
|
|
|
sed -i '/CONFIG_LSM/d' .config
|
|
|
|
echo 'CONFIG_LSM="yama,loadpin,integrity,selinux,apparmor,altha"' >> %{build_dir}/.config.append
|
|
|
|
sed -i '/CONFIG_SECURITY_ALTHA/d' .config
|
|
|
|
echo 'CONFIG_SECURITY_ALTHA=y' >> %{build_dir}/.config.append
|
2016-07-29 13:39:16 +03:00
|
|
|
%endif
|
|
|
|
|
2020-07-27 22:32:06 +03:00
|
|
|
# Disable disk-based swap (swap files and partitions) on certified systems by default
|
|
|
|
# because we cannot guarantee that data stored in swap is erased from disk securely.
|
|
|
|
# Our patch, based on Chromium OS kernel, allows to use only zram if CONFIG_DISK_BASED_SWAP_DEFAULT_ON=y.
|
|
|
|
# sysctl vm.disk_based_swap = 1 to allow disk-based swap, = 0 to disable it.
|
|
|
|
# Note that CONFIG_ZRAM_WRITEBACK is still on.
|
2020-08-06 14:31:51 +03:00
|
|
|
#sed -i '/CONFIG_DISK_BASED_SWAP_DEFAULT_ON/d' .config
|
|
|
|
#%if %{with nickel}
|
|
|
|
#echo 'CONFIG_DISK_BASED_SWAP_DEFAULT_ON=n' >> %{build_dir}/.config.append
|
|
|
|
#%else
|
2020-07-27 22:32:06 +03:00
|
|
|
echo 'CONFIG_DISK_BASED_SWAP_DEFAULT_ON=y' >> %{build_dir}/.config.append
|
2020-08-06 14:31:51 +03:00
|
|
|
#%endif
|
2020-07-27 22:32:06 +03:00
|
|
|
|
2020-03-13 20:35:12 +03:00
|
|
|
cat %{build_dir}/.config.append >> .config
|
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# Store the config file in the appropriate directory.
|
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
|
|
|
CONFIG_DIR=arch/x86/configs
|
|
|
|
mkdir -p "${CONFIG_DIR}"
|
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
cfg_file=arch/x86/configs/%{arch_suffix}_defconfig-%{flavour}
|
|
|
|
make ARCH=%{_arch} oldconfig && \
|
|
|
|
mv .config ${cfg_file}
|
|
|
|
|
|
|
|
# Looks like 'make oldconfig' removes '# CONFIG_64BIT is not set' for some
|
|
|
|
# reason. For now, let us restore it.
|
2018-07-08 22:54:29 +03:00
|
|
|
%ifarch %{ix86}
|
2019-07-16 18:30:53 +03:00
|
|
|
sed -i 's/CONFIG_64BIT=y//' ${cfg_file}
|
|
|
|
echo '# CONFIG_64BIT is not set' >> ${cfg_file}
|
2018-07-08 22:54:29 +03:00
|
|
|
%endif
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
echo "Created ${cfg_file}."
|
2016-07-22 16:37:05 +03:00
|
|
|
|
2013-11-16 00:27:01 +04: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
|
|
|
|
|
|
|
# get rid of unwanted files
|
|
|
|
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
|
|
|
|
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
|
|
|
# Ensure that build time generated private keys don't get published
|
|
|
|
# as e.g. "RPM build root" on ABF!
|
|
|
|
# Note that ABF sends SIGKILL to rpm-build.sh when the build is terminated;
|
|
|
|
# in this case trap will not work, but RPM build root also will not be
|
|
|
|
# saved because rpm-build.sh saves it, but it is SIGKILLed.
|
|
|
|
# For best security we could store private keys in RAM (not reachable from
|
|
|
|
# filesystem, so not in /tmp!) and override sth like fopen() by LD_PRELOAD
|
|
|
|
# to give the content of keys from RAM when a virtual address of a key file
|
|
|
|
# is accessed, but currently I don't know how to implement this (TODO: ).
|
|
|
|
_cleanup(){
|
2020-03-14 13:49:15 +03:00
|
|
|
# Show resulting kernel public keys for debugging
|
2020-03-14 22:02:48 +03:00
|
|
|
cat "%{src_dir}/%{certs_dir_rnd}/x509_certificate_list" | base64 -d || :
|
2020-03-14 13:49:15 +03:00
|
|
|
rm -fvr "%{src_dir}/%{certs_dir_rnd}"
|
2020-03-13 20:35:12 +03:00
|
|
|
%if %{with uml}
|
2020-03-14 22:02:48 +03:00
|
|
|
cat "%{src_dir}.uml/%{certs_dir_rnd}/x509_certificate_list" | base64 -d || :
|
2020-03-13 20:35:12 +03:00
|
|
|
rm -fvr "%{src_dir}.uml/%{certs_dir_rnd}"
|
|
|
|
%endif
|
2019-11-11 22:27:50 +03:00
|
|
|
}
|
|
|
|
# Make a trap to delete keys even if %%build fails in the middle
|
|
|
|
trap "_cleanup" EXIT
|
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
rm -rf %{temp_root}
|
|
|
|
install -d %{temp_root}
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
cd %src_dir
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2019-11-11 17:47:53 +03:00
|
|
|
### Keys for signing kernel modules
|
|
|
|
# Keys can be generated both manually and automatically,
|
|
|
|
# let's generate them by ourselves to take full control of the process
|
|
|
|
# https://www.ibm.com/support/knowledgecenter/en/SSB23S_1.1.0.13/gtps7/cfgcert.html
|
2019-11-17 16:09:47 +03:00
|
|
|
# See also certs/Makefile in kernel source
|
2019-11-11 17:47:53 +03:00
|
|
|
%if %{enhanced_security}
|
|
|
|
mkdir -p "%{certs_dir_rnd}"
|
2019-11-12 02:06:06 +03:00
|
|
|
|
|
|
|
# On ABF, %%packager == $username <$email>
|
|
|
|
# Try to extract email from %%packager if it is set
|
|
|
|
_get_email(){
|
|
|
|
# Check that macro %%packager was set and is not empty
|
|
|
|
if echo '%{packager}' | grep -q 'packager}$' || [ -z "%{packager}" ]
|
|
|
|
# If was not set or is empty, use default email
|
|
|
|
then echo 'rpmbuild@rosa.unknown' && return
|
|
|
|
# Otherwise try to extract email from 'name <email>' or sth else
|
|
|
|
else temp="$(echo '%{packager}' | tr '[:upper:]' '[:lower:]' | tr ' ' '\n' | tr -d '<>' | grep -E '@.*\..*' | head -n 1)"
|
|
|
|
fi
|
|
|
|
# Validate that what we have now is a valid email
|
|
|
|
# https://stackoverflow.com/a/2138832, https://stackoverflow.com/a/41192733
|
|
|
|
# Note that we set %%_buildshell to /bin/bash to guarantee the work of this bashism
|
|
|
|
regex_email="^[a-z0-9!#\$%&'*+/=?^_\`{|}~-]+(\.[a-z0-9!#$%&'*+/=?^_\`{|}~-]+)*@([a-z0-9]([a-z0-9-]*[a-z0-9])?\.)+[a-z0-9]([a-z0-9-]*[a-z0-9])?\$"
|
|
|
|
if [[ "$temp" =~ ${regex_email} ]]
|
|
|
|
# If it is, use it
|
|
|
|
then echo "$temp" && return
|
|
|
|
# Otherwise use default email
|
|
|
|
else echo 'rpmbuild@rosa.unknown' && return
|
|
|
|
fi
|
|
|
|
# If script above has not return'ed for any reason,
|
|
|
|
# e.g. because of non-bash shell being not able to
|
|
|
|
# process regexp, use default email
|
|
|
|
echo 'rpmbuild@rosa.unknown'
|
|
|
|
}
|
|
|
|
email="$(_get_email)"
|
|
|
|
|
2019-11-11 17:47:53 +03:00
|
|
|
cat <<EOF > "%{certs_key_config_rnd}"
|
|
|
|
[ req ]
|
|
|
|
prompt = no
|
2019-11-17 16:09:47 +03:00
|
|
|
string_mask = utf8only
|
2020-03-18 23:36:11 +03:00
|
|
|
#default_keyfile = %{certs_signing_key_priv_rnd}
|
2019-11-11 17:47:53 +03:00
|
|
|
distinguished_name = req_distinguished_name
|
2019-11-17 16:09:47 +03:00
|
|
|
x509_extensions = myexts
|
2019-11-11 17:47:53 +03:00
|
|
|
[ req_distinguished_name ]
|
|
|
|
organizationName = %{vendor} rpmbuild
|
2020-03-18 23:36:11 +03:00
|
|
|
commonName = Build time autogenerated @ALGO@ kernel key
|
2019-11-12 02:06:06 +03:00
|
|
|
emailAddress = ${email}
|
2019-11-17 16:09:47 +03:00
|
|
|
[ myexts ]
|
|
|
|
basicConstraints=critical,CA:FALSE
|
|
|
|
keyUsage=digitalSignature
|
|
|
|
subjectKeyIdentifier=hash
|
|
|
|
authorityKeyIdentifier=keyid
|
2019-11-11 17:47:53 +03:00
|
|
|
EOF
|
|
|
|
cat "%{certs_key_config_rnd}"
|
2020-03-18 23:36:11 +03:00
|
|
|
sed -e 's,@ALGO@,RSA,g' "%{certs_key_config_rnd}" > "%{certs_key_config_rnd}.RSA"
|
|
|
|
sed -e 's,@ALGO@,GOST R 34.10-2012,g' "%{certs_key_config_rnd}" > "%{certs_key_config_rnd}.GOST"
|
|
|
|
# avoid using the template
|
|
|
|
rm -f "%{certs_key_config_rnd}"
|
|
|
|
|
|
|
|
_libressl_gen_key(){
|
|
|
|
if [ "$GOST_KEY" = 1 ]
|
|
|
|
then
|
|
|
|
lssl_req_gost_args="\
|
|
|
|
-newkey gost2001 \
|
|
|
|
-pkeyopt dgst:streebog512 -pkeyopt paramset:A \
|
|
|
|
-streebog512"
|
|
|
|
OUT="%{certs_signing_key_priv_rnd}.GOST"
|
|
|
|
CONFIG="%{certs_key_config_rnd}.GOST"
|
|
|
|
else
|
|
|
|
lssl_req_gost_args=""
|
|
|
|
OUT="%{certs_signing_key_priv_rnd}.RSA"
|
|
|
|
CONFIG="%{certs_key_config_rnd}.RSA"
|
|
|
|
fi
|
|
|
|
libressl req -new -nodes -utf8 -batch \
|
|
|
|
$lssl_req_gost_args \
|
|
|
|
-days 109500 \
|
|
|
|
-x509 -config "$CONFIG" \
|
|
|
|
-out "$OUT" \
|
|
|
|
-keyout "$OUT"
|
|
|
|
|
|
|
|
# Verify
|
|
|
|
if [ "$GOST_KEY" = 1 ]; then
|
|
|
|
libressl x509 -in "%{certs_signing_key_priv_rnd}.GOST" -text -noout \
|
|
|
|
| grep -E 'Signature Algorithm:.*GOST R 34.10-2012'
|
|
|
|
libressl x509 -in "%{certs_signing_key_priv_rnd}.GOST" -text -noout \
|
|
|
|
| grep -E 'Digest Algorithm:.*GOST R 34-11-2012'
|
|
|
|
libressl x509 -in "%{certs_signing_key_priv_rnd}.GOST" -text -noout \
|
|
|
|
| grep -E 'Public Key Algorithm:.*GOST R 34.10-2012'
|
|
|
|
fi
|
|
|
|
}
|
2019-11-11 17:47:53 +03:00
|
|
|
|
2020-03-18 23:36:11 +03:00
|
|
|
GOST_KEY=0 _libressl_gen_key
|
|
|
|
GOST_KEY=1 _libressl_gen_key
|
|
|
|
# Fake CONFIG_MODULE_SIG_KEY to make build scripts happy
|
|
|
|
cp -v "%{certs_signing_key_priv_rnd}.RSA" "%{certs_signing_key_priv_rnd}"
|
2019-11-17 16:56:39 +03:00
|
|
|
|
2020-03-18 23:36:11 +03:00
|
|
|
# Strip public parts from the generated PEMs
|
2019-11-18 18:48:33 +03:00
|
|
|
sed -n \
|
2020-03-18 23:36:11 +03:00
|
|
|
'/^-----BEGIN CERTIFICATE-----$/,/^-----END CERTIFICATE-----$/p' \
|
|
|
|
"%{certs_signing_key_priv_rnd}.GOST" \
|
|
|
|
"%{certs_signing_key_priv_rnd}.RSA" \
|
|
|
|
> "%{certs_public_keys}"
|
2019-12-07 21:57:55 +03:00
|
|
|
|
|
|
|
# link sign-file and extract-cert with LibreSSL instead of OpenSSL
|
|
|
|
libressl_cflags="$(pkg-config --cflags --libs libressl-libcrypto)"
|
|
|
|
if [ $? != 0 ] ; then exit $? ; fi
|
|
|
|
sed -i %{src_dir}/scripts/Makefile \
|
2020-03-13 20:35:12 +03:00
|
|
|
%if %{with uml}
|
|
|
|
%{src_dir}.uml/scripts/Makefile \
|
|
|
|
%endif
|
2019-12-07 21:57:55 +03:00
|
|
|
-e "s,-lcrypto,${libressl_cflags},g"
|
2019-11-18 18:48:33 +03:00
|
|
|
|
2020-03-18 23:36:11 +03:00
|
|
|
%if %{with additional_keys}
|
2020-03-15 20:26:01 +03:00
|
|
|
# Add additional public RSA keys to the list of trusted keys for kernel modules
|
2019-11-17 16:56:39 +03:00
|
|
|
# Build kernel --without additional_keys if you do not want to trust them
|
2020-03-15 20:26:01 +03:00
|
|
|
cat %{expand:%(for i in `seq 1 12`; do echo "%%SOURCE$((200+${i}))" | tr "\n" " "; done)} \
|
|
|
|
>> "%{certs_public_keys}"
|
2019-11-17 16:56:39 +03:00
|
|
|
%endif #endif additional_keys
|
2019-11-19 00:24:49 +03:00
|
|
|
cat %{certs_public_keys}
|
2019-11-17 16:56:39 +03:00
|
|
|
%endif #endif enhanced_security
|
2019-11-11 17:47:53 +03:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# .config
|
|
|
|
%smake -s mrproper
|
|
|
|
cp arch/x86/configs/%{arch_suffix}_defconfig-%{flavour} .config
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# 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
|
|
|
|
2019-12-22 02:24:52 +03:00
|
|
|
# Print debug messages when loglevel=7 in cmdline.
|
|
|
|
# Those messages can be caught by debugfs without -DDEBUG.
|
|
|
|
# but sometimes it is required to see them via a serial port when booting the kernel.
|
|
|
|
# '#ifdef DEBUG' is used in different places for different purposes,
|
|
|
|
# so change DEBUG to PRINTK_DEBUG in one specific place.
|
2020-03-21 13:28:01 +03:00
|
|
|
#%if %build_debug
|
|
|
|
#sed -i %{src_dir}/include/linux/printk.h \
|
|
|
|
# -e 's,^#ifdef DEBUG$,#if defined(DEBUG) || defined(PRINTK_DEBUG),g'
|
|
|
|
#export KCPPFLAGS="-DPRINTK_DEBUG"
|
|
|
|
#%endif
|
2019-12-22 02:24:52 +03:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# build the kernel
|
|
|
|
echo "Building kernel %{kver_full}"
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2019-12-07 21:57:55 +03:00
|
|
|
%kmake V=1 -s all
|
2015-04-23 12:11:47 +03:00
|
|
|
|
2020-07-29 10:59:41 +03:00
|
|
|
# Install modules
|
|
|
|
mkdir -p %{temp_modules}/%{kver_full}
|
|
|
|
%smake INSTALL_MOD_PATH=%{temp_root} KERNELRELEASE=%{kver_full} modules_install
|
|
|
|
|
|
|
|
%if %{with binary_extra_modules}
|
|
|
|
# Build and install procedure is specific to each Makefile from kernmel-source-* packages
|
|
|
|
# See also: https://www.kernel.org/doc/html/latest/kbuild/modules.html
|
|
|
|
# Copy directory because write permissions are required
|
|
|
|
# `make modules_install` must be done before this, otherwise these copied files will be deleted
|
|
|
|
|
|
|
|
cp -r "$(rpm -q --qf '/usr/src/rtl8821ce-%%{VERSION}-%%{RELEASE}' kernel-source-rtl8821ce)" kernel-source-rtl8821ce
|
|
|
|
pushd kernel-source-rtl8821ce
|
|
|
|
%kmake KSRC=%{src_dir} M="$PWD"
|
|
|
|
mkdir -p %{temp_modules}/%{kver_full}/kernel/net/wireless/
|
|
|
|
cp 8821ce.ko %{temp_modules}/%{kver_full}/kernel/net/wireless/8821ce.ko
|
|
|
|
popd
|
|
|
|
rm -fr kernel-source-rtl8821ce
|
|
|
|
|
|
|
|
cp -r "$(rpm -q --qf '/usr/src/shredder-kernel-%%{VERSION}-%%{RELEASE}' kernel-source-shredder-kernel)" kernel-source-shredder-kernel
|
|
|
|
pushd kernel-source-shredder-kernel
|
|
|
|
%kmake KERNEL_PATH=%{src_dir}
|
|
|
|
mkdir -p %{temp_modules}/%{kver_full}/kernel/extra/
|
|
|
|
cp shredder-kernel.ko %{temp_modules}/%{kver_full}/kernel/extra/
|
|
|
|
popd
|
|
|
|
rm -fr kernel-source-shredder-kernel
|
|
|
|
|
|
|
|
cp -r "$(rpm -q --qf '/usr/src/tripso-%%{VERSION}-%%{RELEASE}' kernel-source-tripso)" kernel-source-tripso
|
|
|
|
pushd kernel-source-tripso
|
|
|
|
%kmake KDIR=%{src_dir}
|
|
|
|
mkdir -p %{temp_modules}/%{kver_full}/kernel/net
|
|
|
|
cp xt_TRIPSO.ko %{temp_modules}/%{kver_full}/kernel/net/
|
|
|
|
popd
|
|
|
|
rm -fr kernel-source-tripso
|
|
|
|
|
|
|
|
# build commands for virtualbox are based on the ones from the virtualbox package
|
|
|
|
cp -r "$(rpm -q --qf '/usr/src/vboxadditions-%%{VERSION}-%%{RELEASE}' kernel-source-virtualbox-vboxadditions)" kernel-source-virtualbox-vboxadditions
|
|
|
|
mkdir -p %{temp_modules}/%{kver_full}/kernel/misc/
|
|
|
|
pushd kernel-source-virtualbox-vboxadditions
|
|
|
|
%kmake KERN_DIR=%{src_dir} KERN_VER=%{kver_full} -C vboxguest
|
|
|
|
cp -fv vboxguest/Module.symvers vboxsf/
|
|
|
|
%kmake KERN_DIR=%{src_dir} KERN_VER=%{kver_full} -C vboxsf
|
|
|
|
# TODO: vboxvideo is also build inside the upstream kernel...
|
|
|
|
# vboxsf is not in kernel 5.4
|
|
|
|
# https://www.phoronix.com/scan.php?page=news_item&px=VirtualBox-Shared-Folder-5.6
|
|
|
|
cp -fv vboxsf/Module.symvers vboxvideo/
|
|
|
|
%kmake KERN_DIR=%{src_dir} KERN_VER=%{kver_full} -C vboxvideo
|
|
|
|
for i in vboxguest vboxsf vboxvideo
|
|
|
|
do
|
|
|
|
cp -v "${i}/${i}.ko" %{temp_modules}/%{kver_full}/kernel/misc/
|
|
|
|
done
|
|
|
|
popd
|
|
|
|
|
|
|
|
cp -r "$(rpm -q --qf '/usr/src/virtualbox-%%{VERSION}-%%{RELEASE}' kernel-source-virtualbox)" kernel-source-virtualbox
|
|
|
|
mkdir -p %{temp_modules}/%{kver_full}/kernel/misc/
|
|
|
|
pushd kernel-source-virtualbox
|
|
|
|
make -C vboxdrv KERN_DIR=%{src_dir} KERN_VER=%{kver_full}
|
|
|
|
cp -fv vboxdrv/Module.symvers vboxnetflt
|
|
|
|
cp -fv vboxdrv/Module.symvers vboxnetadp
|
|
|
|
make -C vboxnetflt KERN_DIR=%{src_dir} KERN_VER=%{kver_full}
|
|
|
|
make -C vboxnetadp KERN_DIR=%{src_dir} KERN_VER=%{kver_full}
|
|
|
|
cp -fv vboxnetadp/Module.symvers vboxpci/
|
|
|
|
make -C vboxpci KERN_DIR=%{src_dir} KERN_VER=%{kver_full}
|
|
|
|
for i in vboxnetflt vboxnetadp vboxdrv vboxpci
|
|
|
|
do
|
|
|
|
cp -v "${i}/${i}.ko" %{temp_modules}/%{kver_full}/kernel/misc/
|
|
|
|
done
|
|
|
|
popd
|
|
|
|
|
2020-08-06 17:26:48 +03:00
|
|
|
%if %{with nickel}
|
|
|
|
# rosa-test-suite uses /sr/src/xxx-version, not /usr/src/xxx-version-release
|
|
|
|
cp -r "$(rpm -q --qf '/usr/src/rosa-test-suite-%%{VERSION}' kernel-source-rosa-test-suite)" kernel-source-rosa-test-suite
|
|
|
|
pushd kernel-source-rosa-test-suite
|
|
|
|
mkdir -p %{temp_modules}/%{kver_full}/kernel/misc/
|
|
|
|
for i in nlkm memfreetest pcietest
|
|
|
|
do
|
|
|
|
cat << EOF > Makefile
|
|
|
|
obj-m := ${i}.o
|
|
|
|
all:
|
|
|
|
make -C %{src_dir} M=\$(PWD) modules
|
|
|
|
EOF
|
|
|
|
%kmake
|
|
|
|
cp -fv ${i}.ko %{temp_modules}/%{kver_full}/kernel/misc/
|
|
|
|
done
|
|
|
|
popd
|
|
|
|
%endif #with nickel <- with binary_extra_modules
|
|
|
|
|
|
|
|
%endif #with binary_extra_modules
|
2020-07-29 10:59:41 +03:00
|
|
|
|
2020-03-13 20:35:12 +03:00
|
|
|
%if %{with uml}
|
|
|
|
cp -rv %{certs_dir_rnd} %{src_dir}.uml/
|
|
|
|
pushd %{src_dir}.uml
|
|
|
|
%kmake ARCH=um defconfig
|
|
|
|
cp .config .config.default
|
|
|
|
cat %{build_dir}/.config.append >> .config
|
|
|
|
%kmake oldconfig ARCH=um
|
|
|
|
diff -u .config.default .config || :
|
2020-03-16 19:38:59 +03: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//' .config
|
|
|
|
echo '# CONFIG_64BIT is not set' >> .config
|
|
|
|
%endif
|
2020-03-13 20:35:12 +03:00
|
|
|
%kmake ARCH=um linux
|
|
|
|
install -Dm0755 linux %{temp_root}%{_bindir}/linux-uml-%{kver_full}
|
|
|
|
#rm -fv linux
|
|
|
|
%kmake V=1 ARCH=um modules
|
|
|
|
mkdir -p %{temp_root}/lib/modules-uml/%{kver_full}/
|
|
|
|
%kmake ARCH=um INSTALL_MOD_PATH=%{temp_root}/lib/modules-uml/%{kver_full}/ modules_install
|
|
|
|
popd
|
|
|
|
%endif
|
|
|
|
|
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}
|
|
|
|
xz -c Module.symvers > %{temp_boot}/symvers-%{kver_full}.xz
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
cp -f arch/x86/boot/bzImage %{temp_boot}/vmlinuz-%{kver_full}
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2019-07-16 18:30:53 +03: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
|
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# remove /lib/firmware, we use a separate linux-firmware package
|
|
|
|
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
|
|
|
|
%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}/
|
|
|
|
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}
|
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
|
|
|
|
2019-07-16 18:30:53 +03: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
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# aufs2 has a special file needed
|
2019-12-16 16:12:07 +03: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
|
|
|
|
2019-07-16 18:30:53 +03: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/
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# needed for arch/x86/purgatory
|
|
|
|
cp -fR lib/*.h lib/*.c %{temp_devel_root}/lib/
|
2013-11-16 00:27:01 +04:00
|
|
|
|
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
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
rm -rf %{temp_devel_root}/arch/arm*
|
|
|
|
rm -rf %{temp_devel_root}/include/kvm/arm*
|
|
|
|
rm -rf %{temp_devel_root}/include/soc
|
2013-11-16 00:27:01 +04:00
|
|
|
|
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)
|
2020-03-14 13:49:15 +03:00
|
|
|
pushd %{temp_devel_root}
|
|
|
|
%smake V=1 -s prepare
|
|
|
|
%smake V=1 -s scripts
|
|
|
|
%smake V=1 -s clean
|
|
|
|
popd
|
2019-07-16 18:30:53 +03:00
|
|
|
rm -f %{temp_devel_root}/.config.old
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# fix permissions
|
|
|
|
chmod -R a+rX %{temp_devel_root}
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# disable mrproper in -devel rpms
|
|
|
|
patch -p1 --fuzz=0 -d %{temp_devel_root} -i %{SOURCE2}
|
|
|
|
|
|
|
|
# endif build_devel
|
2013-11-16 00:27:01 +04:00
|
|
|
%endif
|
|
|
|
|
2019-07-16 18:30:53 +03: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
|
|
|
|
|
|
|
|
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 {}`'
|
|
|
|
|
|
|
|
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
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2019-07-16 18:30:53 +03:00
|
|
|
# endif build_debug
|
|
|
|
%endif
|
|
|
|
|
2019-12-07 21:57:55 +03:00
|
|
|
%if %{enhanced_security}
|
2020-07-29 10:59:41 +03:00
|
|
|
# https://patchwork.kernel.org/patch/11446123/
|
2019-12-07 21:57:55 +03:00
|
|
|
_libressl_sign(){
|
|
|
|
if [ ! -f "$1" ]; then
|
|
|
|
echo "No file $1"
|
|
|
|
return 0
|
|
|
|
fi
|
|
|
|
f="$1"
|
2020-03-18 23:36:11 +03:00
|
|
|
%if %{with gost_sign}
|
2020-03-29 01:07:43 +03:00
|
|
|
%{src_dir}/scripts/sign-file streebog512 \
|
|
|
|
"%{certs_signing_key_priv_rnd}.GOST" "%{certs_signing_key_priv_rnd}.GOST" "$f"
|
2020-03-15 20:26:01 +03:00
|
|
|
%else
|
|
|
|
%{src_dir}/scripts/sign-file sha512 \
|
2020-03-20 11:27:35 +03:00
|
|
|
"%{certs_signing_key_priv_rnd}.RSA" "%{certs_signing_key_priv_rnd}.RSA" "$f"
|
2020-03-15 20:26:01 +03:00
|
|
|
%endif
|
2019-12-07 21:57:55 +03:00
|
|
|
unset f
|
|
|
|
}
|
|
|
|
export -f _libressl_sign
|
2020-03-13 20:35:12 +03:00
|
|
|
find %{temp_modules}/%{kver_full}/kernel \
|
|
|
|
%if %{with uml}
|
|
|
|
%{temp_root}/lib/modules-uml/%{kver_full} \
|
|
|
|
%endif
|
|
|
|
-name '*.ko' -print0 | sort -u | \
|
2019-12-07 21:57:55 +03:00
|
|
|
xargs --null -P "$(nproc)" -I {} "$SHELL" -e -x -c 'if ! _libressl_sign "{}"; \
|
|
|
|
then echo Failed _libressl_sign on "{}" && exit 1; fi'
|
2019-11-13 17:35:59 +03:00
|
|
|
%endif
|
|
|
|
|
2019-07-16 18:30:53 +03: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
|
2020-07-29 10:59:41 +03:00
|
|
|
%if %{with binary_extra_modules}
|
|
|
|
# 8821ce.ko.debug will not be excluded and will be in the main debug subpackage
|
|
|
|
%exclude %{_modulesdir}/%{kver_full}/kernel/net/wireless/8821ce.ko%{kmod_suffix}
|
|
|
|
%exclude %{_modulesdir}/%{kver_full}/kernel/extra/shredder-kernel.ko%{kmod_suffix}
|
|
|
|
%exclude %{_modulesdir}/%{kver_full}/kernel/net/xt_TRIPSO.ko%{kmod_suffix}
|
|
|
|
# vbox host: vboxnetflt vboxnetadp vboxdrv vboxpci
|
|
|
|
# vbox guest: vboxvideo vboxguest vboxsf
|
|
|
|
%exclude %{_modulesdir}/%{kver_full}/kernel/misc/vbox*.ko%{kmod_suffix}
|
2020-08-06 17:26:48 +03:00
|
|
|
%if %{with nickel}
|
|
|
|
%exclude %{_modulesdir}/%{kver_full}/kernel/misc/nlkm.ko%{kmod_suffix}
|
|
|
|
%exclude %{_modulesdir}/%{kver_full}/kernel/misc/memfreetest.ko%{kmod_suffix}
|
|
|
|
%exclude %{_modulesdir}/%{kver_full}/kernel/misc/pcietest.ko%{kmod_suffix}
|
2020-07-29 10:59:41 +03:00
|
|
|
%endif
|
2020-08-06 17:26:48 +03:00
|
|
|
%endif #with binary_extra_modules
|
2019-07-16 18:30:53 +03:00
|
|
|
%{_modulesdir}/%{kver_full}/modules.*
|
|
|
|
EOF
|
|
|
|
|
|
|
|
%if %build_debug
|
|
|
|
cat ../kernel_exclude_debug_files.%{flavour} >> $kernel_files
|
|
|
|
%endif
|
|
|
|
|
|
|
|
# set extraversion to match srpm to get nice version reported by the tools
|
|
|
|
LC_ALL=C sed -ri "s/^EXTRAVERSION.*/EXTRAVERSION = -%{fullrpmrel}/" Makefile
|
2013-11-16 00:27:01 +04:00
|
|
|
|
|
|
|
%if %{build_perf}
|
2015-04-28 16:36:29 +03:00
|
|
|
%ifarch x86_64
|
|
|
|
%define perf_is_x64 1
|
|
|
|
%else
|
|
|
|
%define perf_is_x64 0
|
|
|
|
%endif
|
|
|
|
|
2018-12-01 18:39:37 +03:00
|
|
|
%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}
|
|
|
|
# make sure version-gen.sh is executable.
|
|
|
|
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-11-11 22:27:50 +03:00
|
|
|
_cleanup
|
2019-07-16 18:30:53 +03:00
|
|
|
############################################################################
|
2013-11-16 00:27:01 +04:00
|
|
|
|
|
|
|
%install
|
|
|
|
cd %src_dir
|
|
|
|
|
|
|
|
# We want to be able to test several times the install part
|
|
|
|
rm -rf %{buildroot}
|
|
|
|
cp -a %{temp_root} %{buildroot}
|
|
|
|
|
2019-11-11 21:16:01 +03:00
|
|
|
%if %{enhanced_security}
|
|
|
|
# Multithreaded verification that every kernel module
|
|
|
|
# has a signature attached to it
|
|
|
|
mkdir -p "%{certs_dir_rnd}"
|
2019-11-14 01:26:18 +03:00
|
|
|
touch %{certs_verify_tmp}
|
2019-11-11 21:16:01 +03:00
|
|
|
_verify_signature(){
|
|
|
|
if [ -z "$1" ] || [ ! -f "$1" ]; then return; fi
|
2019-11-12 01:32:36 +03:00
|
|
|
if hexdump -C "$1" | rev | cut -f 2 -d '|' | rev | tr -d '\n' | \
|
2019-11-11 21:16:01 +03:00
|
|
|
grep -q '~Module signature appended~'
|
|
|
|
then
|
2019-11-14 01:26:18 +03:00
|
|
|
if [ -f %{certs_verify_tmp} ]; then
|
|
|
|
rm -f %{certs_verify_tmp}
|
|
|
|
fi
|
2019-11-11 21:16:01 +03:00
|
|
|
else
|
|
|
|
echo "ERROR: Module $1 has no signature attached to it!"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
}
|
|
|
|
export -f _verify_signature
|
2020-03-13 20:35:12 +03:00
|
|
|
find %{target_modules} \
|
|
|
|
%if %{with uml}
|
|
|
|
%{buildroot}/lib/modules-uml/%{kver_full} \
|
|
|
|
%endif
|
|
|
|
-name '*.ko' -print0 | sort -u | \
|
2019-11-11 23:48:27 +03:00
|
|
|
xargs --null -P "$(nproc)" -I {} "$SHELL" -c '_verify_signature "{}"'
|
2019-11-14 01:26:18 +03:00
|
|
|
if [ -f %{certs_verify_tmp} ]; then
|
2019-11-11 21:16:01 +03:00
|
|
|
echo "ERROR: seems that signatures of none modules were verified!"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
rm -f %{certs_verify_tmp}
|
|
|
|
%endif
|
|
|
|
|
2013-11-16 00:27:01 +04:00
|
|
|
# compressing modules
|
|
|
|
%if %{build_modxz}
|
|
|
|
find %{target_modules} -name "*.ko" | %kxargs xz -6e
|
|
|
|
%else
|
|
|
|
find %{target_modules} -name "*.ko" | %kxargs gzip -9
|
|
|
|
%endif
|
|
|
|
|
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
|
|
|
|
|
2013-11-16 00:27:01 +04:00
|
|
|
# sniff, if we compressed all the modules, we change the stamp :(
|
|
|
|
# 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
|
|
|
|
|
|
|
|
# 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
|
2013-11-16 00:27:01 +04:00
|
|
|
%if %{build_perf}
|
|
|
|
|
|
|
|
# perf tool binary and supporting scripts/binaries
|
2015-04-28 16:36:29 +03:00
|
|
|
make -C tools/perf -s V=1 DESTDIR=%{buildroot} IS_X86_64=%{perf_is_x64} HAVE_CPLUS_DEMANGLE=1 prefix=%{_prefix} install
|
2013-11-16 00:27:01 +04:00
|
|
|
|
2020-05-11 09:33:18 +03:00
|
|
|
# Versionize shebang (#!/usr/bin/env python -> #!/usr/bin/python3)
|
|
|
|
sed -i -e '1 s,^.*$,#!%{__python3},' %{buildroot}%{_prefix}/libexec/perf-core/scripts/python/exported-sql-viewer.py
|
|
|
|
|
2013-11-16 00:27:01 +04:00
|
|
|
# perf man pages (note: implicit rpm magic compresses them later)
|
2015-04-28 16:36:29 +03:00
|
|
|
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
|
2020-07-29 10:59:41 +03:00
|
|
|
|
|
|
|
# delete junk
|
2020-08-06 17:26:48 +03:00
|
|
|
rm -fr %{buildroot}%{_usr}/src/*/kernel-source-*
|
2020-08-19 20:02:58 +03:00
|
|
|
|
|
|
|
%if %{with flow_abi}
|
|
|
|
# Prefix with "zzz" to put this directory into the end of search list
|
|
|
|
# and avoid tricks with depmod configs
|
|
|
|
mkdir -p %{buildroot}/lib/modules/%{kernelversion}.%{patchlevel}-rosa-flow-abi
|
|
|
|
ln -s /lib/modules/%{kernelversion}.%{patchlevel}-rosa-flow-abi %{buildroot}%{_modulesdir}/%{kver_full}/kernel/zzz-%{kernelversion}.%{patchlevel}-rosa-flow-abi
|
|
|
|
%endif
|