Blame kernel-kvmsmall.spec

Bernhard M. Wiedemann 6ebc4a
#
Bernhard M. Wiedemann 6ebc4a
# spec file for package kernel-kvmsmall
Bernhard M. Wiedemann 6ebc4a
#
Bernhard M. Wiedemann 878168
# Copyright (c) 2024 SUSE LLC
Bernhard M. Wiedemann 6ebc4a
#
Bernhard M. Wiedemann 6ebc4a
# All modifications and additions to the file contributed by third parties
Bernhard M. Wiedemann 6ebc4a
# remain the property of their copyright owners, unless otherwise agreed
Bernhard M. Wiedemann 6ebc4a
# upon. The license for this file, and modifications and additions to the
Bernhard M. Wiedemann 6ebc4a
# file, is the same license as for the pristine package itself (unless the
Bernhard M. Wiedemann 6ebc4a
# license for the pristine package is not an Open Source License, in which
Bernhard M. Wiedemann 6ebc4a
# case the license is the MIT License). An "Open Source License" is a
Bernhard M. Wiedemann 6ebc4a
# license that conforms to the Open Source Definition (Version 1.9)
Bernhard M. Wiedemann 6ebc4a
# published by the Open Source Initiative.
Bernhard M. Wiedemann 6ebc4a
57a832
# Please submit bugfixes or comments via https://bugs.opensuse.org/
Bernhard M. Wiedemann 6ebc4a
#
Bernhard M. Wiedemann 6ebc4a
# needssslcertforbuild
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
7a1991
%define srcversion 6.8
b15327
%define patchversion 6.8.8
b15327
%define git_commit 5cd329854ea295ada7c5947f7c0296101445c98e
Bernhard M. Wiedemann 6ebc4a
%define variant %{nil}
0ccffb
%define compress_modules zstd
Bernhard M. Wiedemann 78ffbf
%define compress_vmlinux xz
Bernhard M. Wiedemann 86a379
%define livepatch livepatch%{nil}
c3597e
%define livepatch_rt %{nil}
6a054f
%define sb_efi_only 0
6a054f
%define split_base 0
6a054f
%define split_optional 0
6a054f
%define supported_modules_check 0
7a1991
%define build_flavor kvmsmall
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
%include %_sourcedir/kernel-spec-macros
Bernhard M. Wiedemann 6ebc4a
5c34fe
%(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})
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Name:           kernel-kvmsmall
b15327
Version:        6.8.8
Bernhard M. Wiedemann 6ebc4a
%if 0%{?is_kotd}
b15327
Release:        <RELEASE>.g5cd3298
Bernhard M. Wiedemann 6ebc4a
%else
Bernhard M. Wiedemann 6ebc4a
Release:        0
Bernhard M. Wiedemann 6ebc4a
%endif
7a1991
Summary:        The Small Developer Kernel for KVM
7a1991
License:        GPL-2.0-only
7a1991
Group:          System/Kernel
57a832
URL:            https://www.kernel.org/
5c34fe
%if 0%{?suse_version} > 1500 || 0%{?sle_version} > 150300
5c34fe
BuildRequires:  bash-sh
5c34fe
%endif
Bernhard M. Wiedemann 6ebc4a
BuildRequires:  bc
Bernhard M. Wiedemann 6ebc4a
BuildRequires:  bison
Bernhard M. Wiedemann 6ebc4a
BuildRequires:  coreutils
Bernhard M. Wiedemann 6ebc4a
BuildRequires:  fdupes
Bernhard M. Wiedemann 6ebc4a
BuildRequires:  flex
Bernhard M. Wiedemann 6ebc4a
# Cannot test %%CONFIG_GCC_PLUGINS here because the buildservice parser
Bernhard M. Wiedemann 6ebc4a
# does not expand %%(...)
Bernhard M. Wiedemann 6ebc4a
%if "%build_flavor" == "syzkaller"
Bernhard M. Wiedemann 6ebc4a
# Needed by scripts/gcc-plugin.sh
Bernhard M. Wiedemann 6ebc4a
BuildRequires:  gcc-c++
Bernhard M. Wiedemann 6ebc4a
BuildRequires:  gcc-devel
Bernhard M. Wiedemann 6ebc4a
%endif
Bernhard M. Wiedemann 6ebc4a
BuildRequires:  hmaccalc
Bernhard M. Wiedemann 6ebc4a
BuildRequires:  libopenssl-devel
Bernhard M. Wiedemann 6ebc4a
BuildRequires:  modutils
db694b
BuildRequires:  python3-base
Bernhard M. Wiedemann 6ebc4a
# Used to sign the kernel in the buildservice
Bernhard M. Wiedemann 6ebc4a
BuildRequires:  openssl
Bernhard M. Wiedemann 6ebc4a
BuildRequires:  pesign-obs-integration
0af339
%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150300
0af339
# pahole for CONFIG_DEBUG_INFO_BTF
0ccffb
BuildRequires:  dwarves >= 1.22
0af339
%endif
Bernhard M. Wiedemann 6ebc4a
# for objtool
Bernhard M. Wiedemann 6ebc4a
BuildRequires:  libelf-devel
dd32e5
# required for 50-check-kernel-build-id rpm check
dd32e5
BuildRequires:  elfutils
7999ff
%ifarch %arm
7999ff
BuildRequires:  u-boot-tools
7999ff
%endif
7999ff
# Do not install p-b and dracut for the install check, the %post script is
7999ff
# able to handle this
786718
#!BuildIgnore: perl-Bootloader dracut distribution-release suse-kernel-rpm-scriptlets
7999ff
# Remove some packages that are installed automatically by the build system,
7999ff
# but are not needed to build the kernel
7999ff
#!BuildIgnore: autoconf automake gettext-runtime libtool cvs gettext-tools udev insserv
7a1991
%if ! 0%{?is_kotd} || ! %{?is_kotd_qa}%{!?is_kotd_qa:0}
7a1991
ExclusiveArch:  aarch64 ppc64le x86_64
7a1991
%else
7a1991
ExclusiveArch:  do_not_build
7a1991
%endif
7a1991
7a1991
%ifarch %ix86 x86_64
7a1991
%define image vmlinuz
7a1991
%endif
7a1991
%ifarch ppc ppc64 ppc64le
7a1991
%define image vmlinux
7a1991
%endif
7a1991
%ifarch s390 s390x
7a1991
%define image image
7a1991
%endif
7a1991
%ifarch %arm
7a1991
%define image zImage
7a1991
%endif
7a1991
%ifarch aarch64 riscv64
7a1991
%define image Image
7a1991
%endif
7a1991
7a1991
%ifarch %ix86 x86_64
7a1991
%define install_vdso 1
7a1991
%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150500
7a1991
%define separate_vdso 1
7a1991
%endif
7a1991
%else
7a1991
%define install_vdso 0
7a1991
%endif
7a1991
7a1991
%define build_default	("%build_flavor" == "default")
7a1991
%define build_vanilla	("%build_flavor" == "vanilla")
7a1991
%define vanilla_only    %{lua: if (rpm.expand("%variant") == "-vanilla") then print(1) else print(0) end}
7a1991
7a1991
%if ! %build_vanilla
7a1991
%define src_install_dir /usr/src/linux-%kernelrelease%variant
7a1991
%else
7a1991
%define src_install_dir /usr/src/linux-%kernelrelease-vanilla
7a1991
%endif
7a1991
%define obj_install_dir /usr/src/linux-%kernelrelease%variant-obj
7a1991
%define rpm_install_dir %buildroot%obj_install_dir
7a1991
%define kernel_build_dir %my_builddir/linux-%srcversion/linux-obj
7a1991
%define modules_dir %kernel_module_directory/%kernelrelease-%build_flavor
7a1991
7a1991
%global cpu_arch %(%_sourcedir/arch-symbols %_target_cpu)
7a1991
%define cpu_arch_flavor %cpu_arch/%build_flavor
7a1991
7a1991
%if 0%{?_project:1} && ( %(echo %_project | grep -Ex -f %_sourcedir/release-projects | grep -v ^PTF | grep -vc openSUSE) || %(echo %_project | grep -Ec "^(Devel:)?Kernel:") )
7a1991
	%define klp_symbols 1
7a1991
%endif
7a1991
7a1991
# Define some CONFIG variables as rpm macros as well. (rpm cannot handle
7a1991
# defining them all at once.)
7a1991
%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
7a1991
%{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)}
7a1991
%define split_extra ("%CONFIG_MODULES" == "y" && "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y")
7a1991
7a1991
%if "%CONFIG_MODULES" != "y"
7a1991
	%define klp_symbols 0
