2023-11-18 04:38:53 +00:00
|
|
|
# All global changes to build and install should follow this line.
|
|
|
|
|
|
|
|
# Disable LTO in userspace packages.
|
|
|
|
%global _lto_cflags %{nil}
|
|
|
|
|
|
|
|
# The libexec directory is not used by the linker, so the shared object there
|
|
|
|
# should not be exported to RPM provides.
|
|
|
|
%global __provides_exclude_from ^%{_libexecdir}/kselftests
|
|
|
|
|
|
|
|
# Disable the find-provides.ksyms script.
|
|
|
|
%global __provided_ksyms_provides %{nil}
|
|
|
|
|
|
|
|
# All global wide changes should be above this line otherwise
|
|
|
|
# the %%install section will not see them.
|
|
|
|
%global __spec_install_pre %{___build_pre}
|
|
|
|
|
|
|
|
# Kernel has several large (hundreds of mbytes) rpms, they take ~5 mins
|
|
|
|
# to compress by single-threaded xz. Switch to threaded compression,
|
|
|
|
# and from level 2 to 3 to keep compressed sizes close to "w2" results.
|
|
|
|
#
|
|
|
|
# NB: if default compression in /usr/lib/rpm/redhat/macros ever changes,
|
|
|
|
# this one might need tweaking (e.g. if default changes to w3.xzdio,
|
|
|
|
# change below to w4T.xzdio):
|
|
|
|
%global _binary_payload w3T.xzdio
|
|
|
|
|
|
|
|
# Define the version of the Linux Kernel Archive tarball.
|
2023-11-18 05:13:17 +00:00
|
|
|
%global LKAver %{major_ver}.%{minor_ver}.%{patch_ver}
|
2023-11-18 04:38:53 +00:00
|
|
|
|
|
|
|
# Define the buildid, if required.
|
|
|
|
#global buildid .local
|
|
|
|
|
|
|
|
# Determine the sublevel number and set pkg_version.
|
|
|
|
%global pkg_version %{LKAver}
|
|
|
|
|
|
|
|
# Set pkg_release.
|
2023-11-18 05:13:17 +00:00
|
|
|
%global pkg_release %{release_v}%{?rc_ver:.rc%{rc_ver}}%{?next_snapshot_date:.next%{next_snapshot_date}}%{?buildid}%{?dist}
|
2023-11-18 04:38:53 +00:00
|
|
|
|
|
|
|
# Architectures upon which we can sign the kernel
|
|
|
|
# for secure boot authentication.
|
|
|
|
%ifarch x86_64 || aarch64
|
|
|
|
%global signkernel 1
|
|
|
|
%else
|
|
|
|
%global signkernel 0
|
|
|
|
%endif
|
|
|
|
|
|
|
|
# Sign modules on all architectures that build modules.
|
|
|
|
%ifarch x86_64 || aarch64
|
|
|
|
%global signmodules 1
|
|
|
|
%else
|
|
|
|
%global signmodules 0
|
|
|
|
%endif
|
|
|
|
|
|
|
|
### BCAT
|
|
|
|
# Further investigation is required before these features
|
|
|
|
# are enabled for the ELRepo Project kernels.
|
|
|
|
%global signkernel 0
|
|
|
|
%global signmodules 0
|
|
|
|
### BCAT
|
|
|
|
|
|
|
|
# Compress modules on all architectures that build modules.
|
|
|
|
%ifarch x86_64 || aarch64
|
|
|
|
%global zipmodules 1
|
|
|
|
%else
|
|
|
|
%global zipmodules 0
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%if %{zipmodules}
|
|
|
|
%global zipsed -e 's/\.ko$/\.ko.xz/'
|
|
|
|
# For parallel xz processes. Replace with 1 to go back to single process.
|
|
|
|
%global zcpu `nproc --all`
|
|
|
|
%endif
|
|
|
|
|
|
|
|
# The following build options are enabled by default, but may become disabled
|
|
|
|
# by later architecture-specific checks. These can also be disabled by using
|
|
|
|
# --without <opt> in the rpmbuild command, or by forcing these values to 0.
|
|
|
|
#
|
2023-11-18 05:13:17 +00:00
|
|
|
# kernel-*
|
2023-11-18 04:38:53 +00:00
|
|
|
%define with_std %{?_without_std: 0} %{?!_without_std: 1}
|
|
|
|
#
|
2023-11-18 05:13:17 +00:00
|
|
|
# kernel-*-headers
|
2023-11-18 04:38:53 +00:00
|
|
|
%define with_headers %{?_without_headers: 0} %{?!_without_headers: 1}
|
|
|
|
#
|
2023-11-18 05:13:17 +00:00
|
|
|
# kernel-*-doc
|
2023-11-18 04:38:53 +00:00
|
|
|
%define with_doc %{?_without_doc: 0} %{?!_without_doc: 1}
|
|
|
|
#
|
|
|
|
# perf
|
|
|
|
%define with_perf %{?_without_perf: 0} %{?!_without_perf: 1}
|
|
|
|
#
|
|
|
|
# tools
|
|
|
|
%define with_tools %{?_without_tools: 0} %{?!_without_tools: 1}
|
|
|
|
#
|
|
|
|
# bpf tool
|
|
|
|
%define with_bpftool %{?_without_bpftool: 0} %{?!_without_bpftool: 1}
|
|
|
|
#
|
|
|
|
# control whether to install the vdso directories
|
|
|
|
%define with_vdso_install %{?_without_vdso_install: 0} %{?!_without_vdso_install: 1}
|
|
|
|
#
|
2023-11-18 05:13:17 +00:00
|
|
|
# Additional option for toracat-friendly, one-off, kernel-* building.
|
|
|
|
# Only build the base kernel-* (--with baseonly):
|
2023-11-18 04:38:53 +00:00
|
|
|
%define with_baseonly %{?_with_baseonly: 1} %{?!_with_baseonly: 0}
|
|
|
|
|
|
|
|
%global KVERREL %{pkg_version}-%{pkg_release}.%{_target_cpu}
|
|
|
|
|
2023-11-18 05:13:17 +00:00
|
|
|
# If requested, only build base kernel-* package.
|
2023-11-18 04:38:53 +00:00
|
|
|
%if %{with_baseonly}
|
|
|
|
%define with_doc 0
|
|
|
|
%define with_perf 0
|
|
|
|
%define with_tools 0
|
|
|
|
%define with_bpftool 0
|
|
|
|
%define with_vdso_install 0
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%ifarch noarch
|
|
|
|
%define with_std 0
|
|
|
|
%define with_headers 0
|
|
|
|
%define with_perf 0
|
|
|
|
%define with_tools 0
|
|
|
|
%define with_bpftool 0
|
|
|
|
%define with_vdso_install 0
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%ifarch x86_64 || aarch64
|
|
|
|
%define with_doc 0
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%ifarch x86_64
|
|
|
|
%define asmarch x86
|
|
|
|
%define bldarch x86_64
|
|
|
|
%define hdrarch x86_64
|
|
|
|
%define make_target bzImage
|
|
|
|
%define kernel_image arch/x86/boot/bzImage
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%ifarch aarch64
|
|
|
|
%define asmarch arm64
|
|
|
|
%define bldarch arm64
|
|
|
|
%define hdrarch arm64
|
|
|
|
%define make_target Image.gz
|
|
|
|
%define kernel_image arch/arm64/boot/Image.gz
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%if %{with_vdso_install}
|
|
|
|
%define use_vdso 1
|
|
|
|
%define _use_vdso 1
|
|
|
|
%else
|
|
|
|
%define _use_vdso 0
|
|
|
|
%endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# Packages that need to be installed before the kernel is installed,
|
|
|
|
# as they will be used by the %%post scripts.
|
|
|
|
#
|
|
|
|
|
|
|
|
Summary: The Linux kernel. (The core of any Linux kernel based operating system.)
|
|
|
|
License: GPLv2 and Redistributable, no modification permitted.
|
|
|
|
URL: https://www.kernel.org/
|
|
|
|
Version: %{pkg_version}
|
|
|
|
Release: %{pkg_release}
|
|
|
|
ExclusiveArch: x86_64 aarch64 noarch
|
|
|
|
ExclusiveOS: Linux
|
|
|
|
Provides: kernel = %{version}-%{release}
|
|
|
|
Provides: installonlypkg(kernel)
|
|
|
|
Requires: %{name}-core-uname-r = %{KVERREL}
|
|
|
|
Requires: %{name}-modules-uname-r = %{KVERREL}
|
|
|
|
|
|
|
|
#
|
2023-11-18 05:13:17 +00:00
|
|
|
# List the packages required for the kernel-* build.
|
2023-11-18 04:38:53 +00:00
|
|
|
#
|
|
|
|
BuildRequires: bash, bc, binutils, bison, bzip2, coreutils, diffutils, dwarves, elfutils-devel
|
|
|
|
BuildRequires: findutils, flex, gawk, gcc, gcc-c++, gcc-plugin-devel, git-core, glibc-static
|
|
|
|
BuildRequires: gzip, hmaccalc, hostname, kernel-rpm-macros >= 185-9, kmod, m4, make, net-tools
|
|
|
|
BuildRequires: patch, perl-Carp, perl-devel, perl-generators, perl-interpreter, python3-devel
|
|
|
|
BuildRequires: redhat-rpm-config, tar, which, xz
|
|
|
|
|
|
|
|
%ifarch x86_64 || aarch64
|
|
|
|
BuildRequires: bpftool, openssl-devel
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%if %{with_headers}
|
|
|
|
BuildRequires: rsync
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%if %{with_doc}
|
|
|
|
BuildRequires: asciidoc, python3-sphinx, python3-sphinx_rtd_theme, xmlto
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%if %{with_perf}
|
|
|
|
BuildRequires: asciidoc, audit-libs-devel, binutils-devel, bison, flex, java-devel
|
|
|
|
BuildRequires: libbabeltrace-devel, libbpf-devel, libtraceevent-devel, newt-devel
|
|
|
|
BuildRequires: numactl-devel, openssl-devel, perl(ExtUtils::Embed), xmlto
|
|
|
|
BuildRequires: xz-devel, zlib-devel
|
|
|
|
%ifarch aarch64
|
|
|
|
BuildRequires: opencsd-devel >= 1.0.0
|
|
|
|
%endif
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%if %{with_tools}
|
|
|
|
BuildRequires: asciidoc, gettext, libcap-devel, libcap-ng-devel, libnl3-devel
|
|
|
|
BuildRequires: ncurses-devel, openssl-devel, pciutils-devel
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%if %{with_bpftool}
|
|
|
|
BuildRequires: binutils-devel, python3-docutils, zlib-devel
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%if %{signkernel} || %{signmodules}
|
|
|
|
BuildRequires: openssl
|
|
|
|
%if %{signkernel}
|
|
|
|
BuildRequires: nss-tools, pesign >= 0.10-4, system-sb-certs
|
|
|
|
%endif
|
|
|
|
%endif
|
|
|
|
|
|
|
|
BuildConflicts: rhbuildsys(DiskFree) < 500Mb
|
|
|
|
|
|
|
|
###
|
|
|
|
### Sources
|
|
|
|
###
|
2023-11-18 05:13:17 +00:00
|
|
|
Source2: config-x86_64
|
|
|
|
Source4: config-aarch64
|
2023-11-18 04:38:53 +00:00
|
|
|
|
|
|
|
Source20: mod-denylist.sh
|
|
|
|
Source21: mod-sign.sh
|
|
|
|
Source23: x509.genkey
|
|
|
|
Source26: mod-extra.list
|
|
|
|
|
|
|
|
Source34: filter-x86_64.sh
|
|
|
|
Source37: filter-aarch64.sh
|
|
|
|
Source40: filter-modules.sh
|
|
|
|
|
|
|
|
Source100: rheldup3.x509
|
|
|
|
Source101: rhelkpatch1.x509
|
|
|
|
|
|
|
|
Source2000: cpupower.service
|
|
|
|
Source2001: cpupower.config
|
|
|
|
Source2002: kvm_stat.logrotate
|
|
|
|
|
|
|
|
%if %{signkernel}
|
|
|
|
%define secureboot_ca_0 %{_datadir}/pki/sb-certs/secureboot-ca-%{_arch}.cer
|
|
|
|
%define secureboot_key_0 %{_datadir}/pki/sb-certs/secureboot-kernel-%{_arch}.cer
|
|
|
|
|
|
|
|
%define pesign_name_0 redhatsecureboot501
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%description
|
|
|
|
The %{name} meta package.
|
|
|
|
|
|
|
|
#
|
2023-11-18 05:13:17 +00:00
|
|
|
# This macro does requires, provides, conflicts, obsoletes for a kernel-* package.
|
|
|
|
# %%reqprovconf <subpackage>
|
|
|
|
# It uses any <subpackage>_conflicts and <subpackage>_obsoletes
|
2023-11-18 04:38:53 +00:00
|
|
|
# macros defined above.
|
|
|
|
#
|
2023-11-18 05:13:17 +00:00
|
|
|
%define reqprovconf \
|
2023-11-18 04:38:53 +00:00
|
|
|
Provides: %{name} = %{pkg_version}-%{pkg_release}\
|
|
|
|
Provides: %{name}-%{_target_cpu} = %{pkg_version}-%{pkg_release}%{?1:+%{1}}\
|
|
|
|
Provides: %{name}-drm-nouveau = 16\
|
|
|
|
Provides: %{name}-uname-r = %{KVERREL}%{?1:+%{1}}\
|
2023-11-18 05:13:17 +00:00
|
|
|
Requires(pre): coreutils, systemd >= 203-2, /usr/bin/kernel-install\
|
|
|
|
Requires(pre): dracut >= 027\
|
2023-11-18 04:38:53 +00:00
|
|
|
Requires(pre): ((linux-firmware >= 20150904-56.git6ebf5d57) if linux-firmware)\
|
|
|
|
Recommends: linux-firmware\
|
|
|
|
Requires(preun): systemd >= 200\
|
|
|
|
Conflicts: xfsprogs < 4.3.0-1\
|
|
|
|
Conflicts: xorg-x11-drv-vmmouse < 13.0.99\
|
2023-11-18 05:13:17 +00:00
|
|
|
%{expand:%%{?name%{?1:_%{1}}conflicts:Conflicts: %%{%{name}%{?1:_%{1}}conflicts}}}\
|
|
|
|
%{expand:%%{?name%{?1:_%{1}}obsoletes:Obsoletes: %%{%{name}%{?1:_%{1}}obsoletes}}}\
|
|
|
|
%{expand:%%{?name%{?1:_%{1}}provides:Provides: %%{%{name}%{?1:_%{1}}provides}}}\
|
2023-11-18 04:38:53 +00:00
|
|
|
# We can't let RPM do the dependencies automatically because it'll then pick up\
|
|
|
|
# a correct but undesirable perl dependency from the module headers which\
|
|
|
|
# isn't required for the kernel proper to function.\
|
|
|
|
AutoReq: no\
|
|
|
|
AutoProv: yes\
|
|
|
|
%{nil}
|
|
|
|
|
|
|
|
%package headers
|
|
|
|
Summary: Header files for the Linux kernel, used by glibc.
|
|
|
|
Obsoletes: glibc-kernheaders < 3.0-46
|
|
|
|
Provides: glibc-kernheaders = 3.0-46
|
|
|
|
%description headers
|
|
|
|
The Linux kernel headers includes the C header files that specify
|
|
|
|
the interface between the Linux kernel and userspace libraries and
|
|
|
|
programs. The header files define structures and constants that are
|
|
|
|
needed for building most standard programs and are also needed for
|
|
|
|
rebuilding the glibc package.
|
|
|
|
|
|
|
|
%package doc
|
|
|
|
Summary: Various documentation bits found in the Linux kernel source.
|
|
|
|
Group: Documentation
|
|
|
|
%description doc
|
|
|
|
This package contains documentation files from the Linux kernel
|
|
|
|
source. Various bits of information about the Linux kernel and the
|
|
|
|
device drivers shipped with it are documented in these files.
|
|
|
|
|
|
|
|
You'll want to install this package if you need a reference to the
|
|
|
|
options that can be passed to Linux kernel modules at load time.
|
|
|
|
|
|
|
|
%if %{with_perf}
|
|
|
|
%package -n perf
|
|
|
|
Summary: Performance monitoring for the Linux kernel.
|
|
|
|
Requires: bzip2
|
|
|
|
License: GPLv2
|
|
|
|
%description -n perf
|
|
|
|
This package contains the perf tool, which enables performance
|
|
|
|
monitoring of the Linux kernel.
|
|
|
|
|
|
|
|
%package -n python3-perf
|
|
|
|
Summary: Python bindings for apps which will manipulate perf events.
|
|
|
|
%description -n python3-perf
|
|
|
|
This package contains a module that permits applications written
|
|
|
|
in the Python programming language to use the interface to
|
|
|
|
manipulate perf events.
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%if %{with_tools}
|
|
|
|
%package -n %{name}-tools
|
|
|
|
Summary: Assortment of tools for the Linux kernel.
|
|
|
|
License: GPLv2
|
|
|
|
Obsoletes: kernel-tools < %{version}
|
|
|
|
Provides: kernel-tools = %{version}-%{release}
|
|
|
|
Obsoletes: cpupowerutils < 1:009-0.6.p1
|
|
|
|
Provides: cpupowerutils = 1:009-0.6.p1
|
|
|
|
Obsoletes: cpufreq-utils < 1:009-0.6.p1
|
|
|
|
Provides: cpufreq-utils = 1:009-0.6.p1
|
|
|
|
Obsoletes: cpufrequtils < 1:009-0.6.p1
|
|
|
|
Provides: cpufrequtils = 1:009-0.6.p1
|
|
|
|
Obsoletes: cpuspeed < 1:1.5-16
|
|
|
|
Requires: %{name}-tools-libs = %{version}-%{release}
|
|
|
|
%define __requires_exclude ^%{_bindir}/python
|
|
|
|
%description -n %{name}-tools
|
|
|
|
This package contains the tools/ directory from the Linux kernel
|
|
|
|
source and the supporting documentation.
|
|
|
|
|
|
|
|
%package -n %{name}-tools-libs
|
|
|
|
Summary: Libraries for the %{name}-tools.
|
|
|
|
License: GPLv2
|
|
|
|
Obsoletes: kernel-tools-libs < %{version}
|
|
|
|
Provides: kernel-tools-libs = %{version}-%{release}
|
|
|
|
%description -n %{name}-tools-libs
|
|
|
|
This package contains the libraries built from the tools/ directory
|
|
|
|
of the Linux kernel source.
|
|
|
|
|
|
|
|
%package -n %{name}-tools-libs-devel
|
|
|
|
Summary: Development files for the %{name}-tools libraries.
|
|
|
|
License: GPLv2
|
|
|
|
Obsoletes: kernel-tools-libs-devel < %{version}
|
|
|
|
Provides: kernel-tools-libs-devel = %{version}-%{release}
|
|
|
|
Obsoletes: cpupowerutils-devel < 1:009-0.6.p1
|
|
|
|
Provides: cpupowerutils-devel = 1:009-0.6.p1
|
|
|
|
Provides: %{name}-tools-devel
|
|
|
|
Requires: %{name}-tools-libs = %{version}-%{release}
|
|
|
|
Requires: %{name}-tools = %{version}-%{release}
|
|
|
|
%description -n %{name}-tools-libs-devel
|
|
|
|
This package contains the development files for the tools/ directory
|
|
|
|
of the Linux kernel source.
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%if %{with_bpftool}
|
|
|
|
%package -n bpftool
|
|
|
|
Summary: Inspection and simple manipulation of eBPF programs and maps.
|
|
|
|
License: GPLv2
|
|
|
|
%description -n bpftool
|
|
|
|
This package contains the bpftool, which allows inspection
|
|
|
|
and simple manipulation of eBPF programs and maps.
|
|
|
|
%endif
|
|
|
|
|
|
|
|
#
|
2023-11-18 05:13:17 +00:00
|
|
|
# This macro creates a kernel-*-<subpackage>-devel package.
|
|
|
|
# %%devel_package [-m] <subpackage> <pretty-name>
|
2023-11-18 04:38:53 +00:00
|
|
|
#
|
2023-11-18 05:13:17 +00:00
|
|
|
%define devel_package(m) \
|
2023-11-18 04:38:53 +00:00
|
|
|
%package %{?1:%{1}-}devel\
|
|
|
|
Summary: Development package for building %{name} modules to match the %{?2:%{2} }%{name}.\
|
|
|
|
Provides: %{name}%{?1:-%{1}}-devel-%{_target_cpu} = %{version}-%{release}\
|
|
|
|
Provides: %{name}-devel-%{_target_cpu} = %{version}-%{release}%{?1:+%{1}}\
|
|
|
|
Provides: %{name}-devel-uname-r = %{KVERREL}%{?1:+%{1}}\
|
|
|
|
Provides: kernel%{?1:-%{1}}-devel-%{_target_cpu} = %{version}-%{release}\
|
|
|
|
Provides: kernel-devel-%{_target_cpu} = %{version}-%{release}%{?1:+%{1}}\
|
|
|
|
Provides: kernel-devel-uname-r = %{KVERREL}%{?1:+%{1}}\
|
|
|
|
Provides: kernel-devel = %{version}-%{release}%{?1:+%{1}}\
|
|
|
|
Provides: installonlypkg(kernel)\
|
2023-11-18 05:13:17 +00:00
|
|
|
Provides: installonlypkg(%{name})\
|
2023-11-18 04:38:53 +00:00
|
|
|
AutoReqProv: no\
|
|
|
|
Requires(pre): findutils\
|
|
|
|
Requires: findutils\
|
|
|
|
Requires: perl-interpreter\
|
|
|
|
Requires: openssl-devel\
|
|
|
|
Requires: elfutils-libelf-devel\
|
|
|
|
Requires: bison\
|
|
|
|
Requires: flex\
|
|
|
|
Requires: make\
|
|
|
|
Requires: gcc\
|
|
|
|
%if %{-m:1}%{!-m:0}\
|
|
|
|
Requires: %{name}-devel-uname-r = %{KVERREL}\
|
|
|
|
%endif\
|
|
|
|
%description %{?1:%{1}-}devel\
|
|
|
|
This package provides %{name} headers and makefiles sufficient to build modules\
|
|
|
|
against the %{?2:%{2} }%{name} package.\
|
|
|
|
%{nil}
|
|
|
|
|
|
|
|
#
|
2023-11-18 05:13:17 +00:00
|
|
|
# This macro creates an empty kernel-*-<subpackage>-devel-matched package that
|
2023-11-18 04:38:53 +00:00
|
|
|
# requires both the core and devel packages locked on the same version.
|
2023-11-18 05:13:17 +00:00
|
|
|
# %%devel_matched_package [-m] <subpackage> <pretty-name>
|
2023-11-18 04:38:53 +00:00
|
|
|
#
|
2023-11-18 05:13:17 +00:00
|
|
|
%define devel_matched_package(m) \
|
2023-11-18 04:38:53 +00:00
|
|
|
%package %{?1:%{1}-}devel-matched\
|
|
|
|
Summary: Meta package to install matching core and devel packages for a given %{?2:%{2} }%{name}.\
|
|
|
|
Requires: %{name}%{?1:-%{1}}-devel = %{version}-%{release}\
|
|
|
|
Requires: %{name}%{?1:-%{1}}-core = %{version}-%{release}\
|
|
|
|
%description %{?1:%{1}-}devel-matched\
|
|
|
|
This meta package is used to install matching core and devel packages for a given %{?2:%{2} }%{name}.\
|
|
|
|
%{nil}
|
|
|
|
|
|
|
|
#
|
2023-11-18 05:13:17 +00:00
|
|
|
# This macro creates a kernel-*-<subpackage>-modules-extra package.
|
|
|
|
# %%modules_extra_package [-m] <subpackage> <pretty-name>
|
2023-11-18 04:38:53 +00:00
|
|
|
#
|
2023-11-18 05:13:17 +00:00
|
|
|
%define modules_extra_package(m) \
|
2023-11-18 04:38:53 +00:00
|
|
|
%package %{?1:%{1}-}modules-extra\
|
|
|
|
Summary: Extra %{name} modules to match the %{?2:%{2} }%{name}.\
|
|
|
|
Provides: %{name}%{?1:-%{1}}-modules-extra-%{_target_cpu} = %{version}-%{release}\
|
|
|
|
Provides: %{name}%{?1:-%{1}}-modules-extra-%{_target_cpu} = %{version}-%{release}%{?1:+%{1}}\
|
|
|
|
Provides: %{name}%{?1:-%{1}}-modules-extra = %{version}-%{release}%{?1:+%{1}}\
|
|
|
|
Provides: installonlypkg(kernel-module)\
|
2023-11-18 05:13:17 +00:00
|
|
|
Provides: installonlypkg(%{name}-module)\
|
2023-11-18 04:38:53 +00:00
|
|
|
Provides: %{name}%{?1:-%{1}}-modules-extra-uname-r = %{KVERREL}%{?1:+%{1}}\
|
|
|
|
Requires: %{name}-uname-r = %{KVERREL}%{?1:+%{1}}\
|
|
|
|
Requires: %{name}%{?1:-%{1}}-modules-uname-r = %{KVERREL}%{?1:+%{1}}\
|
|
|
|
%if %{-m:1}%{!-m:0}\
|
|
|
|
Requires: %{name}-modules-extra-uname-r = %{KVERREL}\
|
|
|
|
%endif\
|
|
|
|
AutoReq: no\
|
|
|
|
AutoProv: yes\
|
|
|
|
%description %{?1:%{1}-}modules-extra\
|
|
|
|
This package provides less commonly used %{name} modules for the %{?2:%{2} }%{name} package.\
|
|
|
|
%{nil}
|
|
|
|
|
|
|
|
#
|
2023-11-18 05:13:17 +00:00
|
|
|
# This macro creates a kernel-*-<subpackage>-modules package.
|
|
|
|
# %%modules_package [-m] <subpackage> <pretty-name>
|
2023-11-18 04:38:53 +00:00
|
|
|
#
|
2023-11-18 05:13:17 +00:00
|
|
|
%define modules_package(m) \
|
2023-11-18 04:38:53 +00:00
|
|
|
%package %{?1:%{1}-}modules\
|
|
|
|
Summary: %{name} modules to match the %{?2:%{2}-}core %{name}.\
|
|
|
|
Provides: %{name}%{?1:-%{1}}-modules-%{_target_cpu} = %{version}-%{release}\
|
|
|
|
Provides: %{name}-modules-%{_target_cpu} = %{version}-%{release}%{?1:+%{1}}\
|
|
|
|
Provides: %{name}-modules = %{version}-%{release}%{?1:+%{1}}\
|
|
|
|
Provides: installonlypkg(kernel-module)\
|
2023-11-18 05:13:17 +00:00
|
|
|
Provides: installonlypkg(%{name}-module)\
|
2023-11-18 04:38:53 +00:00
|
|
|
Provides: %{name}%{?1:-%{1}}-modules-uname-r = %{KVERREL}%{?1:+%{1}}\
|
|
|
|
Requires: %{name}-uname-r = %{KVERREL}%{?1:+%{1}}\
|
|
|
|
%if %{-m:1}%{!-m:0}\
|
|
|
|
Requires: %{name}-modules-uname-r = %{KVERREL}\
|
|
|
|
%endif\
|
|
|
|
AutoReq: no\
|
|
|
|
AutoProv: yes\
|
|
|
|
%description %{?1:%{1}-}modules\
|
|
|
|
This package provides commonly used %{name} modules for the %{?2:%{2}-}core %{name} package.\
|
|
|
|
%{nil}
|
|
|
|
|
|
|
|
#
|
2023-11-18 05:13:17 +00:00
|
|
|
# this macro creates a kernel-*-<subpackage> meta package.
|
|
|
|
# %%meta_package <subpackage>
|
2023-11-18 04:38:53 +00:00
|
|
|
#
|
2023-11-18 05:13:17 +00:00
|
|
|
%define meta_package() \
|
2023-11-18 04:38:53 +00:00
|
|
|
%package %{1}\
|
|
|
|
Summary: %{name} meta-package for the %{1} ${name}.\
|
|
|
|
Requires: %{name}-%{1}-core-uname-r = %{KVERREL}+%{1}\
|
|
|
|
Requires: %{name}-%{1}-modules-uname-r = %{KVERREL}+%{1}\
|
|
|
|
Provides: installonlypkg(kernel)\
|
2023-11-18 05:13:17 +00:00
|
|
|
Provides: installonlypkg(%{name})\
|
2023-11-18 04:38:53 +00:00
|
|
|
%description %{1}\
|
|
|
|
The meta-package for the %{1} %{name}.\
|
|
|
|
%{nil}
|
|
|
|
|
|
|
|
#
|
2023-11-18 05:13:17 +00:00
|
|
|
# This macro creates a kernel-*-<subpackage> and its -devel.
|
|
|
|
# %%define variant_summary The Linux kernel-* compiled for <configuration>
|
|
|
|
# %%variant_package [-n <pretty-name>] [-m] <subpackage>
|
2023-11-18 04:38:53 +00:00
|
|
|
#
|
2023-11-18 05:13:17 +00:00
|
|
|
%define variant_package(n:m) \
|
2023-11-18 04:38:53 +00:00
|
|
|
%package %{?1:%{1}-}core\
|
|
|
|
Summary: %{variant_summary}.\
|
|
|
|
Provides: %{name}-%{?1:%{1}-}core-uname-r = %{KVERREL}%{?1:+%{1}}\
|
|
|
|
Provides: installonlypkg(kernel)\
|
2023-11-18 05:13:17 +00:00
|
|
|
Provides: installonlypkg(%{name})\
|
2023-11-18 04:38:53 +00:00
|
|
|
%if %{-m:1}%{!-m:0}\
|
|
|
|
Requires: %{name}-core-uname-r = %{KVERREL}\
|
|
|
|
%endif\
|
2023-11-18 05:13:17 +00:00
|
|
|
%{expand:%%reqprovconf}\
|
2023-11-18 04:38:53 +00:00
|
|
|
%if %{?1:1} %{!?1:0} \
|
2023-11-18 05:13:17 +00:00
|
|
|
%{expand:%%meta_package %{?1:%{1}}}\
|
2023-11-18 04:38:53 +00:00
|
|
|
%endif\
|
2023-11-18 05:13:17 +00:00
|
|
|
%{expand:%%devel_package %{?1:%{1}} %{!?{-n}:%{1}}%{?{-n}:%{-n*}} %{-m:%{-m}}}\
|
|
|
|
%{expand:%%devel_matched_package %{?1:%{1}} %{!?{-n}:%{1}}%{?{-n}:%{-n*}} %{-m:%{-m}}}\
|
|
|
|
%{expand:%%modules_package %{?1:%{1}} %{!?{-n}:%{1}}%{?{-n}:%{-n*}} %{-m:%{-m}}}\
|
|
|
|
%{expand:%%modules_extra_package %{?1:%{1}} %{!?{-n}:%{1}}%{?{-n}:%{-n*}} %{-m:%{-m}}}\
|
2023-11-18 04:38:53 +00:00
|
|
|
%{nil}
|
|
|
|
|
|
|
|
# And, finally, the main -core package.
|
|
|
|
|
|
|
|
%define variant_summary The Linux kernel.
|
2023-11-18 05:13:17 +00:00
|
|
|
%variant_package
|
2023-11-18 04:38:53 +00:00
|
|
|
%description core
|
|
|
|
The %{name} package contains the Linux kernel (vmlinuz), the core of any
|
|
|
|
Linux kernel based operating system. The %{name} package handles the basic
|
|
|
|
functions of the operating system: memory allocation, process allocation,
|
|
|
|
device input and output, etc.
|
|
|
|
|
|
|
|
# Disable the building of the debug package(s).
|
|
|
|
%global debug_package %{nil}
|
|
|
|
|
|
|
|
# Disable the creation of build_id symbolic links.
|
|
|
|
%global _build_id_links none
|
|
|
|
|
|
|
|
# Set up our "big" %%{make} macro.
|
2023-11-18 05:13:17 +00:00
|
|
|
%global make %{__make} HOSTCFLAGS="%{?build_cflags}" HOSTLDFLAGS="%{?build_ldflags}"
|
2023-11-18 04:38:53 +00:00
|
|
|
|
|
|
|
%prep
|
|
|
|
%ifarch x86_64 || aarch64
|
|
|
|
%if %{with_baseonly}
|
|
|
|
%if !%{with_std}
|
|
|
|
echo "Cannot build --with baseonly as the standard build is currently disabled."
|
|
|
|
exit 1
|
|
|
|
%endif
|
|
|
|
%endif
|
|
|
|
%endif
|
|
|
|
|
2023-11-18 05:13:17 +00:00
|
|
|
%setup -q -n %{src_dir} -c
|
|
|
|
mv %{src_dir} linux-%{KVERREL}
|
2023-11-18 04:38:53 +00:00
|
|
|
|
|
|
|
pushd linux-%{KVERREL} > /dev/null
|
|
|
|
|
|
|
|
# Purge the source tree of all unrequired dot-files.
|
|
|
|
find . -name '.*' -type f -delete
|
|
|
|
|
|
|
|
# Mangle all Python shebangs to be Python 3 explicitly.
|
|
|
|
# -i specifies the interpreter for the shebang
|
|
|
|
# -n prevents creating ~backup files
|
|
|
|
# -p preserves timestamps
|
|
|
|
# This fixes errors such as
|
|
|
|
# *** ERROR: ambiguous python shebang in /usr/bin/kvm_stat: #!/usr/bin/python. Change it to python3 (or python2) explicitly.
|
|
|
|
# Process all files in the Documentation, scripts and tools directories.
|
|
|
|
pathfix.py -i "%{__python3} %{py3_shbang_opts}" -n -p \
|
|
|
|
tools/kvm/kvm_stat/kvm_stat \
|
|
|
|
scripts/show_delta \
|
|
|
|
scripts/jobserver-exec \
|
|
|
|
scripts/diffconfig \
|
|
|
|
scripts/clang-tools \
|
|
|
|
scripts/bloat-o-meter \
|
|
|
|
tools \
|
|
|
|
scripts \
|
|
|
|
Documentation \
|
|
|
|
2>&1 | grep -Ev 'recursedown|no change'
|
|
|
|
|
|
|
|
mv COPYING COPYING-%{version}-%{release}
|
|
|
|
|
|
|
|
cp -a %{SOURCE2} .
|
|
|
|
cp -a %{SOURCE4} .
|
|
|
|
|
|
|
|
# Set the EXTRAVERSION string in the top level Makefile.
|
|
|
|
sed -i "s@^EXTRAVERSION.*@EXTRAVERSION = -%{release}.%{_target_cpu}@" Makefile
|
|
|
|
|
|
|
|
%ifarch x86_64 || aarch64
|
2023-11-18 05:13:17 +00:00
|
|
|
cp config-%{_target_cpu} .config
|
|
|
|
%{__make} ARCH=%{bldarch} listnewconfig | grep -E '^CONFIG_' > newoptions-el9-%{_target_cpu}.txt || true
|
2023-11-18 04:38:53 +00:00
|
|
|
if [ -s newoptions-el9-%{_target_cpu}.txt ]; then
|
|
|
|
cat newoptions-el9-%{_target_cpu}.txt
|
|
|
|
fi
|
|
|
|
rm -f newoptions-el9-%{_target_cpu}.txt
|
|
|
|
%endif
|
|
|
|
|
|
|
|
# Add DUP and kpatch certificates to system trusted keys for RHEL.
|
|
|
|
%if %{signkernel} || %{signmodules}
|
|
|
|
openssl x509 -inform der -in %{SOURCE100} -out rheldup3.pem
|
|
|
|
openssl x509 -inform der -in %{SOURCE101} -out rhelkpatch1.pem
|
|
|
|
cat rheldup3.pem rhelkpatch1.pem > certs/rhel.pem
|
2023-11-18 05:13:17 +00:00
|
|
|
for i in config-*; do
|
2023-11-18 04:38:53 +00:00
|
|
|
sed -i 's@CONFIG_SYSTEM_TRUSTED_KEYS="*"@CONFIG_SYSTEM_TRUSTED_KEYS="certs/rhel.pem"@' $i
|
|
|
|
done
|
|
|
|
%else
|
2023-11-18 05:13:17 +00:00
|
|
|
for i in config-*; do
|
2023-11-18 04:38:53 +00:00
|
|
|
sed -i 's@CONFIG_SYSTEM_TRUSTED_KEYS="*"@CONFIG_SYSTEM_TRUSTED_KEYS=""@' $i
|
|
|
|
done
|
|
|
|
%endif
|
|
|
|
|
|
|
|
# Adjust the FIPS module name for RHEL9.
|
2023-11-18 05:13:17 +00:00
|
|
|
for i in config-*; do
|
2023-11-18 04:38:53 +00:00
|
|
|
sed -i 's@CONFIG_CRYPTO_FIPS_NAME=.*@CONFIG_CRYPTO_FIPS_NAME="Red Hat Enterprise Linux 9 - Kernel Cryptographic API"@' $i
|
|
|
|
done
|
|
|
|
|
2023-11-18 05:13:17 +00:00
|
|
|
%{__make} distclean
|
2023-11-18 04:38:53 +00:00
|
|
|
|
|
|
|
popd > /dev/null
|
|
|
|
|
|
|
|
%build
|
|
|
|
pushd linux-%{KVERREL} > /dev/null
|
|
|
|
|
|
|
|
%ifarch x86_64 || aarch64
|
2023-11-18 05:13:17 +00:00
|
|
|
cp config-%{_target_cpu} .config
|
2023-11-18 04:38:53 +00:00
|
|
|
|
2023-11-18 05:13:17 +00:00
|
|
|
%{__make} ARCH=%{bldarch} oldconfig
|
2023-11-18 04:38:53 +00:00
|
|
|
|
|
|
|
%if %{signkernel} || %{signmodules}
|
|
|
|
cp %{SOURCE23} certs/
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%if %{with_std}
|
|
|
|
%{make} %{?_smp_mflags} ARCH=%{bldarch} %{make_target}
|
|
|
|
|
|
|
|
%{make} %{?_smp_mflags} ARCH=%{bldarch} modules || exit 1
|
|
|
|
|
|
|
|
%ifarch aarch64
|
|
|
|
%{make} %{?_smp_mflags} ARCH=%{bldarch} dtbs
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%if %{with_bpftool}
|
|
|
|
# Generate a vmlinux.h file.
|
|
|
|
bpftool btf dump file vmlinux format c > tools/bpf/bpftool/vmlinux.h
|
|
|
|
RPM_VMLINUX_H=vmlinux.h
|
|
|
|
%endif
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%if %{with_perf}
|
|
|
|
%ifarch aarch64
|
|
|
|
%global perf_build_extra_opts CORESIGHT=1
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%global perf_make \
|
2023-11-18 05:13:17 +00:00
|
|
|
%{__make} -C tools/perf NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 WERROR=0 NO_LIBUNWIND=1 HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_STRLCPY=1 NO_BIONIC=1 LIBTRACEEVENT_DYNAMIC=1 %{?perf_build_extra_opts} prefix=%{_prefix} PYTHON=%{__python3}
|
2023-11-18 04:38:53 +00:00
|
|
|
|
|
|
|
# Make sure that check-headers.sh is executable.
|
|
|
|
chmod +x tools/perf/check-headers.sh
|
|
|
|
|
|
|
|
%{perf_make} all
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%if %{with_tools}
|
|
|
|
# Make sure that version-gen.sh is executable.
|
|
|
|
chmod +x tools/power/cpupower/utils/version-gen.sh
|
|
|
|
|
|
|
|
pushd tools/power/cpupower > /dev/null
|
2023-11-18 05:13:17 +00:00
|
|
|
%{__make} %{?_smp_mflags} CPUFREQ_BENCH=false DEBUG=false
|
2023-11-18 04:38:53 +00:00
|
|
|
popd > /dev/null
|
|
|
|
|
|
|
|
%ifarch x86_64
|
|
|
|
pushd tools/power/cpupower/debug/x86_64 > /dev/null
|
2023-11-18 05:13:17 +00:00
|
|
|
%{__make} %{?_smp_mflags} centrino-decode powernow-k8-decode
|
2023-11-18 04:38:53 +00:00
|
|
|
popd > /dev/null
|
|
|
|
|
|
|
|
pushd tools/power/x86/x86_energy_perf_policy > /dev/null
|
2023-11-18 05:13:17 +00:00
|
|
|
%{__make} %{?_smp_mflags}
|
2023-11-18 04:38:53 +00:00
|
|
|
popd > /dev/null
|
|
|
|
|
|
|
|
pushd tools/power/x86/turbostat > /dev/null
|
2023-11-18 05:13:17 +00:00
|
|
|
%{__make} %{?_smp_mflags}
|
2023-11-18 04:38:53 +00:00
|
|
|
popd > /dev/null
|
|
|
|
|
|
|
|
pushd tools/power/x86/intel-speed-select > /dev/null
|
2023-11-18 05:13:17 +00:00
|
|
|
%{__make} %{?_smp_mflags}
|
2023-11-18 04:38:53 +00:00
|
|
|
popd > /dev/null
|
|
|
|
%endif
|
|
|
|
|
|
|
|
pushd tools/thermal/tmon > /dev/null
|
2023-11-18 05:13:17 +00:00
|
|
|
%{__make} %{?_smp_mflags}
|
2023-11-18 04:38:53 +00:00
|
|
|
popd > /dev/null
|
|
|
|
|
|
|
|
pushd tools/iio > /dev/null
|
2023-11-18 05:13:17 +00:00
|
|
|
%{__make} %{?_smp_mflags}
|
2023-11-18 04:38:53 +00:00
|
|
|
popd > /dev/null
|
|
|
|
|
|
|
|
pushd tools/gpio > /dev/null
|
2023-11-18 05:13:17 +00:00
|
|
|
%{__make} %{?_smp_mflags}
|
2023-11-18 04:38:53 +00:00
|
|
|
popd > /dev/null
|
|
|
|
|
|
|
|
### BCAT
|
|
|
|
%if 0
|
|
|
|
pushd tools/vm > /dev/null
|
2023-11-18 05:13:17 +00:00
|
|
|
%{__make} %{?_smp_mflags} slabinfo page_owner_sort
|
2023-11-18 04:38:53 +00:00
|
|
|
popd > /dev/null
|
|
|
|
%endif
|
|
|
|
### BCAT
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%if %{with_bpftool}
|
|
|
|
%global bpftool_make \
|
2023-11-18 05:13:17 +00:00
|
|
|
%{__make} EXTRA_CFLAGS="${RPM_OPT_FLAGS}" EXTRA_LDFLAGS="%{__global_ldflags}" DESTDIR=$RPM_BUILD_ROOT VMLINUX_H="${RPM_VMLINUX_H}"
|
2023-11-18 04:38:53 +00:00
|
|
|
|
|
|
|
pushd tools/bpf/bpftool > /dev/null
|
|
|
|
%{bpftool_make}
|
|
|
|
popd > /dev/null
|
|
|
|
%endif
|
|
|
|
%endif
|
|
|
|
|
|
|
|
popd > /dev/null
|
|
|
|
|
|
|
|
%install
|
|
|
|
%define __modsign_install_post \
|
|
|
|
if [ "%{signmodules}" -eq "1" ]; then \
|
|
|
|
if [ "%{with_std}" -ne "0" ]; then \
|
|
|
|
%{SOURCE21} certs/signing_key.pem.sign certs/signing_key.x509.sign $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/ \
|
|
|
|
fi \
|
|
|
|
fi \
|
|
|
|
if [ "%{zipmodules}" -eq "1" ]; then \
|
|
|
|
find $RPM_BUILD_ROOT/lib/modules/ -name '*.ko' -type f | xargs --no-run-if-empty -P%{zcpu} xz \
|
|
|
|
fi \
|
|
|
|
%{nil}
|
|
|
|
|
|
|
|
#
|
|
|
|
# Ensure modules are signed *after* all invocations of
|
|
|
|
# strip have occured, which are in __os_install_post.
|
|
|
|
#
|
|
|
|
%define __spec_install_post \
|
|
|
|
%{__arch_install_post}\
|
|
|
|
%{__os_install_post}\
|
|
|
|
%{__modsign_install_post}
|
|
|
|
|
|
|
|
pushd linux-%{KVERREL} > /dev/null
|
|
|
|
|
|
|
|
rm -fr $RPM_BUILD_ROOT
|
|
|
|
|
|
|
|
%ifarch x86_64 || aarch64
|
|
|
|
mkdir -p $RPM_BUILD_ROOT
|
|
|
|
|
|
|
|
%if %{with_std}
|
|
|
|
mkdir -p $RPM_BUILD_ROOT/boot
|
|
|
|
mkdir -p $RPM_BUILD_ROOT%{_libexecdir}
|
|
|
|
mkdir -p $RPM_BUILD_ROOT/lib/modules/%{KVERREL}
|
|
|
|
mkdir -p $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/systemtap
|
|
|
|
|
|
|
|
%ifarch aarch64
|
|
|
|
%{make} ARCH=%{bldarch} dtbs_install INSTALL_DTBS_PATH=$RPM_BUILD_ROOT/boot/dtb-%{KVERREL}
|
|
|
|
cp -r $RPM_BUILD_ROOT/boot/dtb-%{KVERREL} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/dtb
|
|
|
|
find arch/%{bldarch}/boot/dts -name '*.dtb' -type f -delete
|
|
|
|
%endif
|
|
|
|
|
|
|
|
# Install the results within the RPM_BUILD_ROOT directory.
|
|
|
|
install -m 644 .config $RPM_BUILD_ROOT/boot/config-%{KVERREL}
|
|
|
|
install -m 644 .config $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/config
|
|
|
|
install -m 644 System.map $RPM_BUILD_ROOT/boot/System.map-%{KVERREL}
|
|
|
|
install -m 644 System.map $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/System.map
|
|
|
|
|
|
|
|
# We estimate the size of the initramfs because rpm needs to take this size
|
|
|
|
# into consideration when performing disk space calculations. (See bz #530778)
|
|
|
|
dd if=/dev/zero of=$RPM_BUILD_ROOT/boot/initramfs-%{KVERREL}.img bs=1M count=20
|
|
|
|
|
|
|
|
%if %{signkernel}
|
|
|
|
# Sign the kernel image if we're using EFI.
|
|
|
|
# aarch64 kernels are gziped EFI images.
|
|
|
|
%ifarch x86_64
|
|
|
|
SignImage=arch/x86/boot/bzImage
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%ifarch aarch64
|
|
|
|
SignImage=arch/arm64/boot/Image
|
|
|
|
%endif
|
|
|
|
|
|
|
|
%pesign -s -i $SignImage -o vmlinuz.signed -a %{secureboot_ca_0} -c %{secureboot_key_0} -n %{pesign_name_0}
|
|
|
|
|
|
|
|
if [ ! -s vmlinuz.signed ]; then
|
|
|
|
echo "pesigning failed"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
mv vmlinuz.signed $SignImage
|
|
|
|
|
|
|
|
%ifarch aarch64
|
|
|
|
gzip -f9 $SignImage
|
|
|
|
%endif
|
|
|
|
%endif
|
|
|
|
|
|
|
|
cp %{kernel_image} $RPM_BUILD_ROOT/boot/vmlinuz-%{KVERREL}
|
|
|
|
chmod 755 $RPM_BUILD_ROOT/boot/vmlinuz-%{KVERREL}
|
|
|
|
cp $RPM_BUILD_ROOT/boot/vmlinuz-%{KVERREL} $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/vmlinuz
|
|
|
|
|
|
|
|
sha512hmac $RPM_BUILD_ROOT/boot/vmlinuz-%{KVERREL} | sed -e "s,$RPM_BUILD_ROOT,," > $RPM_BUILD_ROOT/boot/.vmlinuz-%{KVERREL}.hmac
|
|
|
|
cp $RPM_BUILD_ROOT/boot/.vmlinuz-%{KVERREL}.hmac $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/.vmlinuz.hmac
|
|
|
|
|
|
|
|
# Override mod-fw because we don't want it to install any firmware.
|
|
|
|
# We'll get it from the linux-firmware package and we don't want conflicts.
|
|
|
|
%{make} %{?_smp_mflags} ARCH=%{bldarch} INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_install KERNELRELEASE=%{KVERREL} mod-fw=
|
|
|
|
|
|
|
|
# Add a noop %%defattr statement because rpm doesn't like empty file list files.
|
|
|
|
echo '%%defattr(-,-,-)' > ../%{name}-ldsoconf.list
|
|
|
|
|
|
|
|
%if %{with_vdso_install}
|
|
|
|
%{make} %{?_smp_mflags} ARCH=%{bldarch} INSTALL_MOD_PATH=$RPM_BUILD_ROOT vdso_install KERNELRELEASE=%{KVERREL}
|
|
|
|
|
|
|
|
if [ -s ldconfig-%{name}.conf ]; then
|
|
|
|
install -D -m 444 ldconfig-%{name}.conf $RPM_BUILD_ROOT/etc/ld.so.conf.d/%{name}-%{KVERREL}.conf
|
|
|
|
echo /etc/ld.so.conf.d/%{name}-%{KVERREL}.conf >> ../%{name}-ldsoconf.list
|
|
|
|
fi
|
|
|
|
%endif
|
|
|
|
|
|
|
|
#
|
|
|
|
# This looks scary but the end result is supposed to be:
|
|
|
|
#
|
|
|
|
# - all arch relevant include/ files.
|
|
|
|
# - all Makefile and Kconfig files.
|
|
|
|
# - all script/ files.
|
|
|
|
#
|
|
|
|
rm -f $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
rm -f $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/source
|
|
|
|
mkdir -p $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
|
|
|
|
pushd $RPM_BUILD_ROOT/lib/modules/%{KVERREL} > /dev/null
|
|
|
|
ln -s build source
|
|
|
|
popd > /dev/null
|
|
|
|
|
|
|
|
mkdir -p $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/updates
|
|
|
|
mkdir -p $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/weak-updates
|
|
|
|
|
|
|
|
# CONFIG_KERNEL_HEADER_TEST generates some extra files during testing so just delete them.
|
|
|
|
find . -name *.h.s -delete
|
|
|
|
|
|
|
|
# First copy everything . . .
|
|
|
|
cp --parents `find -type f -name "Makefile*" -o -name "Kconfig*"` $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
|
|
|
|
if [ ! -e Module.symvers ]; then
|
|
|
|
touch Module.symvers
|
|
|
|
fi
|
|
|
|
|
|
|
|
cp Module.symvers $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp System.map $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
|
|
|
|
if [ -s Module.markers ]; then
|
|
|
|
cp Module.markers $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
fi
|
|
|
|
|
|
|
|
gzip -c9 < Module.symvers > $RPM_BUILD_ROOT/boot/symvers-%{KVERREL}.gz
|
|
|
|
cp $RPM_BUILD_ROOT/boot/symvers-%{KVERREL}.gz $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/symvers.gz
|
|
|
|
|
|
|
|
# . . . then drop all but the needed Makefiles and Kconfig files.
|
|
|
|
rm -fr $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build/scripts
|
|
|
|
rm -fr $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build/include
|
|
|
|
cp .config $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp -a scripts $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
rm -fr $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build/scripts/tracing
|
|
|
|
rm -f $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build/scripts/spdxcheck.py
|
|
|
|
|
2023-11-18 05:13:17 +00:00
|
|
|
# Files for 'make scripts' to succeed with kernel-*-devel.
|
2023-11-18 04:38:53 +00:00
|
|
|
mkdir -p $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build/security/selinux/include
|
|
|
|
cp -a --parents security/selinux/include/classmap.h $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp -a --parents security/selinux/include/initial_sid_to_string.h $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
mkdir -p $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build/tools/include/tools
|
|
|
|
cp -a --parents tools/include/tools/be_byteshift.h $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp -a --parents tools/include/tools/le_byteshift.h $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
|
2023-11-18 05:13:17 +00:00
|
|
|
# Files for 'make prepare' to succeed with kernel-*-devel.
|
2023-11-18 04:38:53 +00:00
|
|
|
cp -a --parents tools/include/linux/compiler* $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp -a --parents tools/include/linux/types.h $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp -a --parents tools/build/Build.include $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp --parents tools/build/Build $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp --parents tools/build/fixdep.c $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp --parents tools/objtool/sync-check.sh $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp -a --parents tools/bpf/resolve_btfids $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
|
|
|
|
cp --parents security/selinux/include/policycap_names.h $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp --parents security/selinux/include/policycap.h $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
|
|
|
|
cp -a --parents tools/include/asm-generic $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp -a --parents tools/include/linux $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp -a --parents tools/include/uapi/asm $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp -a --parents tools/include/uapi/asm-generic $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp -a --parents tools/include/uapi/linux $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp -a --parents tools/include/vdso $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp --parents tools/scripts/utilities.mak $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp -a --parents tools/lib/subcmd $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp --parents tools/lib/*.c $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp --parents tools/objtool/*.[ch] $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp --parents tools/objtool/Build $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp --parents tools/objtool/include/objtool/*.h $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp -a --parents tools/lib/bpf $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
cp --parents tools/lib/bpf/Build $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build
|
|
|
|
|
|
|
|
if [ -f tools/objtool/objtool ]; then
|
|
|
|
cp -a tools/objtool/objtool $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build/tools/objtool/ || :
|
|
|
|
fi
|
|
|
|
if [ -f tools/objtool/fixdep ]; then
|
|
|
|
cp -a tools/objtool/fixdep $RPM_BUILD_ROOT/lib/modules/%{KVERREL}/build/tools/objtool/ || :
|
|