kernel-source-rt/kernel-rt_debug.spec

2041 lines
73 KiB
RPMSpec
Raw Normal View History

#
# spec file for package kernel-rt_debug
#
# Copyright (c) 2024 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via https://bugs.opensuse.org/
#
# needssslcertforbuild
%define srcversion 6.4
%define patchversion 6.4.0
%define git_commit 02ae186887e396576d7eac8d2cd8e1c22baa862a
%define variant -rt%{nil}
%define compress_modules zstd
%define compress_vmlinux xz
%define livepatch livepatch%{nil}
%define livepatch_rt %{nil}
%define sb_efi_only 0
%define split_base 0
%define split_optional 0
%define supported_modules_check 1
%define build_flavor rt_debug
%define generate_compile_commands 1
%include %_sourcedir/kernel-spec-macros
%(chmod +x %_sourcedir/{guards,apply-patches,check-for-config-changes,group-source-files.pl,split-modules,modversions,kabi.pl,mkspec,compute-PATCHVERSION.sh,arch-symbols,log.sh,try-disable-staging-driver,compress-vmlinux.sh,mkspec-dtb,check-module-license,klp-symbols,splitflist,mergedep,moddep,modflist,kernel-subpackage-build})
Name: kernel-rt_debug
Version: 6.4.0
%if 0%{?is_kotd}
Release: <RELEASE>.g02ae186
%else
Release: 0
%endif
Summary: The Linux Kernel
License: GPL-2.0-only
Group: System/Kernel
URL: https://www.kernel.org/
%if 0%{?suse_version} > 1500 || 0%{?sle_version} > 150300
BuildRequires: bash-sh
%endif
BuildRequires: bc
BuildRequires: bison
BuildRequires: coreutils
BuildRequires: fdupes
BuildRequires: flex
# Cannot test %%CONFIG_GCC_PLUGINS here because the buildservice parser
# does not expand %%(...)
%if "%build_flavor" == "syzkaller"
# Needed by scripts/gcc-plugin.sh
BuildRequires: gcc-c++
BuildRequires: gcc-devel
%endif
BuildRequires: hmaccalc
BuildRequires: libopenssl-devel
BuildRequires: modutils
BuildRequires: python3-base
# Used to sign the kernel in the buildservice
BuildRequires: openssl
BuildRequires: pesign-obs-integration
%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150300
# pahole for CONFIG_DEBUG_INFO_BTF
BuildRequires: dwarves >= 1.22
%endif
# for objtool
BuildRequires: libelf-devel
# required for 50-check-kernel-build-id rpm check
BuildRequires: elfutils
%ifarch %arm
BuildRequires: u-boot-tools
%endif
# Do not install p-b and dracut for the install check, the %post script is
# able to handle this
#!BuildIgnore: perl-Bootloader dracut distribution-release suse-kernel-rpm-scriptlets
# Remove some packages that are installed automatically by the build system,
# but are not needed to build the kernel
#!BuildIgnore: autoconf automake gettext-runtime libtool cvs gettext-tools udev insserv
%if ! 0%{?is_kotd} || ! %{?is_kotd_qa}%{!?is_kotd_qa:0}
ExclusiveArch: aarch64 x86_64
%else
ExclusiveArch: do_not_build
%endif
%ifarch %ix86 x86_64
%define image vmlinuz
%endif
%ifarch ppc ppc64 ppc64le
%define image vmlinux
%endif
%ifarch s390 s390x
%define image image
%endif
%ifarch %arm
%define image zImage
%endif
%ifarch aarch64 riscv64
%define image Image
%endif
%ifarch %ix86 x86_64
%define install_vdso 1
%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150500
%define separate_vdso 1
%endif
%else
%define install_vdso 0
%endif
%define build_default ("%build_flavor" == "default")
%define build_vanilla ("%build_flavor" == "vanilla")
%define vanilla_only %{lua: if (rpm.expand("%variant") == "-vanilla") then print(1) else print(0) end}
%if ! %build_vanilla
%define src_install_dir /usr/src/linux-%kernelrelease%variant
%else
%define src_install_dir /usr/src/linux-%kernelrelease-vanilla
%endif
%define obj_install_dir /usr/src/linux-%kernelrelease%variant-obj
%define rpm_install_dir %buildroot%obj_install_dir
%define kernel_build_dir %my_builddir/linux-%srcversion/linux-obj
%define modules_dir %kernel_module_directory/%kernelrelease-%build_flavor
%global cpu_arch %(%_sourcedir/arch-symbols %_target_cpu)
%define cpu_arch_flavor %cpu_arch/%build_flavor
%if 0%{?_project:1} && ( %(echo %_project | grep -Ex -f %_sourcedir/release-projects | grep -vc ^PTF) || %(echo %_project | grep -Ec "^(Devel:)?Kernel:") )
%define klp_symbols 1
%endif
# Define some CONFIG variables as rpm macros as well. (rpm cannot handle
# defining them all at once.)
%define config_vars CONFIG_MODULES CONFIG_MODULE_SIG CONFIG_MODULE_SIG_HASH CONFIG_KMSG_IDS CONFIG_SUSE_KERNEL_SUPPORTED CONFIG_EFI_STUB CONFIG_LIVEPATCH_IPA_CLONES CONFIG_DEBUG_INFO_BTF_MODULES CONFIG_PREEMPT_DYNAMIC
%{expand:%(eval "$(test -n "%cpu_arch_flavor" && tar -xjf %_sourcedir/config.tar.bz2 --to-stdout config/%cpu_arch_flavor)"; for config in %config_vars; do echo "%%global $config ${!config:-n}"; done)}
%define split_extra ("%CONFIG_MODULES" == "y" && "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y")
%if "%CONFIG_MODULES" != "y"
%define klp_symbols 0
%endif
%global certs %( space="" ; for f in %_sourcedir/*.crt; do \
if ! test -e "$f"; then \
continue \
fi \
h=$(openssl x509 -inform PEM -fingerprint -noout -in "$f") \
if [ -z "$h" ] ; then \
echo Cannot parse "$f" >&2 \
confinue \
fi \
cert=$(echo "$h" | sed -rn 's/^SHA1 Fingerprint=//; T; s/://g; s/(.{8}).*/\\1/p') \
echo Found signing certificate "$f" "($cert)" >&2 \
cat "$f" >>%_sourcedir/.kernel_signing_key.pem \
mkdir -p %_sourcedir/.kernel_signing_certs \
openssl x509 -inform PEM -in "$f" -outform DER -out %_sourcedir/.kernel_signing_certs/"$cert".crt \
echo -n "$space$cert" ; space=" " \
done )
Source0: https://www.kernel.org/pub/linux/kernel/v6.x/linux-%srcversion.tar.xz
Source3: kernel-source.rpmlintrc
Source14: series.conf
Source16: guards
Source17: apply-patches
Source19: kernel-binary-conflicts
Source20: obsolete-kmps
Source21: config.conf
Source23: supported.conf
Source33: check-for-config-changes
Source35: group-source-files.pl
Source36: README.PATCH-POLICY.SUSE
Source37: README.SUSE
Source38: README.KSYMS
Source40: source-timestamp
Source46: split-modules
Source47: modversions
Source48: macros.kernel-source
Source49: kernel-module-subpackage
Source50: kabi.pl
Source51: mkspec
Source52: kernel-source%variant.changes
Source53: kernel-source.spec.in
Source54: kernel-binary.spec.in
Source55: kernel-syms.spec.in
Source56: kernel-docs.spec.in
Source57: kernel-cert-subpackage
Source58: constraints.in
Source60: config.sh
Source61: compute-PATCHVERSION.sh
Source62: old-flavors
Source63: arch-symbols
Source64: package-descriptions
Source65: kernel-spec-macros
Source67: log.sh
Source68: host-memcpy-hack.h
Source69: try-disable-staging-driver
Source70: kernel-obs-build.spec.in
Source71: kernel-obs-qa.spec.in
Source72: compress-vmlinux.sh
Source73: dtb.spec.in.in
Source74: mkspec-dtb
Source75: release-projects
Source76: check-module-license
Source77: klp-symbols
Source78: modules.fips
Source79: splitflist
Source80: mergedep
Source81: moddep
Source82: modflist
Source83: kernel-subpackage-build
Source84: kernel-subpackage-spec
Source85: kernel-default-base.spec.txt
Source86: old_changelog.txt
Source100: config.tar.bz2
Source101: config.addon.tar.bz2
Source102: patches.arch.tar.bz2
Source103: patches.drivers.tar.bz2
Source104: patches.fixes.tar.bz2
Source105: patches.rpmify.tar.bz2
Source106: patches.suse.tar.bz2
Source108: patches.addon.tar.bz2
Source109: patches.kernel.org.tar.bz2
Source110: patches.apparmor.tar.bz2
Source111: patches.rt.tar.bz2
Source113: patches.kabi.tar.bz2
Source114: patches.drm.tar.bz2
Source120: kabi.tar.bz2
Source121: sysctl.tar.bz2
# These files are found in the kernel-source package:
NoSource: 0
NoSource: 3
NoSource: 14
NoSource: 16
NoSource: 17
NoSource: 19
NoSource: 20
NoSource: 21
NoSource: 23
NoSource: 33
NoSource: 35
NoSource: 36
NoSource: 37
NoSource: 38
NoSource: 40
NoSource: 46
NoSource: 47
NoSource: 48
NoSource: 49
NoSource: 50
NoSource: 51
NoSource: 52
NoSource: 53
NoSource: 54
NoSource: 55
NoSource: 56
NoSource: 57
NoSource: 58
NoSource: 60
NoSource: 61
NoSource: 62
NoSource: 63
NoSource: 64
NoSource: 65
NoSource: 67
NoSource: 68
NoSource: 69
NoSource: 70
NoSource: 71
NoSource: 72
NoSource: 73
NoSource: 74
NoSource: 75
NoSource: 76
NoSource: 77
NoSource: 78
NoSource: 79
NoSource: 80
NoSource: 81
NoSource: 82
NoSource: 83
NoSource: 84
NoSource: 85
NoSource: 86
NoSource: 100
NoSource: 101
NoSource: 102
NoSource: 103
NoSource: 104
NoSource: 105
NoSource: 106
NoSource: 108
NoSource: 109
NoSource: 110
NoSource: 111
NoSource: 113
NoSource: 114
NoSource: 120
NoSource: 121
%ifarch %ix86
# Only i386/default supports i586, mark other flavors' packages as i686
%if ! %build_default
BuildArch: i686
%endif
%endif
# Force bzip2 instead of lzma compression to
# 1) allow install on older dist versions, and
# 2) decrease build times (bsc#962356 boo#1175882)
%define _binary_payload w9.bzdio
# Do not recompute the build-id of vmlinux in find-debuginfo.sh (bsc#964063)
%undefine _unique_build_ids
%define _no_recompute_build_ids 1
# prevent usr/lib/debug/boot/vmlinux-4.12.14-11.10-default-4.12.14-11.10.ppc64le.debug
%undefine _unique_debug_names
%if "%{compress_modules}" == "zstd"
BuildRequires: zstd
# Make sure kmod supports zstd compressed modules
Requires(post): kmod-zstd
%endif
Provides: %name = %version-%source_rel
# bnc#901925
Provides: %name-%version-%source_rel
Provides: %{name}_%_target_cpu = %version-%source_rel
Provides: kernel-base = %version-%source_rel
Provides: multiversion(kernel)
# In SLE11, kernel-$flavor complemented kernel-$flavor-base. With SLE12,
# kernel-$flavor itself contains all the needed files and kernel-$flavor-base
# is a subset that can replace kernel-$flavor in some scenarios. We need to
# obsolete the -base subpackage from SLE11, so that the base files are not
# owned by multiple packages now. The dependency is not correct wrt openSUSE
# 11.2 - 11.4, but we primarily care about the supported upgrade path.
Obsoletes: %name-base < 3.1
%if ("%build_flavor" != "kvmsmall") && ("%build_flavor" != "azure")
Recommends: kernel-firmware
%endif
# The following is copied to the -base subpackage as well
# BEGIN COMMON DEPS
Requires(pre): suse-kernel-rpm-scriptlets
Requires(post): suse-kernel-rpm-scriptlets
Requires: suse-kernel-rpm-scriptlets
Requires(preun): suse-kernel-rpm-scriptlets
Requires(postun): suse-kernel-rpm-scriptlets
Requires(pre): coreutils awk
# For /usr/lib/module-init-tools/weak-modules2 and /usr/lib/modprobe.d/*.conf
Requires(post): suse-module-tools
Requires: suse-module-tools
# For depmod (modutils is a dependency provided by both module-init-tools and
# kmod-compat)
Requires(post): modutils
# This Requires is wrong, because the post/postun scripts have a
# test -x update-bootloader, having perl-Bootloader is not a hard requirement.
# But, there is no way to tell rpm or yast to schedule the installation
# of perl-Bootloader before kernel-binary.rpm if both are in the list of
# packages to install/update. Likewise, this is true for dracut.
# Need a perl-Bootloader with /usr/lib/bootloader/bootloader_entry
Requires(post): perl-Bootloader >= 0.4.15
Requires(post): dracut
# Install the package providing /etc/SuSE-release early enough, so that
# the grub entry has correct title (bnc#757565)
Requires(post): distribution-release
%if %{usrmerged}
# make sure we have a post-usrmerge system
Conflicts: filesystem < 16
%endif
Obsoletes: microcode_ctl < 1.18
%{lua: fd, err = io.open(rpm.expand('%_sourcedir') .. '/kernel-binary-conflicts')
if not fd then io.stderr:write(err) end
unpack = table.unpack or unpack
for l in fd:lines() do
if #l > 0 and l:sub(1,1) ~= '#' then
words = {} ; for w in l:gmatch("([^%s]+)%s*") do table.insert(words, w) end
package, version = unpack(words)
print('Conflicts: ' .. package .. ' < '.. version .. '\n')
end
end
fd:close()
}
%ifarch %ix86
Conflicts: libc.so.6()(64bit)
%endif
Provides: kernel = %version-%source_rel
Provides: kernel-%build_flavor-base-srchash-%git_commit
Provides: kernel-srchash-%git_commit
# END COMMON DEPS
Provides: %name-srchash-%git_commit
%ifarch x86_64
Provides: kernel-compute_debug = 3.13
Obsoletes: kernel-compute_debug <= 3.13
%endif
%ifarch x86_64
Provides: kernel-compute_debug-base = 3.13
Obsoletes: kernel-compute_debug-base <= 3.13
%endif
%obsolete_rebuilds %name
%define kmp_target_cpu %_target_cpu
%ifarch %ix86
# KMPs are always built as i586, because rpm does not allow to build
# subpackages for different architectures. Therefore, we change the
# /usr/src/linux-obj/<arch> symlink to i586.
%define kmp_target_cpu i586
%endif
%if %build_default
%if "%CONFIG_PREEMPT_DYNAMIC" == "y"
Provides: kernel-preempt = %version-%release
Provides: kernel-preempt_%_target_cpu = %version-%source_rel
%endif
%endif
%{lua: fd, err = io.open(rpm.expand('%_sourcedir') .. '/obsolete-kmps')
if not fd then io.stderr:write(err) end
unpack = table.unpack or unpack
for l in fd:lines() do
if #l > 0 and l:sub(1,1) ~= '#' then
words = {} ; for w in l:gmatch("([^%s]+)%s*") do table.insert(words, w) end
package, version = unpack(words)
print('Obsoletes: ' .. package .. '-kmp-' .. rpm.expand('%build_flavor') .. ' <= '.. version .. '\n')
print('Provides: ' .. package .. '-kmp = ' .. version .. '.1\n')
print('Provides: ' .. package .. '-kmp-' .. rpm.expand('%build_flavor') .. ' = '.. version .. '.1\n')
end
end
fd:close()
}
%description
The Linux Kernel.
%source_timestamp
%pre
%if "%build_flavor" != "zfcpdump"
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/rpm-pre --name "%name" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%endif
%post
%if "%build_flavor" != "zfcpdump"
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/rpm-post --name "%name" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%endif
%preun
%if "%build_flavor" != "zfcpdump"
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/rpm-preun --name "%name" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%endif
%postun
%if "%build_flavor" != "zfcpdump"
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/rpm-postun --name "%name" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%endif
%posttrans
%if "%build_flavor" != "zfcpdump"
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/rpm-posttrans --name "%name" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%endif
%files -f kernel-main.files
%if "%CONFIG_MODULES" == "y" && %split_base
%package base
Summary: The Linux Kernel - base modules
Group: System/Kernel
Url: http://www.kernel.org/
Provides: kernel-base = %version-%source_rel
Provides: multiversion(kernel)
Conflicts: %name = %version-%source_rel
Requires(pre): suse-kernel-rpm-scriptlets
Requires(post): suse-kernel-rpm-scriptlets
Requires: suse-kernel-rpm-scriptlets
Requires(preun): suse-kernel-rpm-scriptlets
Requires(postun): suse-kernel-rpm-scriptlets
Requires(pre): coreutils awk
# For /usr/lib/module-init-tools/weak-modules2 and /usr/lib/modprobe.d/*.conf
Requires(post): suse-module-tools
Requires: suse-module-tools
# For depmod (modutils is a dependency provided by both module-init-tools and
# kmod-compat)
Requires(post): modutils
# This Requires is wrong, because the post/postun scripts have a
# test -x update-bootloader, having perl-Bootloader is not a hard requirement.
# But, there is no way to tell rpm or yast to schedule the installation
# of perl-Bootloader before kernel-binary.rpm if both are in the list of
# packages to install/update. Likewise, this is true for dracut.
# Need a perl-Bootloader with /usr/lib/bootloader/bootloader_entry
Requires(post): perl-Bootloader >= 0.4.15
Requires(post): dracut
# Install the package providing /etc/SuSE-release early enough, so that
# the grub entry has correct title (bnc#757565)
Requires(post): distribution-release
%if %{usrmerged}
# make sure we have a post-usrmerge system
Conflicts: filesystem < 16
%endif
Obsoletes: microcode_ctl < 1.18
%{lua: fd, err = io.open(rpm.expand('%_sourcedir') .. '/kernel-binary-conflicts')
if not fd then io.stderr:write(err) end
unpack = table.unpack or unpack
for l in fd:lines() do
if #l > 0 and l:sub(1,1) ~= '#' then
words = {} ; for w in l:gmatch("([^%s]+)%s*") do table.insert(words, w) end
package, version = unpack(words)
print('Conflicts: ' .. package .. ' < '.. version .. '\n')
end
end
fd:close()
}
%ifarch %ix86
Conflicts: libc.so.6()(64bit)
%endif
Provides: kernel = %version-%source_rel
Provides: kernel-%build_flavor-base-srchash-%git_commit
Provides: kernel-srchash-%git_commit
%ifarch x86_64
Provides: kernel-compute_debug-base = 3.13
Obsoletes: kernel-compute_debug-base <= 3.13
%endif
%obsolete_rebuilds %name-base
%ifarch %ix86
Conflicts: libc.so.6()(64bit)
%endif
%description base
The Linux Kernel.
This package contains only the base modules, required in all installs.
%source_timestamp
%pre base
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/rpm-pre --name "%name-base" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%post base
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/rpm-post --name "%name-base" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%preun base
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/rpm-preun --name "%name-base" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%postun base
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/rpm-postun --name "%name-base" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%posttrans base
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/rpm-posttrans --name "%name-base" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%files base -f kernel-base.files
%endif
%package extra
Summary: The Linux Kernel - Unsupported kernel modules
Group: System/Kernel
URL: https://www.kernel.org/
Provides: %name-extra_%_target_cpu = %version-%source_rel
Provides: kernel-extra = %version-%source_rel
Provides: multiversion(kernel)
Requires: %{name}_%_target_cpu = %version-%source_rel
Requires(pre): coreutils awk
Requires(post): modutils
Requires(post): perl-Bootloader
Requires(post): dracut
%ifarch x86_64
Provides: kernel-compute_debug-extra = 3.13
Obsoletes: kernel-compute_debug-extra <= 3.13
%endif
%obsolete_rebuilds %name-extra
Supplements: packageand(product(SLED):%{name}_%_target_cpu)
Supplements: packageand(product(sle-we):%{name}_%_target_cpu)
Supplements: packageand(product(Leap):%{name}_%_target_cpu)
%ifarch %ix86
Conflicts: libc.so.6()(64bit)
%endif
%if %build_default
%if "%CONFIG_PREEMPT_DYNAMIC" == "y"
Provides: kernel-preempt-extra = %version-%release
Provides: kernel-preempt-extra_%_target_cpu = %version-%source_rel
%endif
%endif
%description extra
The Linux Kernel.
This package contains additional modules not supported by SUSE.
%source_timestamp
%pre extra
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-pre --name "%name-extra" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%post extra
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-post --name "%name-extra" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%preun extra
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-preun --name "%name-extra" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%postun extra
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-postun --name "%name-extra" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%posttrans extra
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-posttrans --name "%name-extra" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%if %split_extra
%files extra -f kernel-extra.files
%endif
%if %split_extra && %split_optional
%package optional
Summary: The Linux Kernel - Optional kernel modules
Group: System/Kernel
URL: https://www.kernel.org/
Provides: %name-optional_%_target_cpu = %version-%source_rel
Provides: kernel-optional = %version-%source_rel
Provides: multiversion(kernel)
Requires: %name-extra_%_target_cpu = %version-%source_rel
Requires(pre): coreutils awk
Requires(post): modutils
Requires(post): perl-Bootloader
Requires(post): dracut
%ifarch x86_64
Provides: kernel-compute_debug-optional = 3.13
Obsoletes: kernel-compute_debug-optional <= 3.13
%endif
%obsolete_rebuilds %name-optional
Supplements: packageand(product(Leap):%{name}_%_target_cpu)
%ifarch %ix86
Conflicts: libc.so.6()(64bit)
%endif
%if %build_default
%if "%CONFIG_PREEMPT_DYNAMIC" == "y"
Provides: kernel-preempt-optional = %version-%release
Provides: kernel-preempt-optional_%_target_cpu = %version-%source_rel
%endif
%endif
%description optional
The Linux Kernel.
This package contains optional modules only for openSUSE Leap.
%source_timestamp
%pre optional
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-pre --name "%name-optional" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%post optional
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-post --name "%name-optional" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%preun optional
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-preun --name "%name-optional" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%postun optional
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-postun --name "%name-optional" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%posttrans optional
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-posttrans --name "%name-optional" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%files optional -f kernel-optional.files
%endif
%if "%CONFIG_KMSG_IDS" == "y"
%package man
Summary: The collection of man pages generated by the kmsg script
Group: System/Kernel
%description man
This package includes the man pages that have been generated from the
kmsg message documentation comments.
%source_timestamp
%files man
/usr/share/man/man9/*
%endif
%if 0%{?separate_vdso}
%package vdso
Summary: vdso binaries for debugging purposes
Group: System/Kernel
%description vdso
This package includes the vdso binaries. They can be used for debugging. The
actual binary linked to the programs is loaded from the in-memory image, not
from this package.
%source_timestamp
%files vdso
%dir %modules_dir
%modules_dir/vdso/
%endif
%package devel
Summary: Development files necessary for building kernel modules
Group: Development/Sources
Provides: %name-devel = %version-%source_rel
Provides: multiversion(kernel)
%if ! %build_vanilla && ! %vanilla_only
Requires: kernel-devel%variant = %version-%source_rel
Recommends: make
Recommends: gcc
Recommends: perl
# for objtool
Requires: libelf-devel
Supplements: packageand(%name:kernel-devel%variant)
%else
Requires: kernel-source-vanilla = %version-%source_rel
Supplements: packageand(%name:kernel-source-vanilla)
%endif
%if "%CONFIG_DEBUG_INFO_BTF_MODULES" == "y"
Requires: dwarves >= 1.22
%endif
%if %build_default
%if "%CONFIG_PREEMPT_DYNAMIC" == "y"
Provides: kernel-preempt-devel = %version-%release
%endif
%endif
%ifarch x86_64
Provides: kernel-compute_debug-devel = 3.13
Obsoletes: kernel-compute_debug-devel <= 3.13
%endif
%obsolete_rebuilds %name-devel
PreReq: coreutils
%description devel
This package contains files necessary for building kernel modules (and
kernel module packages) against the %build_flavor flavor of the kernel.
%source_timestamp
%if "%CONFIG_MODULES" == "y"
%pre devel
# handle update from an older kernel-source with linux-obj as symlink
if [ -h /usr/src/linux-obj ]; then
rm -vf /usr/src/linux-obj
fi
%post devel
%relink_function
relink ../../linux-%{kernelrelease}%{variant}-obj/"%cpu_arch_flavor" /usr/src/linux-obj/"%cpu_arch_flavor"
%files devel -f kernel-devel.files
%dir /usr/src/linux-obj
%dir /usr/src/linux-obj/%cpu_arch
%ghost /usr/src/linux-obj/%cpu_arch_flavor
%exclude %obj_install_dir/%cpu_arch_flavor/Symbols.list
%if %generate_compile_commands
%exclude %obj_install_dir/%cpu_arch_flavor/compile_commands.json
%endif
%if "%kmp_target_cpu" != "%cpu_arch"
%obj_install_dir/%kmp_target_cpu
/usr/src/linux-obj/%kmp_target_cpu
%endif
%if "%livepatch" != "" && "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y" && (("%variant" == "" && %build_default) || ("%variant" == "-rt" && 0%livepatch_rt))
%if "%livepatch" == "kgraft"
%define patch_package %{livepatch}-patch
%else
%define patch_package kernel-%{livepatch}
%endif
%package %{livepatch}
Summary: Metapackage to pull in matching %patch_package package
Group: System/Kernel
Requires: %{patch_package}-%(echo %{version}-%{source_rel} | sed 'y/\./_/')-%{build_flavor}
Provides: multiversion(kernel)
%if "%variant" != "-rt"
Provides: kernel-default-kgraft = %version
Provides: kernel-xen-kgraft = %version
%if "%livepatch" != "kgraft"
Obsoletes: kernel-default-kgraft < %version
Obsoletes: kernel-xen-kgraft < %version
%endif
%endif
%description %{livepatch}
This is a metapackage that pulls in the matching %patch_package package for a
given kernel version. The advantage of the metapackage is that its name is
static, unlike the %{patch_package}-<kernel-version>-flavor package names.
%files %{livepatch}
# rpmlint complains about empty packages, so lets own something
%dir %modules_dir
%endif
%if 0%{?klp_symbols} && "%livepatch" != ""
%package %{livepatch}-devel
Summary: Kernel symbols file used during kGraft patch development
Group: System/Kernel
Provides: klp-symbols = %version
%description %{livepatch}-devel
This package brings a file named Symbols.list, which contains a list of all
kernel symbols and its respective kernel object . This list is to be used by
the klp-convert tool, which helps livepatch developers by enabling automatic
symbol resolution.
%files %{livepatch}-devel -f livepatch-files
%endif
%if "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y"
%package -n cluster-md-kmp-%build_flavor
Summary: Clustering support for MD devices
Group: System/Kernel
Requires: %name = %version-%source_rel
Provides: cluster-md-kmp = %version-%source_rel
Provides: multiversion(kernel)
# tell weak-modules2 to ignore this package
Provides: kmp_in_kernel
Requires(post): suse-module-tools >= 12.4
%if %build_default
%if "%CONFIG_PREEMPT_DYNAMIC" == "y"
Provides: cluster-md-kmp-preempt = %version-%release
%endif
%endif
Enhances: %name
Supplements: packageand(%name:cluster-md-kmp-%build_flavor)
Requires: dlm-kmp-%build_flavor = %version-%release
%description -n cluster-md-kmp-%build_flavor
Clustering support for MD devices. This enables locking and
synchronization across multiple systems on the cluster, so all
nodes in the cluster can access the MD devices simultaneously.
%pre -n cluster-md-kmp-%build_flavor
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-pre --name "cluster-md-kmp-%build_flavor" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%post -n cluster-md-kmp-%build_flavor
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-post --name "cluster-md-kmp-%build_flavor" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%preun -n cluster-md-kmp-%build_flavor
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-preun --name "cluster-md-kmp-%build_flavor" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%postun -n cluster-md-kmp-%build_flavor
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-postun --name "cluster-md-kmp-%build_flavor" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%posttrans -n cluster-md-kmp-%build_flavor
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-posttrans --name "cluster-md-kmp-%build_flavor" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%files -n cluster-md-kmp-%build_flavor -f cluster-md-kmp.files
%package -n dlm-kmp-%build_flavor
Summary: DLM kernel modules
Group: System/Kernel
Requires: %name = %version-%source_rel
Provides: dlm-kmp = %version-%source_rel
Provides: multiversion(kernel)
# tell weak-modules2 to ignore this package
Provides: kmp_in_kernel
Requires(post): suse-module-tools >= 12.4
%if %build_default
%if "%CONFIG_PREEMPT_DYNAMIC" == "y"
Provides: dlm-kmp-preempt = %version-%release
%endif
%endif
Enhances: %name
Supplements: packageand(%name:dlm-kmp-%build_flavor)
%description -n dlm-kmp-%build_flavor
DLM stands for Distributed Lock Manager, a means to synchronize access to
shared resources over the cluster.
%pre -n dlm-kmp-%build_flavor
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-pre --name "dlm-kmp-%build_flavor" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%post -n dlm-kmp-%build_flavor
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-post --name "dlm-kmp-%build_flavor" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%preun -n dlm-kmp-%build_flavor
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-preun --name "dlm-kmp-%build_flavor" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%postun -n dlm-kmp-%build_flavor
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-postun --name "dlm-kmp-%build_flavor" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%posttrans -n dlm-kmp-%build_flavor
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-posttrans --name "dlm-kmp-%build_flavor" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%files -n dlm-kmp-%build_flavor -f dlm-kmp.files
%package -n gfs2-kmp-%build_flavor
Summary: GFS2 kernel modules
Group: System/Kernel
Requires: %name = %version-%source_rel
Provides: gfs2-kmp = %version-%source_rel
Provides: multiversion(kernel)
# tell weak-modules2 to ignore this package
Provides: kmp_in_kernel
Requires(post): suse-module-tools >= 12.4
%if %build_default
%if "%CONFIG_PREEMPT_DYNAMIC" == "y"
Provides: gfs2-kmp-preempt = %version-%release
%endif
%endif
Enhances: %name
Supplements: packageand(%name:gfs2-kmp-%build_flavor)
Requires: dlm-kmp-%build_flavor = %version-%release
%description -n gfs2-kmp-%build_flavor
GFS2 is Global Filesystem, a shared device filesystem.
%pre -n gfs2-kmp-%build_flavor
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-pre --name "gfs2-kmp-%build_flavor" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%post -n gfs2-kmp-%build_flavor
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-post --name "gfs2-kmp-%build_flavor" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%preun -n gfs2-kmp-%build_flavor
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-preun --name "gfs2-kmp-%build_flavor" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%postun -n gfs2-kmp-%build_flavor
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-postun --name "gfs2-kmp-%build_flavor" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%posttrans -n gfs2-kmp-%build_flavor
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-posttrans --name "gfs2-kmp-%build_flavor" \
--version "%version" --release "%release" --kernelrelease "%kernelrelease" \
--image "%image" --flavor "%build_flavor" --variant "%variant" \
--usrmerged "%{usrmerged}" --certs "%certs" "$@"
%files -n gfs2-kmp-%build_flavor -f gfs2-kmp.files
%package -n kselftests-kmp-%build_flavor
Summary: Kernel sefltests
Group: System/Kernel
Requires: %name = %version-%source_rel
Provides: kselftests-kmp = %version-%source_rel
Provides: multiversion(kernel)
# tell weak-modules2 to ignore this package
Provides: kmp_in_kernel
Requires(post): suse-module-tools >= 12.4
%if %build_default
%if "%CONFIG_PREEMPT_DYNAMIC" == "y"