7a1991
%endif
7a1991
7a1991
%global certs %( space="" ; for f in %_sourcedir/*.crt; do                                              \
7a1991
    if ! test -e "$f"; then                                                                             \
7a1991
        continue                                                                                        \
7a1991
    fi                                                                                                  \
7a1991
    h=$(openssl x509 -inform PEM -fingerprint -noout -in "$f")                                          \
7a1991
    if [ -z "$h" ] ; then                                                                               \
7a1991
        echo Cannot parse "$f" >&2                                                                      \
7a1991
        confinue                                                                                        \
7a1991
    fi                                                                                                  \
7a1991
    cert=$(echo "$h" | sed -rn 's/^SHA1 Fingerprint=//; T; s/://g; s/(.{8}).*/\\1/p')                   \
7a1991
    echo Found signing certificate "$f" "($cert)" >&2                                                   \
7a1991
    cat "$f" >>%_sourcedir/.kernel_signing_key.pem                                                      \
7a1991
    mkdir -p %_sourcedir/.kernel_signing_certs                                                          \
7a1991
    openssl x509 -inform PEM -in "$f" -outform DER -out %_sourcedir/.kernel_signing_certs/"$cert".crt   \
7a1991
    echo -n "$space$cert" ; space=" "                                                                   \
7a1991
done )
7a1991
160bca
Source0:        https://www.kernel.org/pub/linux/kernel/v6.x/linux-%srcversion.tar.xz
Bernhard M. Wiedemann 6ebc4a
Source3:        kernel-source.rpmlintrc
Bernhard M. Wiedemann 6ebc4a
Source14:       series.conf
Bernhard M. Wiedemann 6ebc4a
Source16:       guards
Bernhard M. Wiedemann 6ebc4a
Source17:       apply-patches
6a054f
Source19:       kernel-binary-conflicts
6a054f
Source20:       obsolete-kmps
Bernhard M. Wiedemann 6ebc4a
Source21:       config.conf
Bernhard M. Wiedemann 6ebc4a
Source23:       supported.conf
Bernhard M. Wiedemann 6ebc4a
Source33:       check-for-config-changes
Bernhard M. Wiedemann 6ebc4a
Source35:       group-source-files.pl
Bernhard M. Wiedemann 6ebc4a
Source36:       README.PATCH-POLICY.SUSE
Bernhard M. Wiedemann 6ebc4a
Source37:       README.SUSE
Bernhard M. Wiedemann 6ebc4a
Source38:       README.KSYMS
Bernhard M. Wiedemann 6ebc4a
Source40:       source-timestamp
Bernhard M. Wiedemann 6ebc4a
Source46:       split-modules
Bernhard M. Wiedemann 6ebc4a
Source47:       modversions
Bernhard M. Wiedemann 6ebc4a
Source48:       macros.kernel-source
Bernhard M. Wiedemann 6ebc4a
Source49:       kernel-module-subpackage
Bernhard M. Wiedemann 6ebc4a
Source50:       kabi.pl
Bernhard M. Wiedemann 6ebc4a
Source51:       mkspec
Bernhard M. Wiedemann 6ebc4a
Source52:       kernel-source%variant.changes
Bernhard M. Wiedemann 6ebc4a
Source53:       kernel-source.spec.in
Bernhard M. Wiedemann 6ebc4a
Source54:       kernel-binary.spec.in
Bernhard M. Wiedemann 6ebc4a
Source55:       kernel-syms.spec.in
Bernhard M. Wiedemann 6ebc4a
Source56:       kernel-docs.spec.in
Bernhard M. Wiedemann 6ebc4a
Source57:       kernel-cert-subpackage
Bernhard M. Wiedemann 6ebc4a
Source58:       constraints.in
Bernhard M. Wiedemann 6ebc4a
Source60:       config.sh
Bernhard M. Wiedemann 6ebc4a
Source61:       compute-PATCHVERSION.sh
Bernhard M. Wiedemann 6ebc4a
Source62:       old-flavors
Bernhard M. Wiedemann 6ebc4a
Source63:       arch-symbols
Bernhard M. Wiedemann 6ebc4a
Source64:       package-descriptions
Bernhard M. Wiedemann 6ebc4a
Source65:       kernel-spec-macros
Bernhard M. Wiedemann 6ebc4a
Source67:       log.sh
Bernhard M. Wiedemann 6ebc4a
Source68:       host-memcpy-hack.h
Bernhard M. Wiedemann 6ebc4a
Source69:       try-disable-staging-driver
Bernhard M. Wiedemann 6ebc4a
Source70:       kernel-obs-build.spec.in
Bernhard M. Wiedemann 6ebc4a
Source71:       kernel-obs-qa.spec.in
Bernhard M. Wiedemann 6ebc4a
Source72:       compress-vmlinux.sh
Bernhard M. Wiedemann 6ebc4a
Source73:       dtb.spec.in.in
Bernhard M. Wiedemann 6ebc4a
Source74:       mkspec-dtb
Bernhard M. Wiedemann 6ebc4a
Source75:       release-projects
Bernhard M. Wiedemann 6ebc4a
Source76:       check-module-license
Bernhard M. Wiedemann 6ebc4a
Source77:       klp-symbols
Bernhard M. Wiedemann 6ebc4a
Source78:       modules.fips
Bernhard M. Wiedemann 6ebc4a
Source79:       splitflist
Bernhard M. Wiedemann 6ebc4a
Source80:       mergedep
Bernhard M. Wiedemann 6ebc4a
Source81:       moddep
Bernhard M. Wiedemann 6ebc4a
Source82:       modflist
Bernhard M. Wiedemann 6ebc4a
Source83:       kernel-subpackage-build
Bernhard M. Wiedemann 6ebc4a
Source84:       kernel-subpackage-spec
Bernhard M. Wiedemann 6ebc4a
Source85:       kernel-default-base.spec.txt
494dc1
Source86:       old_changelog.txt
Bernhard M. Wiedemann 6ebc4a
Source100:      config.tar.bz2
Bernhard M. Wiedemann 6ebc4a
Source101:      config.addon.tar.bz2
Bernhard M. Wiedemann 6ebc4a
Source102:      patches.arch.tar.bz2
Bernhard M. Wiedemann 6ebc4a
Source103:      patches.drivers.tar.bz2
Bernhard M. Wiedemann 6ebc4a
Source104:      patches.fixes.tar.bz2
Bernhard M. Wiedemann 6ebc4a
Source105:      patches.rpmify.tar.bz2
Bernhard M. Wiedemann 6ebc4a
Source106:      patches.suse.tar.bz2
Bernhard M. Wiedemann 6ebc4a
Source108:      patches.addon.tar.bz2
Bernhard M. Wiedemann 6ebc4a
Source109:      patches.kernel.org.tar.bz2
Bernhard M. Wiedemann 6ebc4a
Source110:      patches.apparmor.tar.bz2
Bernhard M. Wiedemann 6ebc4a
Source111:      patches.rt.tar.bz2
Bernhard M. Wiedemann 6ebc4a
Source113:      patches.kabi.tar.bz2
6a054f
Source114:      patches.drm.tar.bz2
Bernhard M. Wiedemann 6ebc4a
Source120:      kabi.tar.bz2
Bernhard M. Wiedemann 6ebc4a
Source121:      sysctl.tar.bz2
Bernhard M. Wiedemann 6ebc4a
# These files are found in the kernel-source package:
Bernhard M. Wiedemann 6ebc4a
NoSource:       0
Bernhard M. Wiedemann 6ebc4a
NoSource:       3
Bernhard M. Wiedemann 6ebc4a
NoSource:       14
Bernhard M. Wiedemann 6ebc4a
NoSource:       16
Bernhard M. Wiedemann 6ebc4a
NoSource:       17
6a054f
NoSource:       19
6a054f
NoSource:       20
Bernhard M. Wiedemann 6ebc4a
NoSource:       21
Bernhard M. Wiedemann 6ebc4a
NoSource:       23
Bernhard M. Wiedemann 6ebc4a
NoSource:       33
Bernhard M. Wiedemann 6ebc4a
NoSource:       35
Bernhard M. Wiedemann 6ebc4a
NoSource:       36
Bernhard M. Wiedemann 6ebc4a
NoSource:       37
Bernhard M. Wiedemann 6ebc4a
NoSource:       38
Bernhard M. Wiedemann 6ebc4a
NoSource:       40
Bernhard M. Wiedemann 6ebc4a
NoSource:       46
Bernhard M. Wiedemann 6ebc4a
NoSource:       47
Bernhard M. Wiedemann 6ebc4a
NoSource:       48
Bernhard M. Wiedemann 6ebc4a
NoSource:       49
Bernhard M. Wiedemann 6ebc4a
NoSource:       50
Bernhard M. Wiedemann 6ebc4a
NoSource:       51
Bernhard M. Wiedemann 6ebc4a
NoSource:       52
Bernhard M. Wiedemann 6ebc4a
NoSource:       53
Bernhard M. Wiedemann 6ebc4a
NoSource:       54
Bernhard M. Wiedemann 6ebc4a
NoSource:       55
Bernhard M. Wiedemann 6ebc4a
NoSource:       56
Bernhard M. Wiedemann 6ebc4a
NoSource:       57
Bernhard M. Wiedemann 6ebc4a
NoSource:       58
Bernhard M. Wiedemann 6ebc4a
NoSource:       60
Bernhard M. Wiedemann 6ebc4a
NoSource:       61
Bernhard M. Wiedemann 6ebc4a
NoSource:       62
Bernhard M. Wiedemann 6ebc4a
NoSource:       63
Bernhard M. Wiedemann 6ebc4a
NoSource:       64
Bernhard M. Wiedemann 6ebc4a
NoSource:       65
Bernhard M. Wiedemann 6ebc4a
NoSource:       67
Bernhard M. Wiedemann 6ebc4a
NoSource:       68
Bernhard M. Wiedemann 6ebc4a
NoSource:       69
Bernhard M. Wiedemann 6ebc4a
NoSource:       70
Bernhard M. Wiedemann 6ebc4a
NoSource:       71
Bernhard M. Wiedemann 6ebc4a
NoSource:       72
Bernhard M. Wiedemann 6ebc4a
NoSource:       73
Bernhard M. Wiedemann 6ebc4a
NoSource:       74
Bernhard M. Wiedemann 6ebc4a
NoSource:       75
Bernhard M. Wiedemann 6ebc4a
NoSource:       76
Bernhard M. Wiedemann 6ebc4a
NoSource:       77
Bernhard M. Wiedemann 6ebc4a
NoSource:       78
Bernhard M. Wiedemann 6ebc4a
NoSource:       79
Bernhard M. Wiedemann 6ebc4a
NoSource:       80
Bernhard M. Wiedemann 6ebc4a
NoSource:       81
Bernhard M. Wiedemann 6ebc4a
NoSource:       82
Bernhard M. Wiedemann 6ebc4a
NoSource:       83
Bernhard M. Wiedemann 6ebc4a
NoSource:       84
Bernhard M. Wiedemann 6ebc4a
NoSource:       85
494dc1
NoSource:       86
Bernhard M. Wiedemann 6ebc4a
NoSource:       100
Bernhard M. Wiedemann 6ebc4a
NoSource:       101
Bernhard M. Wiedemann 6ebc4a
NoSource:       102
Bernhard M. Wiedemann 6ebc4a
NoSource:       103
Bernhard M. Wiedemann 6ebc4a
NoSource:       104
Bernhard M. Wiedemann 6ebc4a
NoSource:       105
Bernhard M. Wiedemann 6ebc4a
NoSource:       106
Bernhard M. Wiedemann 6ebc4a
NoSource:       108
Bernhard M. Wiedemann 6ebc4a
NoSource:       109
Bernhard M. Wiedemann 6ebc4a
NoSource:       110
Bernhard M. Wiedemann 6ebc4a
NoSource:       111
Bernhard M. Wiedemann 6ebc4a
NoSource:       113
6a054f
NoSource:       114
Bernhard M. Wiedemann 6ebc4a
NoSource:       120
Bernhard M. Wiedemann 6ebc4a
NoSource:       121
7a1991
1d2ab9
%ifarch %ix86
1d2ab9
# Only i386/default supports i586, mark other flavors' packages as i686
1d2ab9
%if ! %build_default
1d2ab9
BuildArch:      i686
db694b
%endif
db694b
%endif
db694b
# Force bzip2 instead of lzma compression to
db694b
# 1) allow install on older dist versions, and
db694b
# 2) decrease build times (bsc#962356 boo#1175882)
db694b
%define _binary_payload w9.bzdio
db694b
# Do not recompute the build-id of vmlinux in find-debuginfo.sh (bsc#964063)
db694b
%undefine _unique_build_ids
db694b
%define _no_recompute_build_ids 1
db694b
# prevent usr/lib/debug/boot/vmlinux-4.12.14-11.10-default-4.12.14-11.10.ppc64le.debug
db694b
%undefine _unique_debug_names
db694b
db694b
%if "%{compress_modules}" == "zstd"
db694b
BuildRequires:  zstd
db694b
# Make sure kmod supports zstd compressed modules
db694b
Requires(post): kmod-zstd
db694b
%endif
db694b
Provides:       %name = %version-%source_rel
db694b
# bnc#901925
db694b
Provides:       %name-%version-%source_rel
db694b
Provides:       %{name}_%_target_cpu = %version-%source_rel
db694b
Provides:       kernel-base = %version-%source_rel
db694b
Provides:       multiversion(kernel)
db694b
# In SLE11, kernel-$flavor complemented kernel-$flavor-base. With SLE12,
db694b
# kernel-$flavor itself contains all the needed files and kernel-$flavor-base
db694b
# is a subset that can replace kernel-$flavor in some scenarios. We need to
db694b
# obsolete the -base subpackage from SLE11, so that the base files are not
db694b
# owned by multiple packages now. The dependency is not correct wrt openSUSE
db694b
# 11.2 - 11.4, but we primarily care about the supported upgrade path.
db694b
Obsoletes:      %name-base < 3.1
db694b
%if ("%build_flavor" != "kvmsmall") && ("%build_flavor" != "azure")
db694b
Recommends: kernel-firmware
db694b
%endif
db694b
# The following is copied to the -base subpackage as well
db694b
# BEGIN COMMON DEPS
db694b
Requires(pre):  suse-kernel-rpm-scriptlets
db694b
Requires(post): suse-kernel-rpm-scriptlets
db694b
Requires:       suse-kernel-rpm-scriptlets
db694b
Requires(preun): suse-kernel-rpm-scriptlets
db694b
Requires(postun): suse-kernel-rpm-scriptlets
db694b
Requires(pre):  coreutils awk
Bernhard M. Wiedemann 878168
# For /usr/lib/module-init-tools/weak-modules2 and /usr/lib/modprobe.d/*.conf
db694b
Requires(post): suse-module-tools
Bernhard M. Wiedemann 878168
Requires:       suse-module-tools
db694b
# For depmod (modutils is a dependency provided by both module-init-tools and
db694b
# kmod-compat)
db694b
Requires(post): modutils
db694b
# This Requires is wrong, because the post/postun scripts have a
db694b
# test -x update-bootloader, having perl-Bootloader is not a hard requirement.
db694b
# But, there is no way to tell rpm or yast to schedule the installation
db694b
# of perl-Bootloader before kernel-binary.rpm if both are in the list of
db694b
# packages to install/update. Likewise, this is true for dracut.
db694b
# Need a perl-Bootloader with /usr/lib/bootloader/bootloader_entry
db694b
Requires(post): perl-Bootloader >= 0.4.15
db694b
Requires(post): dracut
db694b
# Install the package providing /etc/SuSE-release early enough, so that
db694b
# the grub entry has correct title (bnc#757565)
db694b
Requires(post): distribution-release
db694b
7a1991
%if %{usrmerged}
db694b
# make sure we have a post-usrmerge system
db694b
Conflicts:      filesystem < 16
db694b
%endif
db694b
db694b
Obsoletes:      microcode_ctl < 1.18
db694b
db694b
%{lua:	fd, err = io.open(rpm.expand('%_sourcedir') .. '/kernel-binary-conflicts')
db694b
	if not fd then io.stderr:write(err) end
db694b
	unpack = table.unpack or unpack
db694b
	for l in fd:lines() do
db694b
		if #l > 0 and l:sub(1,1) ~= '#' then
db694b
			words = {} ; for w in l:gmatch("([^%s]+)%s*") do table.insert(words, w) end
db694b
			package, version = unpack(words)
db694b
			print('Conflicts: ' .. package .. ' < '.. version .. '\n')
db694b
		end
db694b
	end
db694b
	fd:close()
db694b
}
db694b
db694b
%ifarch %ix86
db694b
Conflicts:      libc.so.6()(64bit)
db694b
%endif
db694b
Provides:       kernel = %version-%source_rel
Bernhard M. Wiedemann 878168
Provides:       kernel-%build_flavor-base-srchash-%git_commit
Bernhard M. Wiedemann 878168
Provides:       kernel-srchash-%git_commit
db694b
# END COMMON DEPS
Bernhard M. Wiedemann 878168
Provides:       %name-srchash-%git_commit
db694b
%obsolete_rebuilds %name
db694b
db694b
%define kmp_target_cpu %_target_cpu
db694b
%ifarch %ix86
1d2ab9
# KMPs are always built as i586, because rpm does not allow to build
1d2ab9
# subpackages for different architectures. Therefore, we change the
1d2ab9
# /usr/src/linux-obj/<arch> symlink to i586.
1d2ab9
%define kmp_target_cpu i586
1d2ab9
%endif
1d2ab9
6a054f
%if %build_default
6a054f
%if "%CONFIG_PREEMPT_DYNAMIC" == "y"
6a054f
Provides:       kernel-preempt = %version-%release
6a054f
Provides:       kernel-preempt_%_target_cpu = %version-%source_rel
6a054f
%endif
6a054f
%endif
6a054f
6a054f
%{lua:	fd, err = io.open(rpm.expand('%_sourcedir') .. '/obsolete-kmps')
6a054f
	if not fd then io.stderr:write(err) end
6a054f
	unpack = table.unpack or unpack
6a054f
	for l in fd:lines() do
6a054f
		if #l > 0 and l:sub(1,1) ~= '#' then
6a054f
			words = {} ; for w in l:gmatch("([^%s]+)%s*") do table.insert(words, w) end
6a054f
			package, version = unpack(words)
6a054f
			print('Obsoletes: ' .. package .. '-kmp-' .. rpm.expand('%build_flavor') .. ' <= '.. version .. '\n')
6a054f
			print('Provides: ' .. package .. '-kmp = ' .. version .. '.1\n')
6a054f
			print('Provides: ' .. package .. '-kmp-' .. rpm.expand('%build_flavor') .. ' = '.. version .. '.1\n')
6a054f
		end
6a054f
	end
6a054f
	fd:close()
6a054f
}
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
%description
Bernhard M. Wiedemann 6ebc4a
This kernel is intended for kernel developers to use in simple virtual
Bernhard M. Wiedemann 6ebc4a
machines.  It contains only the device drivers necessary to use a
Bernhard M. Wiedemann 6ebc4a
KVM virtual machine *without* device passthrough enabled.  Common
Bernhard M. Wiedemann 6ebc4a
local and network file systems are enabled.  All device mapper targets
Bernhard M. Wiedemann 6ebc4a
are enabled.  Only the network and graphics drivers for devices that qemu
Bernhard M. Wiedemann 6ebc4a
emulates are enabled.  Many subsystems enabled in the default kernel
Bernhard M. Wiedemann 6ebc4a
are entirely disabled.  This kernel is meant to be small and to build
Bernhard M. Wiedemann 6ebc4a
very quickly.  The configuration may change arbitrarily between builds.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
%source_timestamp
Bernhard M. Wiedemann 6ebc4a
7a1991
%pre
7a1991
%if "%build_flavor" != "zfcpdump"
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/rpm-pre --name "%name" \
7a1991
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a1991
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
%endif
7a1991
%post
7a1991
%if "%build_flavor" != "zfcpdump"
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/rpm-post --name "%name" \
7a1991
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a1991
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
bd7477
%endif
7a1991
%preun
7a1991
%if "%build_flavor" != "zfcpdump"
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/rpm-preun --name "%name" \
7a1991
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a1991
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
%endif
7a1991
%postun
7a1991
%if "%build_flavor" != "zfcpdump"
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/rpm-postun --name "%name" \
7a1991
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a1991
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
%endif
7a1991
%posttrans
7a1991
%if "%build_flavor" != "zfcpdump"
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/rpm-posttrans --name "%name" \
7a1991
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a1991
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
%endif
7a1991
%files -f kernel-main.files
Bernhard M. Wiedemann 6ebc4a
7a1991
%if "%CONFIG_MODULES" == "y" && %split_base
7a1991
%package base
7a1991
Summary:        The Small Developer Kernel for KVM - base modules
7a1991
Group:          System/Kernel
7a1991
Url:            http://www.kernel.org/
7a1991
Provides:       kernel-base = %version-%source_rel
7a1991
Provides:       multiversion(kernel)
7a1991
Conflicts:      %name = %version-%source_rel
7a1991
Requires(pre):  suse-kernel-rpm-scriptlets
7a1991
Requires(post): suse-kernel-rpm-scriptlets
7a1991
Requires:       suse-kernel-rpm-scriptlets
7a1991
Requires(preun): suse-kernel-rpm-scriptlets
7a1991
Requires(postun): suse-kernel-rpm-scriptlets
7a1991
Requires(pre):  coreutils awk
7a1991
# For /usr/lib/module-init-tools/weak-modules2 and /usr/lib/modprobe.d/*.conf
7a1991
Requires(post): suse-module-tools
7a1991
Requires:       suse-module-tools
7a1991
# For depmod (modutils is a dependency provided by both module-init-tools and
7a1991
# kmod-compat)
7a1991
Requires(post): modutils
7a1991
# This Requires is wrong, because the post/postun scripts have a
7a1991
# test -x update-bootloader, having perl-Bootloader is not a hard requirement.
7a1991
# But, there is no way to tell rpm or yast to schedule the installation
7a1991
# of perl-Bootloader before kernel-binary.rpm if both are in the list of
7a1991
# packages to install/update. Likewise, this is true for dracut.
7a1991
# Need a perl-Bootloader with /usr/lib/bootloader/bootloader_entry
7a1991
Requires(post): perl-Bootloader >= 0.4.15
7a1991
Requires(post): dracut
7a1991
# Install the package providing /etc/SuSE-release early enough, so that
7a1991
# the grub entry has correct title (bnc#757565)
7a1991
Requires(post): distribution-release
2f5b95
7a1991
%if %{usrmerged}
7a1991
# make sure we have a post-usrmerge system
7a1991
Conflicts:      filesystem < 16
Bernhard M. Wiedemann 6ebc4a
%endif
Bernhard M. Wiedemann 6ebc4a
7a1991
Obsoletes:      microcode_ctl < 1.18
735e77
7a1991
%{lua:	fd, err = io.open(rpm.expand('%_sourcedir') .. '/kernel-binary-conflicts')
7a1991
	if not fd then io.stderr:write(err) end
7a1991
	unpack = table.unpack or unpack
7a1991
	for l in fd:lines() do
7a1991
		if #l > 0 and l:sub(1,1) ~= '#' then
7a1991
			words = {} ; for w in l:gmatch("([^%s]+)%s*") do table.insert(words, w) end
7a1991
			package, version = unpack(words)
7a1991
			print('Conflicts: ' .. package .. ' < '.. version .. '\n')
7a1991
		end
7a1991
	end
7a1991
	fd:close()
7a1991
}
735e77
7a1991
%ifarch %ix86
7a1991
Conflicts:      libc.so.6()(64bit)
7a1991
%endif
7a1991
Provides:       kernel = %version-%source_rel
7a1991
Provides:       kernel-%build_flavor-base-srchash-%git_commit
7a1991
Provides:       kernel-srchash-%git_commit
00af90
7a1991
%obsolete_rebuilds %name-base
7a1991
%ifarch %ix86
7a1991
Conflicts:      libc.so.6()(64bit)
7a1991
%endif
Bernhard M. Wiedemann 6ebc4a
7a1991
%description base
7a1991
This kernel is intended for kernel developers to use in simple virtual
7a1991
machines.  It contains only the device drivers necessary to use a
7a1991
KVM virtual machine *without* device passthrough enabled.  Common
7a1991
local and network file systems are enabled.  All device mapper targets
7a1991
are enabled.  Only the network and graphics drivers for devices that qemu
7a1991
emulates are enabled.  Many subsystems enabled in the default kernel
7a1991
are entirely disabled.  This kernel is meant to be small and to build
7a1991
very quickly.  The configuration may change arbitrarily between builds.
Bernhard M. Wiedemann 6ebc4a
7a1991
This package contains only the base modules, required in all installs.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
7a1991
%source_timestamp
7a1991
%pre base
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/rpm-pre --name "%name-base" \
7a1991
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a1991
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
7a1991
%post base
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/rpm-post --name "%name-base" \
7a1991
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a1991
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
7a1991
%preun base
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/rpm-preun --name "%name-base" \
7a1991
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a1991
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
7a1991
%postun base
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/rpm-postun --name "%name-base" \
7a1991
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a1991
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
7a1991
%posttrans base
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/rpm-posttrans --name "%name-base" \
7a1991
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a1991
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
7a1991
%files base -f kernel-base.files
Bernhard M. Wiedemann 6ebc4a
%endif
Bernhard M. Wiedemann 6ebc4a
7a1991
%package extra
7a1991
Summary:        The Small Developer Kernel for KVM - Unsupported kernel modules
7a1991
Group:          System/Kernel
7a1991
URL:            https://www.kernel.org/
7a1991
Provides:       %name-extra_%_target_cpu = %version-%source_rel
7a1991
Provides:       kernel-extra = %version-%source_rel
7a1991
Provides:       multiversion(kernel)
7a1991
Requires:       %{name}_%_target_cpu = %version-%source_rel
7a1991
Requires(pre):  coreutils awk
7a1991
Requires(post): modutils
7a1991
Requires(post): perl-Bootloader
7a1991
Requires(post): dracut
7a1991
%obsolete_rebuilds %name-extra
7a1991
Supplements:    packageand(product(SLED):%{name}_%_target_cpu)
7a1991
Supplements:    packageand(product(sle-we):%{name}_%_target_cpu)
7a1991
Supplements:    packageand(product(Leap):%{name}_%_target_cpu)
7a1991
%ifarch %ix86
7a1991
Conflicts:      libc.so.6()(64bit)
7a1991
%endif
7a1991
%if %build_default
7a1991
%if "%CONFIG_PREEMPT_DYNAMIC" == "y"
7a1991
Provides:       kernel-preempt-extra = %version-%release
7a1991
Provides:       kernel-preempt-extra_%_target_cpu = %version-%source_rel
7a1991
%endif
Bernhard M. Wiedemann 6ebc4a
%endif
Bernhard M. Wiedemann 6ebc4a
7a1991
%description extra
7a1991
This kernel is intended for kernel developers to use in simple virtual
7a1991
machines.  It contains only the device drivers necessary to use a
7a1991
KVM virtual machine *without* device passthrough enabled.  Common
7a1991
local and network file systems are enabled.  All device mapper targets
7a1991
are enabled.  Only the network and graphics drivers for devices that qemu
7a1991
emulates are enabled.  Many subsystems enabled in the default kernel
7a1991
are entirely disabled.  This kernel is meant to be small and to build
7a1991
very quickly.  The configuration may change arbitrarily between builds.
Bernhard M. Wiedemann 6ebc4a
7a1991
This package contains additional modules not supported by SUSE.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
7a1991
%source_timestamp
Bernhard M. Wiedemann 6ebc4a
7a1991
%pre extra
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-pre --name "%name-extra" \
7a1991
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a1991
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
7a1991
%post extra
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-post --name "%name-extra" \
7a1991
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a1991
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
7a1991
%preun extra
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-preun --name "%name-extra" \
7a1991
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a1991
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
7a1991
%postun extra
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-postun --name "%name-extra" \
7a1991
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a1991
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
7a1991
%posttrans extra
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-posttrans --name "%name-extra" \
7a1991
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a1991
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
7a1991
7a1991
%if %split_extra
7a1991
7a1991
%files extra -f kernel-extra.files
Bernhard M. Wiedemann 6ebc4a
%endif
7a1991
7a1991
%if %split_extra && %split_optional
7a1991
%package optional
7a1991
Summary:        The Small Developer Kernel for KVM - Optional kernel modules
7a1991
Group:          System/Kernel
7a1991
URL:            https://www.kernel.org/
7a1991
Provides:       %name-optional_%_target_cpu = %version-%source_rel
7a1991
Provides:       kernel-optional = %version-%source_rel
7a1991
Provides:       multiversion(kernel)
7a1991
Requires:       %name-extra_%_target_cpu = %version-%source_rel
7a1991
Requires(pre):  coreutils awk
7a1991
Requires(post): modutils
7a1991
Requires(post): perl-Bootloader
7a1991
Requires(post): dracut
7a1991
%obsolete_rebuilds %name-optional
7a1991
Supplements:    packageand(product(Leap):%{name}_%_target_cpu)
Bernhard M. Wiedemann 6ebc4a
%ifarch %ix86
7a1991
Conflicts:      libc.so.6()(64bit)
Bernhard M. Wiedemann 6ebc4a
%endif
7a1991
%if %build_default
7a1991
%if "%CONFIG_PREEMPT_DYNAMIC" == "y"
7a1991
Provides:       kernel-preempt-optional = %version-%release
7a1991
Provides:       kernel-preempt-optional_%_target_cpu = %version-%source_rel
Bernhard M. Wiedemann 6ebc4a
%endif
9b9006
%endif
Bernhard M. Wiedemann 6ebc4a
7a1991
%description optional
7a1991
This kernel is intended for kernel developers to use in simple virtual
7a1991
machines.  It contains only the device drivers necessary to use a
7a1991
KVM virtual machine *without* device passthrough enabled.  Common
7a1991
local and network file systems are enabled.  All device mapper targets
7a1991
are enabled.  Only the network and graphics drivers for devices that qemu
7a1991
emulates are enabled.  Many subsystems enabled in the default kernel
7a1991
are entirely disabled.  This kernel is meant to be small and to build
7a1991
very quickly.  The configuration may change arbitrarily between builds.
Bernhard M. Wiedemann 6ebc4a
7a1991
This package contains optional modules only for openSUSE Leap.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
7a1991
%source_timestamp
Bernhard M. Wiedemann 6ebc4a
7a1991
%pre optional
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-pre --name "%name-optional" \
7a1991
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a1991
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
7a1991
%post optional
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-post --name "%name-optional" \
7a1991
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a1991
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
7a1991
%preun optional
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-preun --name "%name-optional" \
7a1991
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a1991
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
7a1991
%postun optional
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-postun --name "%name-optional" \
7a1991
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a1991
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
7a1991
7a1991
%posttrans optional
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-posttrans --name "%name-optional" \
7a1991
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a1991
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
7a1991
7a1991
%files optional -f kernel-optional.files
Bernhard M. Wiedemann 6ebc4a
%endif
Bernhard M. Wiedemann 6ebc4a
7a1991
%if "%CONFIG_KMSG_IDS" == "y"
Bernhard M. Wiedemann 6ebc4a
7a1991
%package man
7a1991
Summary:        The collection of man pages generated by the kmsg script
7a1991
Group:          System/Kernel
Bernhard M. Wiedemann 4b7a24
7a1991
%description man
7a1991
This package includes the man pages that have been generated from the
7a1991
kmsg message documentation comments.
7a1991
7a1991
7a1991
%source_timestamp
7a1991
%files man
7a1991
/usr/share/man/man9/*
6a054f
%endif
Bernhard M. Wiedemann 6ebc4a
7a1991
%if 0%{?separate_vdso}
7a1991
%package vdso
7a1991
Summary:        vdso binaries for debugging purposes
7a1991
Group:          System/Kernel
Bernhard M. Wiedemann 6ebc4a
7a1991
%description vdso
7a1991
This package includes the vdso binaries. They can be used for debugging. The
7a1991
actual binary linked to the programs is loaded from the in-memory image, not
7a1991
from this package.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
7a1991
%source_timestamp
7a1991
%files vdso
7a1991
%modules_dir/vdso/
7a1991
%endif
Bernhard M. Wiedemann 6ebc4a
7a1991
%package devel
7a1991
Summary:        Development files necessary for building kernel modules
7a1991
Group:          Development/Sources
7a1991
Provides:       %name-devel = %version-%source_rel
7a1991
Provides:       multiversion(kernel)
7a1991
%if ! %build_vanilla && ! %vanilla_only
7a1991
Requires:       kernel-devel%variant = %version-%source_rel
7a1991
Recommends:     make
7a1991
Recommends:     gcc
7a1991
Recommends:     perl
7a1991
# for objtool
7a1991
Requires:	libelf-devel
7a1991
Supplements:    packageand(%name:kernel-devel%variant)
7a1991
%else
7a1991
Requires:       kernel-source-vanilla = %version-%source_rel
7a1991
Supplements:    packageand(%name:kernel-source-vanilla)
Bernhard M. Wiedemann 6ebc4a
%endif
7a1991
%if "%CONFIG_DEBUG_INFO_BTF_MODULES" == "y"
7a1991
Requires:       dwarves >= 1.22
Bernhard M. Wiedemann 6ebc4a
%endif
7a1991
%if %build_default
7a1991
%if "%CONFIG_PREEMPT_DYNAMIC" == "y"
7a1991
Provides:       kernel-preempt-devel = %version-%release
Bernhard M. Wiedemann 6ebc4a
%endif
7a1991
%endif
7a1991
%obsolete_rebuilds %name-devel
7a1991
PreReq:         coreutils
Bernhard M. Wiedemann 6ebc4a
7a1991
%description devel
7a1991
This package contains files necessary for building kernel modules (and
7a1991
kernel module packages) against the %build_flavor flavor of the kernel.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
7a1991
%source_timestamp
Bernhard M. Wiedemann 6ebc4a
7a1991
%if "%CONFIG_MODULES" == "y"
Bernhard M. Wiedemann 6ebc4a
7a1991
%pre devel
dd32e5
7a1991
# handle update from an older kernel-source with linux-obj as symlink
7a1991
if [ -h /usr/src/linux-obj ]; then
7a1991
    rm -vf /usr/src/linux-obj
Bernhard M. Wiedemann 6ebc4a
fi
Bernhard M. Wiedemann 6ebc4a
7a1991
%post devel
7a1991
%relink_function
786718
7a1991
relink ../../linux-%{kernelrelease}%{variant}-obj/"%cpu_arch_flavor" /usr/src/linux-obj/"%cpu_arch_flavor"
786718
7a1991
%files devel -f kernel-devel.files
7a1991
%dir /usr/src/linux-obj
7a1991
%dir /usr/src/linux-obj/%cpu_arch
7a1991
%ghost /usr/src/linux-obj/%cpu_arch_flavor
7a1991
%exclude %obj_install_dir/%cpu_arch_flavor/Symbols.list
7a1991
%if "%kmp_target_cpu" != "%cpu_arch"
7a1991
%obj_install_dir/%kmp_target_cpu
7a1991
/usr/src/linux-obj/%kmp_target_cpu
7a1991
%endif
786718
7a1991
%if "%livepatch" != "" && "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y" && (("%variant" == "" && %build_default) || ("%variant" == "-rt" && 0%livepatch_rt))
7a1991
%if "%livepatch" == "kgraft"
7a1991
%define patch_package %{livepatch}-patch
7a1991
%else
7a1991
%define patch_package kernel-%{livepatch}
7a1991
%endif
7a1991
%package %{livepatch}
7a1991
Summary:        Metapackage to pull in matching %patch_package package
7a1991
Group:          System/Kernel
7a1991
Requires:       %{patch_package}-%(echo %{version}-%{source_rel} | sed 'y/\./_/')-%{build_flavor}
7a1991
Provides:       multiversion(kernel)
7a1991
%if "%variant" != "-rt"
7a1991
Provides:	kernel-default-kgraft = %version
7a1991
Provides:	kernel-xen-kgraft = %version
7a1991
%if "%livepatch" != "kgraft"
7a1991
Obsoletes:	kernel-default-kgraft < %version
7a1991
Obsoletes:	kernel-xen-kgraft < %version
7a1991
%endif
7a1991
%endif
Bernhard M. Wiedemann 6ebc4a
7a1991
%description %{livepatch}
7a1991
This is a metapackage that pulls in the matching %patch_package package for a
7a1991
given kernel version. The advantage of the metapackage is that its name is
7a1991
static, unlike the %{patch_package}-<kernel-version>-flavor package names.
Bernhard M. Wiedemann 6ebc4a
7a1991
%files %{livepatch}
7a1991
# rpmlint complains about empty packages, so lets own something
7a1991
%dir %modules_dir
32c425
%endif
Bernhard M. Wiedemann 6ebc4a
7a1991
%if 0%{?klp_symbols} && "%livepatch" != ""
7a1991
%package %{livepatch}-devel
7a1991
Summary:	Kernel symbols file used during kGraft patch development
7a1991
Group:		System/Kernel
7a1991
Provides:	klp-symbols = %version
Bernhard M. Wiedemann 6ebc4a
7a1991
%description %{livepatch}-devel
7a1991
This package brings a file named Symbols.list, which contains a list of all
7a1991
kernel symbols and its respective kernel object . This list is to be used by
7a1991
the klp-convert tool, which helps livepatch developers by enabling automatic
7a1991
symbol resolution.
bd7477
7a1991
%files %{livepatch}-devel -f livepatch-files
bd7477
%endif
Bernhard M. Wiedemann 6ebc4a
7a1991
%if "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y"
7a1991
%package -n cluster-md-kmp-%build_flavor
7a1991
Summary:        Clustering support for MD devices
7a1991
Group:          System/Kernel
7a1991
Requires:       %name = %version-%source_rel
7a1991
Provides:       cluster-md-kmp = %version-%source_rel
7a1991
Provides:       multiversion(kernel)
7a1991
# tell weak-modules2 to ignore this package
7a1991
Provides:       kmp_in_kernel
7a1991
Requires(post): suse-module-tools >= 12.4
7a1991
%if %build_default
7a1991
%if "%CONFIG_PREEMPT_DYNAMIC" == "y"
7a1991
Provides:       cluster-md-kmp-preempt = %version-%release
Bernhard M. Wiedemann 6ebc4a
%endif
Bernhard M. Wiedemann 6ebc4a
%endif
7a1991
Enhances:	%name
7a1991
Supplements:	packageand(%name:cluster-md-kmp-%build_flavor)
7a1991
Requires:       dlm-kmp-%build_flavor = %version-%release
Bernhard M. Wiedemann 6ebc4a
7a1991
%description -n cluster-md-kmp-%build_flavor
7a1991
Clustering support for MD devices. This enables locking and
7a1991
synchronization across multiple systems on the cluster, so all
7a1991
nodes in the cluster can access the MD devices simultaneously.
Bernhard M. Wiedemann 6ebc4a
7a1991
%pre -n cluster-md-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-pre --name "cluster-md-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
7a1991
7a1991
%post -n cluster-md-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-post --name "cluster-md-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
7a1991
7a1991
%preun -n cluster-md-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-preun --name "cluster-md-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
7a1991
7a1991
%postun -n cluster-md-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-postun --name "cluster-md-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
7a1991
7a1991
%posttrans -n cluster-md-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-posttrans --name "cluster-md-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
7a1991
%files -n cluster-md-kmp-%build_flavor -f cluster-md-kmp.files
6a054f
7a1991
%package -n dlm-kmp-%build_flavor
7a1991
Summary:        DLM kernel modules
7a1991
Group:          System/Kernel
7a1991
Requires:       %name = %version-%source_rel
7a1991
Provides:       dlm-kmp = %version-%source_rel
7a1991
Provides:       multiversion(kernel)
7a1991
# tell weak-modules2 to ignore this package
7a1991
Provides:       kmp_in_kernel
7a1991
Requires(post): suse-module-tools >= 12.4
7a1991
%if %build_default
7a1991
%if "%CONFIG_PREEMPT_DYNAMIC" == "y"
7a1991
Provides:       dlm-kmp-preempt = %version-%release
6a054f
%endif
6a054f
%endif
7a1991
Enhances:	%name
7a1991
Supplements:	packageand(%name:dlm-kmp-%build_flavor)
6a054f
7a1991
%description -n dlm-kmp-%build_flavor
7a1991
DLM stands for Distributed Lock Manager, a means to synchronize access to
7a1991
shared resources over the cluster.
6a054f
7a1991
%pre -n dlm-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-pre --name "dlm-kmp-%build_flavor" \
6a054f
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
6a054f
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
6a054f
7a1991
%post -n dlm-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-post --name "dlm-kmp-%build_flavor" \
6a054f
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
6a054f
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
6a054f
7a1991
%preun -n dlm-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-preun --name "dlm-kmp-%build_flavor" \
6a054f
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
6a054f
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
6a054f
7a1991
%postun -n dlm-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-postun --name "dlm-kmp-%build_flavor" \
6a054f
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
6a054f
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
6a054f
7a1991
%posttrans -n dlm-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-posttrans --name "dlm-kmp-%build_flavor" \
6a054f
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
6a054f
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
6a054f
7a1991
%files -n dlm-kmp-%build_flavor -f dlm-kmp.files
6a054f
7a1991
%package -n gfs2-kmp-%build_flavor
7a1991
Summary:        GFS2 kernel modules
Bernhard M. Wiedemann 6ebc4a
Group:          System/Kernel
7a1991
Requires:       %name = %version-%source_rel
7a1991
Provides:       gfs2-kmp = %version-%source_rel
Bernhard M. Wiedemann 6ebc4a
Provides:       multiversion(kernel)
7a1991
# tell weak-modules2 to ignore this package
7a1991
Provides:       kmp_in_kernel
7a1991
Requires(post): suse-module-tools >= 12.4
df302c
%if %build_default
df302c
%if "%CONFIG_PREEMPT_DYNAMIC" == "y"
7a1991
Provides:       gfs2-kmp-preempt = %version-%release
df302c
%endif
df302c
%endif
7a1991
Enhances:	%name
7a1991
Supplements:	packageand(%name:gfs2-kmp-%build_flavor)
7a1991
Requires:       dlm-kmp-%build_flavor = %version-%release
Bernhard M. Wiedemann 6ebc4a
7a1991
%description -n gfs2-kmp-%build_flavor
7a1991
GFS2 is Global Filesystem, a shared device filesystem.
Bernhard M. Wiedemann 6ebc4a
7a1991
%pre -n gfs2-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-pre --name "gfs2-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
ab3bb5
7a1991
%post -n gfs2-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-post --name "gfs2-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
7a1991
%preun -n gfs2-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-preun --name "gfs2-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
7a1991
%postun -n gfs2-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-postun --name "gfs2-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
7a4f11
7a1991
%posttrans -n gfs2-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-posttrans --name "gfs2-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
7a1991
%files -n gfs2-kmp-%build_flavor -f gfs2-kmp.files
Bernhard M. Wiedemann 6ebc4a
7a1991
%package -n kselftests-kmp-%build_flavor
7a1991
Summary:        Kernel sefltests
bd7477
Group:          System/Kernel
7a1991
Requires:       %name = %version-%source_rel
7a1991
Provides:       kselftests-kmp = %version-%source_rel
bd7477
Provides:       multiversion(kernel)
7a1991
# tell weak-modules2 to ignore this package
7a1991
Provides:       kmp_in_kernel
7a1991
Requires(post): suse-module-tools >= 12.4
df302c
%if %build_default
df302c
%if "%CONFIG_PREEMPT_DYNAMIC" == "y"
7a1991
Provides:       kselftests-kmp-preempt = %version-%release
df302c
%endif
df302c
%endif
7a1991
Enhances:	%name
7a1991
Supplements:	packageand(%name:kselftests-kmp-%build_flavor)
bd7477
7a1991
%description -n kselftests-kmp-%build_flavor
7a1991
This package contains kernel modules which are part of the upstream kernel
7a1991
selftest effort. kselftest is the name of the upstream kernel target to build
7a1991
and run all selftests. You can also run each test individually from the
7a1991
respective upstream tools/testing/selftests/ directory, this package is
7a1991
intended to be used using individial upstream selftest scripts given only
7a1991
select supported selftest drivers are enabled.
bd7477
7a1991
It should always be possible to always run the latest linux-next version of the
7a1991
selftest scripts and tests against any older kernel selftest driver.  Certain
7a1991
tests facilities may be backported onto older kernels to enable further
7a1991
testing.
bd7477
7a1991
Selftests also provide for a vehicle or proof of concept issues to be
7a1991
reproduced, verified and corrected.
bd7477
7a1991
Selftest drivers are intended to be supported only in testing and QA
7a1991
environments, they are not intended to be run on production systems.
bd7477
7a1991
%pre -n kselftests-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-pre --name "kselftests-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
ab3bb5
7a1991
%post -n kselftests-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-post --name "kselftests-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
2eeb6a
7a1991
%preun -n kselftests-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-preun --name "kselftests-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
2eeb6a
7a1991
%postun -n kselftests-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-postun --name "kselftests-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
7a4f11
7a1991
%posttrans -n kselftests-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-posttrans --name "kselftests-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
bd7477
7a1991
%files -n kselftests-kmp-%build_flavor -f kselftests-kmp.files
bd7477
7a1991
%package -n ocfs2-kmp-%build_flavor
7a1991
Summary:        OCFS2 kernel modules
Bernhard M. Wiedemann 6ebc4a
Group:          System/Kernel
Bernhard M. Wiedemann 6ebc4a
Requires:       %name = %version-%source_rel
7a1991
Provides:       ocfs2-kmp = %version-%source_rel
Bernhard M. Wiedemann 6ebc4a
Provides:       multiversion(kernel)
Bernhard M. Wiedemann 6ebc4a
# tell weak-modules2 to ignore this package
Bernhard M. Wiedemann 6ebc4a
Provides:       kmp_in_kernel
Bernhard M. Wiedemann 6ebc4a
Requires(post): suse-module-tools >= 12.4
df302c
%if %build_default
df302c
%if "%CONFIG_PREEMPT_DYNAMIC" == "y"
7a1991
Provides:       ocfs2-kmp-preempt = %version-%release
df302c
%endif
df302c
%endif
026f08
Enhances:	%name
7a1991
Supplements:	packageand(%name:ocfs2-kmp-%build_flavor)
Bernhard M. Wiedemann 6ebc4a
Requires:       dlm-kmp-%build_flavor = %version-%release
Bernhard M. Wiedemann 6ebc4a
7a1991
%description -n ocfs2-kmp-%build_flavor
7a1991
OCFS2 is the Oracle Cluster Filesystem, a filesystem for shared devices
7a1991
accessible simultaneously from multiple nodes of a cluster.
Bernhard M. Wiedemann 6ebc4a
7a1991
%pre -n ocfs2-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-pre --name "ocfs2-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
ab3bb5
7a1991
%post -n ocfs2-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-post --name "ocfs2-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
7a1991
%preun -n ocfs2-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-preun --name "ocfs2-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
7a1991
%postun -n ocfs2-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-postun --name "ocfs2-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
7a4f11
7a1991
%posttrans -n ocfs2-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-posttrans --name "ocfs2-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
7a1991
%files -n ocfs2-kmp-%build_flavor -f ocfs2-kmp.files
Bernhard M. Wiedemann 6ebc4a
7a1991
%package -n reiserfs-kmp-%build_flavor
7a1991
Summary:        Reiserfs kernel module
Bernhard M. Wiedemann 6ebc4a
Group:          System/Kernel
Bernhard M. Wiedemann 6ebc4a
Requires:       %name = %version-%source_rel
7a1991
Provides:       reiserfs-kmp = %version-%source_rel
Bernhard M. Wiedemann 6ebc4a
Provides:       multiversion(kernel)
Bernhard M. Wiedemann 6ebc4a
# tell weak-modules2 to ignore this package
Bernhard M. Wiedemann 6ebc4a
Provides:       kmp_in_kernel
Bernhard M. Wiedemann 6ebc4a
Requires(post): suse-module-tools >= 12.4
df302c
%if %build_default
df302c
%if "%CONFIG_PREEMPT_DYNAMIC" == "y"
7a1991
Provides:       reiserfs-kmp-preempt = %version-%release
df302c
%endif
df302c
%endif
026f08
Enhances:	%name
7a1991
Supplements:	packageand(%name:reiserfs-kmp-%build_flavor)
Bernhard M. Wiedemann 6ebc4a
7a1991
%description -n reiserfs-kmp-%build_flavor
7a1991
The reiserfs file system is no longer supported in SLE15.  This package
7a1991
provides the reiserfs module for the installation system.
Bernhard M. Wiedemann 6ebc4a
7a1991
%pre -n reiserfs-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-pre --name "reiserfs-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
ab3bb5
7a1991
%post -n reiserfs-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-post --name "reiserfs-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
7a1991
%preun -n reiserfs-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-preun --name "reiserfs-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
7a1991
%postun -n reiserfs-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-postun --name "reiserfs-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
7a4f11
7a1991
%posttrans -n reiserfs-kmp-%build_flavor
7a1991
%run_if_exists /usr/lib/module-init-tools/kernel-scriptlets/inkmp-posttrans --name "reiserfs-kmp-%build_flavor" \
7a4f11
  --version "%version" --release "%release" --kernelrelease "%kernelrelease" \
7a4f11
  --image "%image" --flavor "%build_flavor" --variant "%variant" \
7a1991
  --usrmerged "%{usrmerged}" --certs "%certs" "$@"
Bernhard M. Wiedemann 6ebc4a
7a1991
%files -n reiserfs-kmp-%build_flavor -f reiserfs-kmp.files
Bernhard M. Wiedemann 6ebc4a
7a1991
%endif # %CONFIG_SUSE_KERNEL_SUPPORTED
7a1991
%endif # %CONFIG_MODULES
Bernhard M. Wiedemann 6ebc4a
7a1991
%prep
7a1991
if ! [ -e %{S:0} ]; then
7a1991
    echo "The %name-%version.nosrc.rpm package does not contain the" \
7a1991
	 "complete sources. Please install kernel-source-%version.src.rpm."
7a1991
    exit 1
7a1991
fi
Bernhard M. Wiedemann 6ebc4a
7a1991
SYMBOLS=
7a1991
if test -e %_sourcedir/extra-symbols; then
7a1991
	SYMBOLS=$(cat %_sourcedir/extra-symbols)
7a1991
	echo "extra symbol(s):" $SYMBOLS
7a1991
fi
ab3bb5
7a1991
# Unpack all sources and patches
7a1991
%setup -q -c -T -a 0 -a 100 -a 101 -a 102 -a 103 -a 104 -a 105 -a 106 -a 108 -a 109 -a 110 -a 111 -a 113 -a 114 -a 120 -a 121
Bernhard M. Wiedemann 6ebc4a
7a1991
mkdir -p %kernel_build_dir
Bernhard M. Wiedemann 6ebc4a
7a1991
# Generate a list of modules with their support status marking
7a1991
# The first marker is supposed to be either "+external", "-" or "-!optional",
7a1991
# where "+external" is for an externally supported module, "-" is for an
7a1991
# unsuppored module, "-!optional" is for Leap-only unsupported module.
7a1991
# There can be an optional arch-specific second marker with "+arch" (e.g.
7a1991
# +arm64), which enforces the module to be supported on the specific arch.
7a1991
%_sourcedir/guards --list --with-guards <%_sourcedir/supported.conf | \
7a1991
awk '{
7a1991
    t = "";
7a1991
    for (i = 1; i < NF; i++) {
7a1991
	if ($i == "+external") {
7a1991
		t = " external";
7a1991
	} else if ($i == "+'%cpu_arch'") {
7a1991
		t = "";
7a1991
	} else if ($i ~ "^-") {
7a1991
		t = " no";
7a1991
	}
7a1991
    }
7a1991
    print $(NF) t;
7a1991
}' >%kernel_build_dir/Module.supported
7a1991
subpackages=(
7a1991
	base
7a1991
%if "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y"
7a1991
	cluster-md-kmp dlm-kmp gfs2-kmp kselftests-kmp ocfs2-kmp reiserfs-kmp
7a1991
%endif
7a1991
)
7a1991
for package in "${subpackages[@]}"; do
7a1991
	%_sourcedir/guards --default=0 "$package" \
7a1991
		<%_sourcedir/supported.conf | sed 's,.*/,,; s,\.ko$,,' | \
7a1991
		sort -u >%kernel_build_dir/Module."$package"
7a1991
done
7a1991
%if %split_extra && %split_optional
7a1991
# Module.optional is in a special form, containing guard markers for
7a1991
# both extra and optional modules, which is processed by split-modules
7a1991
%_sourcedir/guards --list --with-guards <%_sourcedir/supported.conf | \
7a1991
awk '{
7a1991
    t = "";
7a1991
    for (i = 1; i < NF; i++) {
7a1991
	if ($i == "+'%cpu_arch'") {
7a1991
		t = "";
7a1991
	} else if ($i ~ "^-") {
7a1991
		t = $i
7a1991
	}
7a1991
    }
7a1991
    if (t != "") {print t,$(NF);}
7a1991
}' >%kernel_build_dir/Module.optional
7a1991
%endif
7a1991
7a1991
cd linux-%srcversion
7a1991
7a1991
%_sourcedir/apply-patches \
7a1991
%if %{build_vanilla} && ! %vanilla_only
7a1991
	--vanilla \
7a1991
%endif
7a1991
	%_sourcedir/series.conf .. $SYMBOLS
7a1991
7a1991
cd %kernel_build_dir
7a1991
7a1991
# Override the timestamp 'uname -v' reports with the source timestamp and
7a1991
# the commit hash.
7a1991
date=$(head -n 1 %_sourcedir/source-timestamp)
7a1991
commit=$(sed -n 's/GIT Revision: //p' %_sourcedir/source-timestamp)
7a1991
cat > .kernel-binary.spec.buildenv <
7a1991
export KBUILD_BUILD_TIMESTAMP="$(LANG=C date -d "$date") (${commit:0:7})"
7a1991
export KBUILD_VERBOSE=0
7a1991
export KBUILD_SYMTYPES=1
7a1991
export KBUILD_BUILD_USER=geeko
7a1991
export KBUILD_BUILD_HOST=buildhost
7a1991
export HOST_EXTRACFLAGS="-include %_sourcedir/host-memcpy-hack.h"
7a1991
EOF
7a1991
source .kernel-binary.spec.buildenv
7a1991
7a1991
if [ -f %_sourcedir/localversion ] ; then
7a1991
    cat %_sourcedir/localversion > localversion
7a1991
fi
7a1991
7a1991
config_base="default"
7a1991
%ifarch %ix86
7a1991
config_base="pae"
7a1991
%endif
7a1991
if ! [ -f %my_builddir/config/%cpu_arch/$config_base ] ; then
7a1991
    config_base=%variant
7a1991
    config_base=${config_base#-}
7a1991
fi
7a1991
if ! grep -q CONFIG_MMU= "%my_builddir/config/%cpu_arch_flavor"; then
7a1991
cp "%my_builddir/config/%cpu_arch/$config_base" .config
7a1991
../scripts/kconfig/merge_config.sh -m .config \
7a1991
                                   %my_builddir/config/%cpu_arch_flavor
7a1991
else
7a1991
cp %my_builddir/config/%cpu_arch_flavor .config
7a1991
fi
7a1991
if test -e %my_builddir/config.addon/%cpu_arch_flavor; then
7a1991
	# FIXME: config.addon doesn't affect the %CONFIG_ macros defined at
7a1991
	# the top of the specfile
7a1991
	../scripts/kconfig/merge_config.sh -m .config %my_builddir/config.addon/%cpu_arch_flavor
7a1991
fi
7a1991
7a1991
CONFIG_SUSE_KERNEL_RELEASED="--disable CONFIG_SUSE_KERNEL_RELEASED"
7a1991
%if 0%{?_project:1}
7a1991
if echo %_project | grep -Eqx -f %_sourcedir/release-projects; then
7a1991
	CONFIG_SUSE_KERNEL_RELEASED="--enable CONFIG_SUSE_KERNEL_RELEASED"
7a1991
fi
7a1991
%endif
7a1991
7a1991
DEBUG_INFO_TYPE="$(grep "CONFIG_DEBUG_INFO_DWARF.*=y" .config)"
7a1991
DEBUG_INFO_TYPE="${DEBUG_INFO_TYPE%%=y}"
7a1991
DEBUG_INFO_TYPE="${DEBUG_INFO_TYPE##CONFIG_DEBUG_INFO_}"
7a1991
echo "Kernel debuginfo type: ${DEBUG_INFO_TYPE}"
7a1991
7a1991
../scripts/config \
7a1991
	--set-str CONFIG_LOCALVERSION -%source_rel-%build_flavor \
7a1991
	--enable  CONFIG_SUSE_KERNEL \
7a1991
	$CONFIG_SUSE_KERNEL_RELEASED \
7a1991
%if 0%{?__debug_package:1}
7a1991
	--enable  CONFIG_DEBUG_INFO
7a1991
%else
7a1991
	--disable CONFIG_DEBUG_INFO \
7a1991
	--disable CONFIG_DEBUG_INFO_"${DEBUG_INFO_TYPE}" \
7a1991
	--enable  CONFIG_DEBUG_INFO_NONE
7a1991
%endif
7a1991
7a1991
if [ %CONFIG_MODULE_SIG = "y" ]; then
7a1991
	if [ -n "%certs" ] ; then
7a1991
		ln -s %_sourcedir/.kernel_signing_key.pem .
7a1991
	else
7a1991
		if ! [ -f .kernel.genkey ] ; then
7a1991
			cat > .kernel.genkey <
7a1991
[ req ]
7a1991
default_bits = 4096
7a1991
distinguished_name = req_distinguished_name
7a1991
prompt = no
7a1991
string_mask = utf8only
7a1991
x509_extensions = myexts
7a1991
7a1991
[ req_distinguished_name ]
7a1991
CN = Build time autogenerated kernel key
7a1991
7a1991
[ myexts ]
7a1991
basicConstraints=critical,CA:FALSE
7a1991
keyUsage=digitalSignature
7a1991
subjectKeyIdentifier=hash
7a1991
authorityKeyIdentifier=keyid
7a1991
extendedKeyUsage=codeSigning
7a1991
EOF
7a1991
		fi
7a1991
		openssl req -new -nodes -utf8 -%CONFIG_MODULE_SIG_HASH -days 36500 \
7a1991
			-batch -x509 -config .kernel.genkey \
7a1991
			-outform PEM -out .kernel_signing_key.pem \
7a1991
			-keyout .kernel_signing_key.pem
7a1991
	fi
7a1991
	../scripts/config --set-str CONFIG_MODULE_SIG_KEY ".kernel_signing_key.pem"
7a1991
fi
7a1991
7a1991
case %cpu_arch in
7a1991
    x86_64 | i386)
7a1991
        MAKE_ARGS="$MAKE_ARGS ARCH=x86"
7a1991
        ;;
7a1991
    ppc*)
7a1991
        MAKE_ARGS="$MAKE_ARGS ARCH=powerpc"
7a1991
        ;;
7a1991
    s390x)
7a1991
        MAKE_ARGS="$MAKE_ARGS ARCH=s390"
7a1991
        ;;
7a1991
    arm64)
7a1991
        MAKE_ARGS="$MAKE_ARGS ARCH=arm64"
7a1991
        ;;
7a1991
    armv*)
7a1991
        MAKE_ARGS="$MAKE_ARGS ARCH=arm"
7a1991
        ;;
7a1991
    riscv*)
7a1991
        MAKE_ARGS="$MAKE_ARGS ARCH=riscv"
7a1991
        ;;
7a1991
    *)
7a1991
        MAKE_ARGS="$MAKE_ARGS ARCH=%cpu_arch"
7a1991
        ;;
7a1991
esac
7a1991
7a1991
makeoutputsync=
7a1991
if make --output-sync --help >/dev/null 2>&1 ; then
7a1991
        makeoutputsync=--output-sync
7a1991
else
7a1991
        echo make does not support --output-sync flag. Build messages may be mangled. 1>&2
7a1991
fi
7a1991
MAKE_ARGS="$MAKE_ARGS $makeoutputsync %{?_smp_mflags}"
7a1991
echo export MAKE_ARGS=\""$MAKE_ARGS"\" >> .kernel-binary.spec.buildenv
7a1991
7a1991
KERN_DIRS="-C .. O=$PWD"
7a1991
if test -e %_sourcedir/TOLERATE-UNKNOWN-NEW-CONFIG-OPTIONS; then
7a1991
    yes '' | make oldconfig $MAKE_ARGS $KERN_DIRS
7a1991
else
7a1991
    cp .config .config.orig
7a1991
    if test -f ../scripts/kconfig/Makefile && \
7a1991
       grep -q syncconfig ../scripts/kconfig/Makefile; then
7a1991
        syncconfig="syncconfig"
7a1991
    else
7a1991
        syncconfig="silentoldconfig"
7a1991
    fi
7a1991
    make $syncconfig $MAKE_ARGS $KERN_DIRS < /dev/null
7a1991
    %_sourcedir/check-for-config-changes .config.orig .config
7a1991
    rm .config.orig
7a1991
fi
7a1991
7a1991
make prepare $MAKE_ARGS
7a1991
make scripts $MAKE_ARGS
7a1991
krel=$(make -s kernelrelease $MAKE_ARGS)
7a1991
7a1991
if [ "$krel" != "%kernelrelease-%build_flavor" ]; then
7a1991
    echo "Kernel release mismatch: $krel != %kernelrelease-%build_flavor" >&2
7a1991
    exit 1
7a1991
fi
7a1991
7a1991
make clean $MAKE_ARGS
7a1991
7a1991
rm -f source
7a1991
find . ! -type d ! -name 'Module.base' ! -name 'Module.*-kmp' ! -name 'Module.optional' -printf '%%P\n' \
7a1991
	> %my_builddir/obj-files
7a1991
7a1991
%build
7a1991
cd %kernel_build_dir
7a1991
source .kernel-binary.spec.buildenv
7a1991
7a1991
# create *.symref files in the tree
7a1991
if test -e %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor; then
7a1991
    %_sourcedir/modversions --unpack . < $_
7a1991
fi
7a1991
7a1991
%if "%CONFIG_KMSG_IDS" == "y"
7a1991
    chmod +x ../scripts/kmsg-doc
7a1991
    MAKE_ARGS="$MAKE_ARGS D=2"
7a1991
%endif
7a1991
7a1991
mkdir -p %_topdir/OTHER
7a1991
log=%_topdir/OTHER/make-stderr.log
7a1991
while true; do
7a1991
    make all $MAKE_ARGS 2> >(tee "$log")
7a1991
    if test "${PIPESTATUS[0]}" -eq 0; then
7a1991
        break
7a1991
    fi
7a1991
    # In the linux-next and vanilla branches, we try harder to build a
7a1991
    # package.
7a1991
    if test 0%vanilla_only -gt 0 &&
7a1991
			%_sourcedir/try-disable-staging-driver "$log"; then
7a1991
        echo "Retrying make"
7a1991
    else
7a1991
        exit 1
7a1991
    fi
7a1991
done
7a1991
7a1991
# Generate list of symbols that are used to create kernel livepatches
7a1991
%if 0%{?klp_symbols}
7a1991
	%_sourcedir/klp-symbols . Symbols.list
7a1991
%endif
7a1991
7a1991
%install
7a1991
7a1991
# get rid of /usr/lib/rpm/brp-strip-debug
7a1991
# strip removes too much from the vmlinux ELF binary
7a1991
export NO_BRP_STRIP_DEBUG=true
7a1991
export STRIP_KEEP_SYMTAB='*/vmlinux*'
7a1991
7a1991
# %kernel_module_directory/%kernelrelease-%build_flavor/source points to the source
7a1991
# directory installed by kernel-devel. The kernel-%build_flavor-devel package
7a1991
# has a correct dependency on kernel-devel, but the brp check does not see
7a1991
# kernel-devel during build.
7a1991
export NO_BRP_STALE_LINK_ERROR=yes
7a1991
7a1991
cd %kernel_build_dir
7a1991
source .kernel-binary.spec.buildenv
7a1991
7a1991
mkdir -p %buildroot/boot
7a1991
# (Could strip out non-public symbols.)
7a1991
cp -p System.map %buildroot/boot/System.map-%kernelrelease-%build_flavor
7a1991
7a1991
add_vmlinux()
7a1991
{
7a1991
    local vmlinux=boot/vmlinux-%kernelrelease-%build_flavor
7a1991
7a1991
    cp vmlinux %buildroot/$vmlinux
7a1991
    # make sure that find-debuginfo.sh picks it up. In the filelist, we
7a1991
    # mark the file 0644 again
7a1991
    chmod +x %buildroot/$vmlinux
7a1991
    if test $1 == "--compressed"; then
7a1991
        # avoid using the gzip -n option to make kdump happy (bnc#880848#c20)
7a1991
        ts="$(head -n1 %_sourcedir/source-timestamp)"
7a1991
        touch -d "$ts" %buildroot/$vmlinux
7a1991
        touch %buildroot/$vmlinux.%{compress_vmlinux}
7a1991
%if 0%{?__debug_package:1}
7a1991
        # compress the vmlinux image after find-debuginfo.sh has processed it
7a1991
%global __debug_install_post %__debug_install_post \
7a1991
%_sourcedir/compress-vmlinux.sh %buildroot/boot/vmlinux-%kernelrelease-%build_flavor
7a1991
%else
7a1991
        %_sourcedir/compress-vmlinux.sh %buildroot/$vmlinux
7a1991
%endif
7a1991
        ghost_vmlinux=true
7a1991
    else
7a1991
        ghost_vmlinux=false
7a1991
    fi
7a1991
}
7a1991
7a1991
# architecture specifics
7a1991
%ifarch %ix86 x86_64
7a1991
    add_vmlinux --compressed
7a1991
    cp -p arch/x86/boot/bzImage %buildroot/boot/%image-%kernelrelease-%build_flavor
7a1991
%endif
7a1991
%ifarch ppc ppc64 ppc64le
7a1991
    add_vmlinux
7a1991
%endif
7a1991
%ifarch s390 s390x
7a1991
    add_vmlinux --compressed
7a1991
    image=image
7a1991
    if test ! -f arch/s390/boot/$image; then
7a1991
        image=bzImage
7a1991
    fi
7a1991
    cp -p arch/s390/boot/$image %buildroot/boot/%image-%kernelrelease-%build_flavor
7a1991
%if "%CONFIG_KMSG_IDS" == "y"
7a1991
    mkdir -p %buildroot/usr/share/man/man9
7a1991
    find man -name '*.9' -exec install -m 644 -D '{}' %buildroot/usr/share/man/man9/ ';'
7a1991
%endif
7a1991
%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150300
7a1991
    s390x_vmlinux=arch/s390/boot/compressed/vmlinux
7a1991
    if [ ! -f "$s390x_vmlinux" ]; then
7a1991
        s390x_vmlinux=arch/s390/boot/vmlinux
7a1991
    fi
7a1991
    objcopy -R .rodata.compressed "$s390x_vmlinux" %buildroot/boot/zdebug-%kernelrelease-%build_flavor
7a1991
%endif
7a1991
%endif
7a1991
%ifarch %arm
7a1991
    add_vmlinux --compressed
7a1991
    cp -p arch/arm/boot/%image %buildroot/boot/%image-%kernelrelease-%build_flavor
7a1991
%endif
7a1991
%ifarch aarch64
7a1991
    add_vmlinux --compressed
7a1991
    cp -p arch/arm64/boot/%image %buildroot/boot/%image-%kernelrelease-%build_flavor
7a1991
%endif
7a1991
%ifarch riscv64
7a1991
    add_vmlinux --compressed
7a1991
    cp -p arch/riscv/boot/%image %buildroot/boot/%image-%kernelrelease-%build_flavor
7a1991
%endif
7a1991
7a1991
# sign the modules, firmware and possibly the kernel in the buildservice
7a1991
BRP_PESIGN_FILES=""
7a1991
%if "%CONFIG_EFI_STUB" == "y"
7a1991
%if %{usrmerged}
7a1991
BRP_PESIGN_FILES="%modules_dir/%image"
7a1991
%else
7a1991
BRP_PESIGN_FILES="/boot/%image-%kernelrelease-%build_flavor"
7a1991
%endif
7a1991
%endif
7a1991
%if ! %sb_efi_only
7a1991
%ifarch s390x ppc64 ppc64le
7a1991
%if %{usrmerged}
7a1991
BRP_PESIGN_FILES="%modules_dir/%image"
7a1991
%else
7a1991
BRP_PESIGN_FILES="/boot/%image-%kernelrelease-%build_flavor"
7a1991
%endif
7a1991
%endif
7a1991
%endif
7a1991
%if "%CONFIG_MODULE_SIG" == "y"
7a1991
BRP_PESIGN_FILES="$BRP_PESIGN_FILES *.ko"
7a1991
%endif
7a1991
%ifarch %ix86
7a1991
# XXX: do not sign on x86, as the repackaging changes kernel-pae
7a1991
# from i686 to i586
7a1991
BRP_PESIGN_FILES=""
7a1991
%endif
7a1991
export BRP_PESIGN_FILES
7a1991
%if "%{compress_modules}" != "none"
7a1991
export BRP_PESIGN_COMPRESS_MODULE=%{compress_modules}
7a1991
%endif
7a1991
# Do not sign vanilla kernels released in official projects
7a1991
%if %build_vanilla && ! %vanilla_only
7a1991
BRP_PESIGN_FILES=""
7a1991
%endif
7a4f11
7a1991
if test -x /usr/lib/rpm/pesign/gen-hmac; then
7a1991
	$_ -r %buildroot /boot/%image-%kernelrelease-%build_flavor
7a1991
fi
Bernhard M. Wiedemann 6ebc4a
7a1991
# Package the compiled-in certificates as DER files in /etc/uefi/certs
7a1991
# and have mokutil enroll them when the kernel is installed
7a1991
echo Signing certificates "%certs"
7a1991
if test %CONFIG_MODULE_SIG = "y" -a -d %_sourcedir/.kernel_signing_certs ; then
7a1991
    for f in %_sourcedir/.kernel_signing_certs/*.crt; do
7a1991
            mkdir -p %buildroot/etc/uefi/certs
7a1991
            cp -v $f %buildroot/etc/uefi/certs
7a1991
    done
7a1991
fi
Bernhard M. Wiedemann 6ebc4a
7a1991
cp -p .config %buildroot/boot/config-%kernelrelease-%build_flavor
7a1991
sysctl_file=%buildroot/boot/sysctl.conf-%kernelrelease-%build_flavor
7a1991
for file in %my_builddir/sysctl/{defaults,%cpu_arch/arch-defaults,%cpu_arch_flavor}; do
7a1991
	if [ -f "$file" ]; then
7a1991
		cat "$file"
7a1991
	fi
7a1991
done | sed '1i # Generated file - do not edit.' >$sysctl_file
7a1991
if [ ! -s $sysctl_file ]; then
7a1991
	rm $sysctl_file
7a1991
fi
7a1991
7a1991
%if %install_vdso
7a1991
# Install the unstripped vdso's that are linked in the kernel image
7a1991
make vdso_install $MAKE_ARGS INSTALL_MOD_PATH=%buildroot
7a1991
rm -rf %buildroot%kernel_module_directory/%kernelrelease-%build_flavor/vdso/.build-id
df302c
%endif
7a1991
7a1991
# Create a dummy initrd with roughly the size the real one will have.
7a1991
# That way, YaST will know that this package requires some additional
7a1991
# space in /boot.
7a1991
dd if=/dev/zero of=%buildroot/boot/initrd-%kernelrelease-%build_flavor \
7a1991
	bs=1024 seek=2047 count=1
7a1991
# Also reserve some space for the kdump initrd
7a1991
cp %buildroot/boot/initrd-%kernelrelease-%build_flavor{,-kdump}
7a1991
%if 0%{?suse_version} >= 1500
7a1991
# Use same permissions as dracut
7a1991
chmod 0600 %buildroot/boot/initrd-%kernelrelease-%build_flavor{,-kdump}
df302c
%endif
Bernhard M. Wiedemann 6ebc4a
7a1991
if [ %CONFIG_MODULES = y ]; then
7a1991
    mkdir -p %rpm_install_dir/%cpu_arch_flavor
7a1991
    mkdir -p %buildroot/usr/src/linux-obj/%cpu_arch
7a1991
    install -m 755 -D -t %rpm_install_dir/%cpu_arch_flavor/scripts/mod/ scripts/mod/ksym-provides
Bernhard M. Wiedemann 6ebc4a
7a1991
    gzip -n -c9 < Module.symvers > %buildroot/boot/symvers-%kernelrelease-%build_flavor.gz
Bernhard M. Wiedemann 6ebc4a
7a1991
    make modules_install $MAKE_ARGS INSTALL_MOD_PATH=%buildroot
Bernhard M. Wiedemann 6ebc4a
7a1991
%ifarch s390 s390x
7a1991
    expoline=arch/s390/lib/expoline/expoline.o
7a1991
    if test -f arch/s390/lib/expoline/expoline.o ; then
7a1991
	install -m 644 -D -t %rpm_install_dir/%cpu_arch_flavor/$(dirname $expoline) $expoline
7a1991
    fi
7a1991
%endif
Bernhard M. Wiedemann 6ebc4a
7a1991
    # Also put the resulting file in %rpm_install_dir/%cpu_arch/%build_flavor
7a1991
    # so that kernel-devel + kernel-%build_flavor is sufficient for building
7a1991
    # modules that have modversions as well.
7a1991
    mkdir -p %rpm_install_dir/%cpu_arch/%build_flavor
7a1991
    cp Module.symvers %rpm_install_dir/%cpu_arch/%build_flavor
ab3bb5
7a1991
    # List of symbols that are used to generate kernel livepatches
7a1991
    %if 0%{?klp_symbols}
7a1991
        cp Symbols.list %rpm_install_dir/%cpu_arch/%build_flavor
7a1991
        echo %obj_install_dir/%cpu_arch/%build_flavor/Symbols.list > %my_builddir/livepatch-files.no_dir
Bernhard M. Wiedemann 6ebc4a
7a1991
        %if "%CONFIG_LIVEPATCH_IPA_CLONES" == "y"
7a1991
            find %kernel_build_dir -name "*.ipa-clones" ! -size 0 | sed -e 's|^%kernel_build_dir/||' | sort > ipa-clones.list
7a1991
            cp ipa-clones.list %rpm_install_dir/%cpu_arch/%build_flavor
7a1991
            echo %obj_install_dir/%cpu_arch/%build_flavor/ipa-clones.list >> %my_builddir/livepatch-files.no_dir
7a1991
            tar -C %kernel_build_dir \
7a1991
%if ! 0%{?suse_version} || 0%{?suse_version} >= 1500
7a1991
		    --verbatim-files-from \
7a1991
%endif
7a1991
		    -T ipa-clones.list -cf- | tar -C %rpm_install_dir/%cpu_arch/%build_flavor -xvf-
7a1991
            cat ipa-clones.list | sed -e 's|^|%obj_install_dir/%cpu_arch/%build_flavor/|' >> %my_builddir/livepatch-files.no_dir
7a1991
        %endif
7a1991
    %endif
Bernhard M. Wiedemann 6ebc4a
7a1991
    # Table of types used in exported symbols (for modversion debugging).
7a1991
    %_sourcedir/modversions --pack . > %buildroot/boot/symtypes-%kernelrelease-%build_flavor
7a1991
    if [ -s %buildroot/boot/symtypes-%kernelrelease-%build_flavor ]; then
7a1991
	gzip -n -9 %buildroot/boot/symtypes-%kernelrelease-%build_flavor
7a1991
    else
7a1991
	rm -f %buildroot/boot/symtypes-%kernelrelease-%build_flavor
7a1991
    fi
7a4f11
7a1991
    # Some architecture's $(uname -m) output is different from the ARCH
7a1991
    # parameter that needs to be passed to kbuild. Create symlinks from
7a1991
    # $(uname -m) to the ARCH directory.
7a1991
    if [ ! -e %rpm_install_dir/%kmp_target_cpu ]; then
7a1991
        ln -sf %cpu_arch %rpm_install_dir/%kmp_target_cpu
7a1991
        ln -sf %cpu_arch %buildroot/usr/src/linux-obj/%kmp_target_cpu
7a1991
    fi
Bernhard M. Wiedemann 6ebc4a
7a1991
    # We were building in %my_builddir/linux-%srcversion, but the sources will
7a1991
    # later be installed in /usr/src/linux-%srcversion-%source_rel. Fix up the
7a1991
    # build symlink.
7a1991
    rm -f %buildroot%kernel_module_directory/%kernelrelease-%build_flavor/{source,build}
7a1991
    ln -s %src_install_dir \
7a1991
	%buildroot%kernel_module_directory/%kernelrelease-%build_flavor/source
7a1991
    ln -s %obj_install_dir/%cpu_arch/%build_flavor \
7a1991
	%buildroot%kernel_module_directory/%kernelrelease-%build_flavor/build
Bernhard M. Wiedemann 6ebc4a
7a1991
    # Abort if there are any undefined symbols
7a1991
    msg="$(/sbin/depmod -F %buildroot/boot/System.map-%kernelrelease-%build_flavor \
7a1991
			-b %buildroot -ae %kernelrelease-%build_flavor 2>&1)"
7a1991
    if [ $? -ne 0 ] || echo "$msg" | grep  'needs unknown symbol'; then
7a1991
	exit 1
7a1991
    fi
7a1991
7a1991
    %_sourcedir/split-modules -d %buildroot \
7a1991
	-o %my_builddir \
7a1991
	-b %kernel_build_dir \
7a1991
%if "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y"
7a1991
	-e \
df302c
%endif
7a1991
%if ! %supported_modules_check
7a1991
	-i \
7a1991
%endif
7a1991
	%nil
7a1991
%if ! %split_extra
7a1991
    cat %my_builddir/unsupported-modules >>%my_builddir/main-modules
df302c
%endif
Bernhard M. Wiedemann 6ebc4a
7a1991
    # The modules.dep file is sorted randomly which produces strange file
7a1991
    # checksums. As the file is not included in the resulting RPM, it's
7a1991
    # pointless to rely on its contents. Replacing by zeros to make the
7a1991
    # checksums always the same for several builds of the same package.
7a1991
    test -s %buildroot%kernel_module_directory/%kernelrelease-%build_flavor/modules.dep && \
7a1991
    dd if=/dev/zero of=%buildroot%kernel_module_directory/%kernelrelease-%build_flavor/modules.dep ibs=$(stat -c%s %buildroot%kernel_module_directory/%kernelrelease-%build_flavor/modules.dep) count=1
7a1991
7a1991
    res=0
7a1991
    if test -e %my_builddir/kabi/%cpu_arch/symvers-%build_flavor; then
7a1991
        # check for kabi changes
7a1991
        %_sourcedir/kabi.pl --rules %my_builddir/kabi/severities \
7a1991
            %my_builddir/kabi/%cpu_arch/symvers-%build_flavor \
7a1991
            Module.symvers || res=$?
7a1991
    fi
7a1991
    if [ $res -ne 0 ]; then
7a1991
	# %ignore_kabi_badness is defined in the Kernel:* projects in the
7a1991
	# OBS to be able to build the KOTD in spite of kabi errors
7a1991
	if [ 0%{?ignore_kabi_badness} -eq 0 -a \
7a1991
	     ! -e %my_builddir/kabi/%cpu_arch/ignore-%build_flavor -a \
7a1991
	     ! -e %_sourcedir/IGNORE-KABI-BADNESS ]; then
7a1991
	    echo "Create a file IGNORE-KABI-BADNESS in the kernel-source" \
7a1991
		 "directory to build this kernel even though its badness is" \
7a1991
		 "higher than allowed for an official kernel."
7a1991
	   exit 1
7a1991
	fi
7a1991
    fi
7a1991
7a1991
    # Check the license in each module
7a1991
    if ! sh %_sourcedir/check-module-license %buildroot; then
7a1991
	echo "Please fix the missing licenses!"
7a1991
%if "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y"
7a1991
	exit 1
7a1991
%endif
7a1991
    fi
7a1991
7a1991
    # These files are required for building external modules
7a1991
    for FILE in arch/powerpc/lib/crtsavres.o arch/arm64/kernel/ftrace-mod.o \
7a1991
		arch/*/kernel/macros.s scripts/module.lds
7a1991
    do
7a1991
	    if [ -f %kernel_build_dir/$FILE ]; then
7a1991
		echo $FILE >> %my_builddir/obj-files
7a1991
	    fi
7a1991
    done
7a1991
7a1991
    tar --exclude=\*.ipa-clones --exclude=.config.old --exclude=.kernel-binary.spec.buildenv \
7a1991
        --exclude=.kernel_signing_key.pem --exclude=.kernel.genkey \
7a1991
        -cf - -T %my_builddir/obj-files | \
7a1991
	tar -xf - -C %rpm_install_dir/%cpu_arch_flavor
7a1991
    # bnc#507084
7a1991
    find %rpm_install_dir/%cpu_arch_flavor/scripts -type f -perm -111 | \
7a1991
        while read f; do
7a1991
            case "$(file -b "$f")" in
7a1991
            ELF\ *\ executable*)
7a1991
                strip "$f"
7a1991
            esac
7a1991
        done
7a1991
7a1991
    # Recreate the generated Makefile with correct path
7a1991
    #
7a1991
    # Linux 5.13 no longer has mkmakefile
7a1991
    if [ -f ../scripts/mkmakefile ] ; then
7a1991
        sh ../scripts/mkmakefile ../../../%{basename:%src_install_dir} \
7a1991
            %rpm_install_dir/%cpu_arch_flavor \
7a1991
            $(echo %srcversion | sed -r 's/^([0-9]+)\.([0-9]+).*/\1 \2/')
7a1991
    else
7a1991
       echo include ../../../%{basename:%src_install_dir}/Makefile > %rpm_install_dir/%cpu_arch_flavor/Makefile
7a1991
    fi
7a1991
fi
7a1991
7a1991
# CONFIG_GDB_SCRIPTS
7a1991
if [ -e vmlinux-gdb.py ]; then
7a1991
    DEST=%rpm_install_dir/%cpu_arch_flavor/
7a1991
    install -m 755 -d "$DEST"
7a1991
    # set sys.path to our devel.rpm scripts
7a1991
    sed 's@\(sys\.path\.insert(0, \).*@\1"%obj_install_dir/%cpu_arch_flavor/scripts/gdb/")@' vmlinux-gdb.py > "$DEST/vmlinux-gdb.py"
Bernhard M. Wiedemann 6ebc4a
7a1991
    DEST=%rpm_install_dir/%cpu_arch_flavor/scripts/gdb/linux
7a1991
    install -m 755 -d "$DEST"
7a1991
    pushd scripts/gdb/linux/
7a1991
    for file in *.py; do
7a1991
	if test -L "$file"; then
7a1991
	    # relink against our devel.rpm sources, not of buildroot's
7a1991
	    ln -s "%src_install_dir/scripts/gdb/linux/$file" "$DEST/$file"
7a1991
	else
7a1991
	    cp -p "$file" "$DEST"
7a1991
	fi
7a1991
    done
7a1991
    popd
ab3bb5
7a1991
    DEST=%{buildroot}%{_datadir}/gdb/auto-load%modules_dir
7a1991
    install -m 755 -d "$DEST"
7a1991
    ln -s %obj_install_dir/%cpu_arch_flavor/vmlinux-gdb.py "$DEST/vmlinux-gdb.py"
7a1991
fi
Bernhard M. Wiedemann 6ebc4a
7a1991
rm -rf %{buildroot}/lib/firmware
Bernhard M. Wiedemann 6ebc4a
7a1991
add_dirs_to_filelist() {
7a1991
    sed -rn '
7a1991
        # print file name
7a1991
        p
7a1991
        # remove filelist macros
7a1991
        s:%%[a-z]+(\([^)]+\))? ?::g
7a1991
        # add %%dir prefix
7a1991
        s:^:%%dir :
7a1991
        # print all parents
7a1991
        :a
7a1991
            # skip directories owned by other packages
7a1991
            s:^%%dir (/boot|/etc|(/usr)?/lib/(modules|firmware)|/usr/share|/usr/src)/[^/]+$::
7a1991
            s:/[^/]+$::p
7a1991
        ta
7a1991
    ' "$@" | sort -u
7a1991
}
7a4f11
7a1991
# Collect the file lists.
7a1991
if [ -f %my_builddir/livepatch-files.no_dir ] ; then
7a1991
    cat %my_builddir/livepatch-files.no_dir | add_dirs_to_filelist > %my_builddir/livepatch-files
7a1991
fi
Bernhard M. Wiedemann 6ebc4a
7a1991
# does not exist for non-modularized kernels
7a1991
%if %{usrmerged}
7a1991
        mkdir -p %{buildroot}%modules_dir
7a1991
%endif
7a1991
shopt -s nullglob dotglob
7a1991
> %my_builddir/kernel-devel.files
7a1991
{
7a1991
    echo "%modules_dir/build"
7a1991
    echo "%modules_dir/source"
7a1991
    cd %buildroot
7a1991
    for file in boot/symtypes*; do
7a1991
%if %{usrmerged}
7a1991
        l="${file##*/}"
7a1991
        l="%modules_dir/${l//-%kernelrelease-%build_flavor}"
7a1991
        mv "$file" "%{buildroot}$l"
7a1991
        ln -s "..$l" $file
7a1991
        echo "$l"
7a1991
        echo "%%ghost /$file"
7a1991
%else
7a1991
        echo "/$file"
7a1991
%endif
7a1991
    done
7a1991
    if test -d .%{_datadir}/gdb/; then
7a1991
	find .%obj_install_dir/%cpu_arch_flavor/scripts/gdb/linux/ -name '*.py' -type l | sed -e 's/^[.]//'
7a1991
	echo "%{_datadir}/gdb/auto-load%modules_dir/vmlinux-gdb.py"
7a1991
    fi
7a1991
} | add_dirs_to_filelist >%my_builddir/kernel-devel.files
7a1991
( cd %buildroot ; find .%obj_install_dir/%cpu_arch_flavor -type f ; ) | \
7a1991
sed -e 's/^[.]//' | grep -v -e '[.]ipa-clones$' -e '/Symbols[.]list$' -e '/ipa-clones[.]list$'| \
7a1991
add_dirs_to_filelist >> %my_builddir/kernel-devel.files
Bernhard M. Wiedemann 6ebc4a
7a1991
{   echo %ghost /boot/%image
7a1991
    echo %ghost /boot/initrd
7a1991
    cd %buildroot
7a1991
    for f in boot/*; do
7a1991
        l="${f##*/}"
7a1991
        l="%modules_dir/${l//-%kernelrelease-%build_flavor}"
7a1991
        if test -L "$f"; then
7a1991
            echo "%%ghost /$f"
7a1991
            continue
7a1991
        elif test ! -f "$f"; then
7a1991
            continue
7a1991
        fi
7a1991
        case "$f" in
7a1991
        boot/initrd-*)
7a1991
            echo "%%ghost /$f"
7a1991
            continue
7a1991
            ;;
7a1991
        boot/vmlinux-*.%{compress_vmlinux})
7a1991
            ;;
7a1991
        boot/vmlinux-*)
7a1991
            if $ghost_vmlinux; then
7a1991
                # fall through to mark next echo as %ghost
7a1991
                echo -n "%%ghost "
7a1991
            fi
7a1991
            ;;
7a1991
%if %{usrmerged}
7a1991
        boot/vmlinuz-*)
7a1991
            echo -n "%%attr(0644, root, root) "
7a1991
            ;;
df302c
%endif
7a1991
        boot/symtypes*)
7a1991
%if %{usrmerged}
7a1991
            echo "%exclude $l"
df302c
%endif
7a1991
            continue
7a1991
            ;;
7a1991
        esac
7a1991
%if %{usrmerged}
7a1991
        mv "$f" "./$l"
7a1991
        ln -s "..$l" $f
7a1991
        # the find in the CONFIG_MODULES condition below also finds the files
7a1991
        # but there's sort -u later, so this is ok
7a1991
        echo "$l" # note: must be first after case statement above
7a1991
        echo "%%ghost /$f"
7a1991
%else
7a1991
        echo "%%attr(0644, root, root) /$f"
7a1991
%endif
7a1991
    done
Bernhard M. Wiedemann 86a379
7a1991
    if [ %CONFIG_MODULES = y ]; then
7a1991
	MODULES=%{lua: print(rpm.expand('%kernel_module_directory'):sub(2))}/%kernelrelease-%build_flavor
7a1991
	find "$MODULES" \
7a1991
%if 0%{?separate_vdso}
7a1991
	    -path "$MODULES/vdso" -prune -o \
7a1991
%endif
7a1991
	    -type d -o \
7a1991
	    \( -path '*/modules.*' ! -path '*/modules.order' \
7a1991
	     ! -path '*/modules.builtin' \
7a1991
	     ! -path '*/modules.builtin.modinfo' \) -printf '%%%%ghost /%%p\n' \
7a1991
	       -o -name '*.ko' -prune \
7a1991
	       -o \( -type f \
7a1991
%if %{usrmerged}
7a1991
		! -path '*/symtypes*' ! -path '*/vmlinu*' \
7a1991
%endif
7a1991
		\) -printf '/%%p\n'
7a1991
	cat %my_builddir/base-modules
7a1991
    fi
7a1991
    if test %CONFIG_MODULE_SIG = "y" -a -d etc/uefi/certs; then
7a1991
        find etc/uefi/certs -type f -printf '/%%p\n'
7a1991
    fi
7a1991
    if test -d lib/firmware/%kernelrelease-%build_flavor; then
7a1991
        echo "%%dir /lib/firmware/%kernelrelease-%build_flavor"
7a1991
        cat %my_builddir/base-firmware
7a1991
    fi
7a1991
    if [ -e .%_docdir/%name ]; then
7a1991
	echo "%%doc %_docdir/%name"
7a1991
    fi
7a1991
} | sort -u | add_dirs_to_filelist >%my_builddir/kernel-base.files
Bernhard M. Wiedemann 86a379
7a1991
{
7a1991
    add_dirs_to_filelist %my_builddir/kernel-base.files
7a1991
    if [ %CONFIG_MODULES = y ]; then
7a1991
        add_dirs_to_filelist %my_builddir/main-modules
7a1991
    fi
7a1991
    if test -d %buildroot/lib/firmware/%kernelrelease-%build_flavor; then
7a1991
	echo "/lib/firmware/%kernelrelease-%build_flavor"
7a1991
    fi
7a1991
} > %my_builddir/kernel-main.files
ab3bb5
7a1991
%if %split_extra
7a1991
    add_dirs_to_filelist %my_builddir/unsupported-modules > %my_builddir/kernel-extra.files
7a1991
%if %split_extra && %split_optional
7a1991
    add_dirs_to_filelist %my_builddir/optional-modules > %my_builddir/kernel-optional.files
7a1991
%endif
Bernhard M. Wiedemann 86a379
7a1991
%if 0%{?sle_version} >= 150000
7a1991
    # By default, loading unsupported modules is disabled on SLE through
7a1991
    # /etc/modprobe.d/10-unsupported-modules.conf from the suse-module-tools
7a1991
    # package.
7a1991
    # modules in kernel-$flavor-extra don't have the supported flag set,
7a1991
    # yet loading them should be possible if the package is installed.
7a1991
    # CAUTION PACKAGERS: The file content below must not change between
7a1991
    # kernel versions, otherwise file conflicts might arise with
7a1991
    # multiversion(kernel).
Bernhard M. Wiedemann 86a379
7a1991
    modprobe_d_dir=/etc/modprobe.d
7a1991
    %if 0%{?sle_version} > 150300
7a1991
    modprobe_d_dir=/lib/modprobe.d
7a1991
    %endif
7a1991
    %if %{usrmerged}
7a1991
    modprobe_d_dir=/usr/lib/modprobe.d
7a1991
    %endif
7a4f11
7a1991
    mkdir -p %buildroot$modprobe_d_dir
7a1991
    cat >%buildroot$modprobe_d_dir/20-kernel-%{build_flavor}-extra.conf <
7a1991
# This file overrides the default from 10-unsupported-modules.conf.
7a1991
# This is necessary to load kernel modules from the
7a1991
# kernel-%{build_flavor}-extra package.
7a1991
#
7a1991
# WARNING: loading unsupported modules may compromise SLE support.
7a1991
# Please read the comments in 10-unsupported-modules.conf.
7a1991
allow_unsupported_modules 1
7a1991
EOF
7a1991
    echo "%%dir $modprobe_d_dir" >> %my_builddir/kernel-extra.files
7a1991
    echo "%%config(noreplace) $modprobe_d_dir/20-kernel-%{build_flavor}-extra.conf" >> %my_builddir/kernel-extra.files
7a1991
%endif
7a1991
%endif
7a1991
for f in %my_builddir/*-kmp-modules; do
7a1991
	f2=${f%%-modules}.files
7a1991
	add_dirs_to_filelist "$f" >"$f2"
7a1991
done
Bernhard M. Wiedemann 86a379
7a1991
if [ %CONFIG_MODULES = y ]; then
7a1991
  install -m 644 %_sourcedir/modules.fips %{buildroot}%modules_dir/modules.fips
7a1991
  echo %modules_dir/modules.fips >> %my_builddir/kernel-base.files
7a1991
  echo %modules_dir/modules.fips >> %my_builddir/kernel-main.files
7a1991
fi
Bernhard M. Wiedemann 86a379
7a1991
# Hardlink duplicate files automatically (from package fdupes): It doesn't save
7a1991
# much, but it keeps rpmlint from breaking the package build. Note that we skip
7a1991
# /usr/src/linux-obj intentionally, to not accidentally break timestamps there
7a1991
%fdupes %buildroot%modules_dir
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
%changelog