Michal Marek 411abb
#
Michal Marek aebe2d
# spec file for package kernel-@FLAVOR@
Michal Marek 411abb
#
Takashi Iwai 39a1fc
# Copyright (c) @YEAR@ SUSE LLC
Michal Marek 411abb
#
Michal Marek 411abb
# All modifications and additions to the file contributed by third parties
Michal Marek 411abb
# remain the property of their copyright owners, unless otherwise agreed
Michal Marek 411abb
# upon. The license for this file, and modifications and additions to the
Michal Marek 411abb
# file, is the same license as for the pristine package itself (unless the
Michal Marek 411abb
# license for the pristine package is not an Open Source License, in which
Michal Marek 411abb
# case the license is the MIT License). An "Open Source License" is a
Michal Marek 411abb
# license that conforms to the Open Source Definition (Version 1.9)
Michal Marek 411abb
# published by the Open Source Initiative.
Michal Marek 411abb
Michal Marek 411abb
# Please submit bugfixes or comments via http://bugs.opensuse.org/
Michal Marek 411abb
#
Michal Marek 59d2ac
# needssslcertforbuild
Michal Marek 411abb
Michal Marek a3cd25
Michal Marek 411abb
%define srcversion @SRCVERSION@
Michal Marek 411abb
%define patchversion @PATCHVERSION@
Michal Marek 411abb
%define variant @VARIANT@%{nil}
Michal Marek eeaaaf
%define vanilla_only @VANILLA_ONLY@
Takashi Iwai cdf580
%define compress_modules @COMPRESS_MODULES@
Jiri Slaby c8b2d9
%define compress_vmlinux @COMPRESS_VMLINUX@
Michal Suchanek 88241e
%define livepatch @LIVEPATCH@%{nil}
Michal Marek 411abb
Michal Marek 411abb
%include %_sourcedir/kernel-spec-macros
Michal Marek 411abb
Michal Marek 411abb
%define build_flavor	@FLAVOR@
Andreas Schwab 013444
%define build_default	("%build_flavor" == "default")
Andreas Schwab 013444
%define build_vanilla	("%build_flavor" == "vanilla")
Michal Marek 411abb
Michal Marek 2d2ec7
%if ! %build_vanilla
Michal Marek 411abb
%define src_install_dir /usr/src/linux-%kernelrelease%variant
Michal Marek 2d2ec7
%else
Michal Marek 2d2ec7
%define src_install_dir /usr/src/linux-%kernelrelease-vanilla
Michal Marek 2d2ec7
%endif
Michal Marek 2d2ec7
%define obj_install_dir /usr/src/linux-%kernelrelease%variant-obj
Michal Marek 411abb
%define rpm_install_dir %buildroot%obj_install_dir
Michal Marek 2ed0db
%define kernel_build_dir %my_builddir/linux-%srcversion/linux-obj
Michal Marek 411abb
Jiri Slaby 63d707
%if 0%{?_project:1} && ( %(echo %_project | grep -Ex -f %_sourcedir/release-projects | grep -v ^PTF | grep -vc openSUSE) || %(echo %_project | grep -Ec "^(Devel:)?Kernel:") )
Michal Suchanek 751908
	%define klp_symbols 1
Michal Suchanek 751908
%endif
Michal Suchanek 751908
Michal Marek 411abb
%(chmod +x %_sourcedir/{@SCRIPTS@})
Michal Marek 411abb
Michal Marek 411abb
%global cpu_arch %(%_sourcedir/arch-symbols %_target_cpu)
Michal Marek 411abb
%define cpu_arch_flavor %cpu_arch/%build_flavor
Michal Marek 411abb
Michal Marek 411abb
# Define some CONFIG variables as rpm macros as well. (rpm cannot handle
Michal Marek 411abb
# defining them all at once.)
Miroslav Benes 98e5a9
%define config_vars CONFIG_MODULES CONFIG_MODULE_SIG CONFIG_KMSG_IDS CONFIG_SUSE_KERNEL_SUPPORTED CONFIG_EFI_STUB CONFIG_LIVEPATCH_IPA_CLONES
Michal Marek 411abb
%{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)}
Jiri Slaby d9b4c4
%define split_extra ("%CONFIG_MODULES" == "y" && "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y")
Jiri Slaby 21f820
%if "%CONFIG_MODULES" != "y"
Michal Kubecek a048c4
	%define klp_symbols 0
Michal Kubecek a048c4
%endif
Michal Marek 411abb
Michal Marek 411abb
%ifarch %ix86 x86_64
Michal Marek 411abb
%define install_vdso 1
Michal Marek 411abb
%else
Michal Marek 411abb
%define install_vdso 0
Michal Marek 411abb
%endif
Michal Marek 411abb
Michal Marek 411abb
Name:           kernel-@FLAVOR@
Michal Marek 411abb
Summary:        @SUMMARY@
Michal Marek 0b9e9a
License:        GPL-2.0
Michal Marek 0b9e9a
Group:          System/Kernel
Michal Marek 411abb
Version:        @RPMVERSION@
Michal Marek a80e5e
%if 0%{?is_kotd}
Michal Marek a80e5e
Release:        <RELEASE>.g@COMMIT@
Michal Marek a80e5e
%else
Michal Marek aebe2d
Release:        @RELEASE@
Michal Marek a80e5e
%endif
Michal Marek 411abb
Url:            http://www.kernel.org/
Michal Marek 0b9e9a
BuildRequires:  bc
Michal Suchanek f5686d
BuildRequires:  bison
Michal Marek 0b9e9a
BuildRequires:  coreutils
Michal Marek 411abb
BuildRequires:  fdupes
Michal Kubecek 83d831
BuildRequires:  flex
Michal Marek d7ff04
# Cannot test %%CONFIG_GCC_PLUGINS here because the buildservice parser
Michal Marek d7ff04
# does not expand %%(...)
Michal Marek d7ff04
%if "%build_flavor" == "syzkaller"
Michal Marek d57795
# Needed by scripts/gcc-plugin.sh
Michal Suchanek d2ab97
BuildRequires:  gcc-c++
Michal Suchanek d2ab97
BuildRequires:  gcc-devel
Michal Marek d7ff04
%endif
Michal Marek d7a84f
%if 0%{?suse_version} > 1310
Michal Marek 9cca2f
BuildRequires:  hmaccalc
Michal Marek d7a84f
%endif
Michal Marek fbdf0b
BuildRequires:  libopenssl-devel
Michal Marek f65016
BuildRequires:  modutils
Michal Marek 59d2ac
# Used to sign the kernel in the buildservice
Michal Marek 15501f
BuildRequires:  openssl
Michal Marek 15501f
BuildRequires:  pesign-obs-integration
David Sterba 16f65f
# for objtool
David Sterba 16f65f
BuildRequires:  libelf-devel
Michal Marek 411abb
Provides:       %name = %version-%source_rel
Michal Marek c9157e
# bnc#901925
Michal Marek c9157e
Provides:       %name-%version-%source_rel
Michal Suchanek b4ec51
Provides:       %{name}_%_target_cpu = %version-%source_rel
Michal Marek 411abb
Provides:       kernel-base = %version-%source_rel
Michal Marek a3cd25
Provides:       multiversion(kernel)
Michal Marek 3f926c
# In SLE11, kernel-$flavor complemented kernel-$flavor-base. With SLE12,
Michal Marek 3f926c
# kernel-$flavor itself contains all the needed files and kernel-$flavor-base
Michal Marek 3f926c
# is a subset that can replace kernel-$flavor in some scenarios. We need to
Michal Marek 3f926c
# obsolete the -base subpackage from SLE11, so that the base files are not
Michal Marek 3f926c
# owned by multiple packages now. The dependency is not correct wrt openSUSE
Michal Marek 3f926c
# 11.2 - 11.4, but we primarily care about the supported upgrade path.
Michal Suchanek a5ee24
Obsoletes:      %name-base < 3.1
Michal Suchanek dbe7b2
%if ("%build_flavor" != "kvmsmall") && ("%build_flavor" != "azure")
Michal Suchanek 955681
Recommends: kernel-firmware
Michal Suchanek dbe7b2
%endif
Michal Marek bf655e
# The following is copied to the -base subpackage as well
Michal Marek bf655e
# BEGIN COMMON DEPS
Michal Marek 411abb
Requires(pre):  coreutils awk
Michal Marek 2889ce
# For /usr/lib/module-init-tools/weak-modules2
Michal Marek 2889ce
Requires(post): suse-module-tools
Michal Marek 2889ce
# For depmod (modutils is a dependency provided by both module-init-tools and
Michal Marek 2889ce
# kmod-compat)
Michal Marek 2889ce
Requires(post): modutils
Michal Marek 411abb
# This Requires is wrong, because the post/postun scripts have a
Michal Marek 411abb
# test -x update-bootloader, having perl-Bootloader is not a hard requirement.
Michal Marek 411abb
# But, there is no way to tell rpm or yast to schedule the installation
Michal Marek 411abb
# of perl-Bootloader before kernel-binary.rpm if both are in the list of
Michal Marek 411abb
# packages to install/update. Likewise, this is true for mkinitrd.
Michal Marek 411abb
# Need a perl-Bootloader with /usr/lib/bootloader/bootloader_entry
Michal Marek 411abb
Requires(post): perl-Bootloader >= 0.4.15
Michal Marek 26431d
%if %build_vanilla
Michal Marek 26431d
Requires(post): mkinitrd
Michal Marek 26431d
%else
Michal Marek 26431d
# Require a mkinitrd that can handle usbhid/hid-generic built-in (bnc#773559)
Michal Marek dd227e
Requires(post): mkinitrd >= 2.7.1
Michal Marek 26431d
%endif
Michal Marek dd227e
# Install the package providing /etc/SuSE-release early enough, so that
Michal Marek dd227e
# the grub entry has correct title (bnc#757565)
Michal Marek dd227e
Requires(post): distribution-release
Michal Suchanek 858b7e
# Do not install p-b and mkinitrd for the install check, the %post script is
Michal Suchanek 858b7e
# able to handle this
Michal Marek dd227e
#!BuildIgnore: perl-Bootloader mkinitrd distribution-release
Michal Marek 7f4c49
# Remove some packages that are installed automatically by the build system,
Michal Marek 7f4c49
# but are not needed to build the kernel
Michal Kubecek d7695e
#!BuildIgnore: autoconf automake gettext-runtime libtool cvs gettext-tools udev insserv
Michal Marek 411abb
Michal Marek 411abb
%ifarch s390 s390x
Michal Marek 411abb
%if %build_vanilla && 0%{?suse_version} < 1130
Michal Marek 411abb
BuildRequires:  dwarfextract
Michal Marek 411abb
%endif
Michal Marek 411abb
%endif
Alexander Graf 63a7b2
%ifarch %arm
Alexander Graf 63a7b2
BuildRequires:  u-boot-tools
Alexander Graf 63a7b2
%endif
Michal Marek 411abb
Michal Marek 0b9e9a
Obsoletes:      microcode_ctl
Jeff Mahoney 43e5ff
Michal Marek e8f8f5
# Force bzip2 instead of lzma compression to
Michal Marek e8f8f5
# 1) allow install on older dist versions, and
Michal Suchanek 375ec8
# 2) decrease build times (bsc#962356 boo#1175882)
Michal Marek 411abb
%define _binary_payload w9.bzdio
Michal Marek f622d6
# Do not recompute the build-id of vmlinux in find-debuginfo.sh (bsc#964063)
Michal Suchanek 47e91a
%undefine _unique_build_ids
Michal Marek f622d6
%define _no_recompute_build_ids 1
Michal Suchanek 2b90c1
# prevent usr/lib/debug/boot/vmlinux-4.12.14-11.10-default-4.12.14-11.10.ppc64le.debug
Michal Suchanek 2b90c1
%undefine _unique_debug_names
Michal Marek 411abb
# dead network if installed on SLES10, otherwise it will work (mostly)
Michal Marek 411abb
Conflicts:      sysfsutils < 2.0
Michal Marek 411abb
Conflicts:      apparmor-profiles <= 2.1
Michal Marek 411abb
Conflicts:      apparmor-parser < 2.3
Michal Marek 411abb
# root-lvm only works with newer udevs
Michal Marek 411abb
Conflicts:      udev < 118
Michal Marek 411abb
Conflicts:      lvm2 < 2.02.33
Olaf Hering 86f9ba
# Interface to hv_kvp_daemon changed
Olaf Hering 86f9ba
Conflicts:      hyper-v < 4
Michal Marek 411abb
%ifarch %ix86
Michal Marek 411abb
Conflicts:      libc.so.6()(64bit)
Michal Marek 411abb
%endif
Michal Marek 411abb
Provides:       kernel = %version-%source_rel
Michal Suchanek 219bce
Provides:       kernel-%build_flavor-base-srchash-@COMMIT_FULL@
Michal Suchanek 219bce
Provides:       kernel-srchash-@COMMIT_FULL@
Michal Suchanek 955681
# END COMMON DEPS
Michal Suchanek 219bce
Provides:       %name-srchash-@COMMIT_FULL@
Michal Suchanek a5ee24
@PROVIDES_OBSOLETES@
Michal Suchanek 858b7e
@PROVIDES_OBSOLETES_BASE@
Michal Suchanek 858b7e
%obsolete_rebuilds %name
Michal Marek 411abb
@SOURCES@
Michal Marek 411abb
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
Michal Marek 411abb
ExclusiveArch:  @ARCHS@
Michal Marek 88a632
%define kmp_target_cpu %_target_cpu
Michal Marek 88a632
%ifarch %ix86
Michal Marek 88a632
# Only i386/default supports i586, mark other flavors' packages as i686
Michal Marek 88a632
%if ! %build_default
Michal Marek 88a632
BuildArch:      i686
Michal Marek 88a632
# KMPs are always built as i586, because rpm does not allow to build
Michal Marek 88a632
# subpackages for different architectures. Therefore, we change the
Michal Marek 88a632
# /usr/src/linux-obj/<arch> symlink to i586.
Michal Marek 88a632
%define kmp_target_cpu i586
Michal Marek 88a632
%endif
Michal Marek 88a632
%endif
Michal Marek 411abb
Michal Marek 411abb
# These files are found in the kernel-source package:
Michal Marek 411abb
@NOSOURCE@
Michal Marek 411abb
Michal Marek 411abb
# The following KMPs have been integrated into the kernel package,
Michal Marek 411abb
# grouped by the last product that contained them.
Michal Marek d802bf
# Usage: obsolete_kmp <basename> <upper bound of shipped versions>
Michal Marek d802bf
# Note that KMPs embed the version of the kernel built against, that's why
Michal Marek d802bf
# the _3 suffix for 2.6.x-based KMPs
Michal Marek d802bf
%define obsolete_kmp() Obsoletes: %1-kmp-%build_flavor <= %2 \
Michal Suchanek c5ecb2
Provides: %1-kmp = %2.1 \
Michal Suchanek c5ecb2
Provides: %1-kmp-%build_flavor = %2.1
Michal Marek 411abb
# sles10 / 10.3
Michal Marek d802bf
%obsolete_kmp iwlwifi 1.3.27_3
Michal Marek d802bf
%obsolete_kmp ipw3945 1.2.2_3
Michal Marek d802bf
# sled10 / 11.0
Michal Marek d802bf
%obsolete_kmp uvcvideo r200_3
Michal Marek 411abb
# sle11-ga
Michal Marek d802bf
%obsolete_kmp enic 0.0.1_3
Michal Marek d802bf
%obsolete_kmp fnic 1.0.0_3
Michal Marek d802bf
%obsolete_kmp brocade-bfa 1.1.0.2_3
Michal Marek d802bf
%obsolete_kmp kvm 78.2.6.30.1_3
Michal Marek d802bf
%obsolete_kmp perfmon 2_3
Michal Marek d802bf
%obsolete_kmp iwlagn-2-6-27 1.0_3
Michal Marek d802bf
%obsolete_kmp msi-wmi 1.0_3
Michal Marek 411abb
# 11.1
Michal Marek f5449e
%obsolete_kmp quickcam 0.6.7
Michal Marek 221133
# sle11-sp1
Michal Marek 0b9e9a
%obsolete_kmp   wacom 0.8.1_3
Michal Marek 0b9e9a
%obsolete_kmp   btrfs 0_3
Michal Marek 0b9e9a
%obsolete_kmp   brocade-bna 2.1.0.0_3
Michal Marek 0b9e9a
%obsolete_kmp   hyper-v 0_3
Michal Marek 0b9e9a
%obsolete_kmp   intel-e1000e 2.2.14
Michal Marek 0b9e9a
Obsoletes:      firewire <= 3.0
Michal Marek 0b9e9a
Provides:       firewire = 3.0
Michal Marek 0b9e9a
%obsolete_kmp   firewire 3.0
Michal Marek 0b9e9a
%obsolete_kmp   iwlagn 3.0
Michal Marek 0b9e9a
Obsoletes:      compat-ath9k <= 3.0
Michal Marek 0b9e9a
Provides:       compat-ath9k = 3.0
Michal Marek 0b9e9a
%obsolete_kmp   compat-ath9k 3.0
Michal Marek 0b9e9a
%obsolete_kmp   realtek-r8192ce_pci 2.6.0005_3
Michal Marek 0b9e9a
%obsolete_kmp   realtek-r8192se_pci 2.6.0019.1207.2010_3
Michal Marek 0b9e9a
%obsolete_kmp   rt3090 2.4.0.4_3
Michal Marek 0b9e9a
%obsolete_kmp   rt3592 2.4.1.1_3
Michal Marek 0b9e9a
%obsolete_kmp   rt5390 2.4.0.4_3
Michal Marek 0b9e9a
%obsolete_kmp   ath3k 1.0_3
Takashi Iwai 37738d
%obsolete_kmp	compat-wireless 3.12
Takashi Iwai 37738d
%obsolete_kmp	rts5229 1.08
Takashi Iwai 37738d
%obsolete_kmp	rts_pstor 1.11
Michal Marek 0e7c4d
# sle12-sp1 / Leap 42.1
Michal Marek 0e7c4d
%obsolete_kmp	xen 4.6.1
Michal Marek 127728
%obsolete_kmp	compat-wireless 4.4
Takashi Iwai 34c186
# TW 4.8
Takashi Iwai 34c186
%obsolete_kmp	ftsteutates 20160601
Takashi Iwai 77ccbd
# SLE12-SP3 / Leap 42.3
Takashi Iwai 77ccbd
%obsolete_kmp   drm 4.12
Michal Marek 411abb
Michal Marek 411abb
# Will modules not listed in supported.conf abort the kernel build (0/1)?
Michal Suchanek 96adf4
%define supported_modules_check 1
Michal Marek 411abb
Michal Marek 411abb
%description
Michal Marek 411abb
@DESCRIPTION@
Michal Marek 411abb
Michal Marek 411abb
Michal Marek aebe2d
%source_timestamp
Michal Marek 411abb
%prep
Michal Marek d12c88
if ! [ -e %{S:0} ]; then
Michal Marek 411abb
    echo "The %name-%version.nosrc.rpm package does not contain the" \
Michal Marek 411abb
	 "complete sources. Please install kernel-source-%version.src.rpm."
Michal Marek 411abb
    exit 1
Michal Marek 411abb
fi
Michal Marek 411abb
Michal Marek 411abb
SYMBOLS=
Michal Marek 411abb
if test -e %_sourcedir/extra-symbols; then
Michal Marek 411abb
	SYMBOLS=$(cat %_sourcedir/extra-symbols)
Michal Marek 411abb
	echo "extra symbol(s):" $SYMBOLS
Michal Marek 411abb
fi
Michal Marek 411abb
Michal Marek 411abb
# Unpack all sources and patches
Michal Marek 411abb
%setup -q -c -T -a 0 @UNPACK_PATCHES@
Michal Marek 411abb
Michal Marek 411abb
mkdir -p %kernel_build_dir
Michal Marek 411abb
Michal Marek edfdc2
# Generate a list of modules with their support status marking
Michal Marek edfdc2
%_sourcedir/guards --list --with-guards <%_sourcedir/supported.conf | \
Michal Marek edfdc2
awk '
Michal Marek 006b14
	/\+external / {
Michal Marek edfdc2
		print $(NF) " external";
Michal Marek edfdc2
		next;
Michal Marek edfdc2
	}
Michal Marek 006b14
	/^-/ {
Michal Marek edfdc2
		print $(NF) " no";
Michal Marek edfdc2
		next;
Michal Marek edfdc2
	}
Michal Marek edfdc2
	{
Michal Marek edfdc2
		print $(NF);
Michal Marek edfdc2
	}
Michal Marek edfdc2
' >%kernel_build_dir/Module.supported
Michal Marek a259f7
subpackages=(
Michal Marek a259f7
	base
Jiri Slaby 21f820
%if "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y"
Michal Marek a259f7
	@KMPS@
Michal Marek a259f7
%endif
Michal Marek a259f7
)
Michal Marek a259f7
for package in "${subpackages[@]}"; do
Michal Marek 09cb6b
	%_sourcedir/guards --default=0 "$package" \
Michal Marek 09cb6b
		<%_sourcedir/supported.conf | sed 's,.*/,,; s,\.ko$,,' | \
Michal Marek 09cb6b
		sort -u >%kernel_build_dir/Module."$package"
Michal Marek 09cb6b
done
Michal Marek 411abb
Michal Marek 411abb
cd linux-%srcversion
Michal Marek 411abb
Michal Marek 411abb
%_sourcedir/apply-patches \
Michal Marek 411abb
%if %{build_vanilla}
Michal Marek 411abb
	--vanilla \
Michal Marek 411abb
%endif
Michal Marek 411abb
	%_sourcedir/series.conf .. $SYMBOLS
Michal Marek 411abb
Michal Marek 411abb
cd %kernel_build_dir
Michal Marek 411abb
Michal Marek e3c78c
# Override the timestamp 'uname -v' reports with the source timestamp and
Michal Marek e3c78c
# the commit hash.
Michal Marek e3c78c
date=$(head -n 1 %_sourcedir/source-timestamp)
Michal Marek e3c78c
commit=$(sed -n 's/GIT Revision: //p' %_sourcedir/source-timestamp)
Michal Marek e3c78c
cat > .kernel-binary.spec.buildenv <
Michal Marek e3c78c
export KBUILD_BUILD_TIMESTAMP="$(LANG=C date -d "$date") (${commit:0:7})"
Michal Marek e3c78c
export KBUILD_VERBOSE=0
Michal Marek e3c78c
export KBUILD_SYMTYPES=1
Michal Marek e3c78c
export KBUILD_OVERRIDE=1
Michal Marek e3c78c
export KBUILD_BUILD_USER=geeko
Michal Marek e3c78c
export KBUILD_BUILD_HOST=buildhost
Michal Marek e3c78c
export HOST_EXTRACFLAGS="-include %_sourcedir/host-memcpy-hack.h"
Michal Marek e3c78c
EOF
Michal Marek e3c78c
source .kernel-binary.spec.buildenv
Michal Marek e3c78c
Michal Marek 411abb
if [ -f %_sourcedir/localversion ] ; then
Michal Marek 411abb
    cat %_sourcedir/localversion > localversion
Michal Marek 411abb
fi
Michal Marek 411abb
Michal Suchanek af3782
config_base="default"
Jeff Mahoney a9a75a
%ifarch %ix86
Michal Suchanek af3782
config_base="pae"
Jeff Mahoney a9a75a
%endif
Michal Suchanek af3782
if ! [ -f %my_builddir/config/%cpu_arch/$config_base ] ; then
Michal Suchanek af3782
    config_base=%variant
Michal Suchanek af3782
    config_base=${config_base#-}
Michal Suchanek af3782
fi
Jeff Mahoney 66c90c
if ! grep -q CONFIG_MMU= "%my_builddir/config/%cpu_arch_flavor"; then
Michal Suchanek af3782
cp "%my_builddir/config/%cpu_arch/$config_base" .config
Jeff Mahoney a9a75a
../scripts/kconfig/merge_config.sh -m .config \
Jeff Mahoney a9a75a
                                   %my_builddir/config/%cpu_arch_flavor
Jeff Mahoney 66c90c
else
Michal Marek e8739f
cp %my_builddir/config/%cpu_arch_flavor .config
Jeff Mahoney 66c90c
fi
Michal Marek 8eb070
if test -e %my_builddir/config.addon/%cpu_arch_flavor; then
Michal Marek 411abb
	# FIXME: config.addon doesn't affect the %CONFIG_ macros defined at
Michal Marek 411abb
	# the top of the specfile
Michal Marek e8739f
	../scripts/kconfig/merge_config.sh -m .config %my_builddir/config.addon/%cpu_arch_flavor
Michal Marek 411abb
fi
Jeff Mahoney 0ca61c
Jeff Mahoney 0ca61c
CONFIG_SUSE_KERNEL_RELEASED="--disable CONFIG_SUSE_KERNEL_RELEASED"
Jeff Mahoney 0ca61c
%if 0%{?_project:1}
Jiri Slaby 63d707
if echo %_project | grep -Eqx -f %_sourcedir/release-projects; then
Jeff Mahoney 0ca61c
	CONFIG_SUSE_KERNEL_RELEASED="--enable CONFIG_SUSE_KERNEL_RELEASED"
Jeff Mahoney 0ca61c
fi
Jeff Mahoney 0ca61c
%endif
Jeff Mahoney 0ca61c
Michal Marek 2ed0db
../scripts/config \
Michal Marek b88e78
	--set-str CONFIG_LOCALVERSION -%source_rel-%build_flavor \
Michal Marek 411abb
	--enable  CONFIG_SUSE_KERNEL \
Jeff Mahoney 0ca61c
	$CONFIG_SUSE_KERNEL_RELEASED \
Michal Marek 411abb
%if 0%{?__debug_package:1}
Michal Marek d404ac
	--enable  CONFIG_DEBUG_INFO
Michal Marek 411abb
%else
Michal Marek 411abb
	--disable CONFIG_DEBUG_INFO
Michal Marek 411abb
%endif
Michal Marek 411abb
Michal Suchanek fb21b7
case %cpu_arch in
Michal Suchanek 5f24fb
    x86_64 | i386)
Michal Suchanek 5f24fb
        MAKE_ARGS="$MAKE_ARGS ARCH=x86"
Michal Suchanek 5f24fb
        ;;
Michal Suchanek fb21b7
    ppc*)
Michal Suchanek 5f24fb
        MAKE_ARGS="$MAKE_ARGS ARCH=powerpc"
Michal Suchanek fb21b7
        ;;
Michal Suchanek fb21b7
    s390x)
Michal Suchanek fb21b7
        MAKE_ARGS="$MAKE_ARGS ARCH=s390"
Michal Suchanek fb21b7
        ;;
Michal Suchanek fb21b7
    arm64)
Michal Suchanek fb21b7
        MAKE_ARGS="$MAKE_ARGS ARCH=arm64"
Michal Suchanek fb21b7
        ;;
Michal Suchanek fb21b7
    armv*)
Michal Suchanek fb21b7
        MAKE_ARGS="$MAKE_ARGS ARCH=arm"
Michal Suchanek fb21b7
        ;;
Andreas Schwab c2885e
    riscv*)
Andreas Schwab c2885e
        MAKE_ARGS="$MAKE_ARGS ARCH=riscv"
Andreas Schwab c2885e
        ;;
Michal Suchanek fb21b7
    *)
Michal Suchanek fb21b7
        MAKE_ARGS="$MAKE_ARGS ARCH=%cpu_arch"
Michal Suchanek fb21b7
        ;;
Michal Suchanek fb21b7
esac
Michal Suchanek fb21b7
Michal Suchanek 8c2f46
makeoutputsync=
Michal Suchanek 0bf8e9
if make --output-sync --help >/dev/null 2>&1 ; then
Michal Suchanek 8c2f46
        makeoutputsync=--output-sync
Michal Suchanek 8c2f46
else
Michal Suchanek 8c2f46
        echo make does not support --output-sync flag. Build messages may be mangled. 1>&2
Michal Suchanek 8c2f46
fi
Michal Suchanek 13e40f
MAKE_ARGS="$MAKE_ARGS $makeoutputsync %{?_smp_mflags}"
Michal Suchanek 6171b7
echo export MAKE_ARGS=\""$MAKE_ARGS"\" >> .kernel-binary.spec.buildenv
Michal Suchanek 6171b7
Michal Suchanek 13e40f
KERN_DIRS="-C .. O=$PWD"
Michal Marek 411abb
if test -e %_sourcedir/TOLERATE-UNKNOWN-NEW-CONFIG-OPTIONS; then
Michal Suchanek 13e40f
    yes '' | make oldconfig $MAKE_ARGS $KERN_DIRS
Michal Marek 411abb
else
Michal Marek 411abb
    cp .config .config.orig
Michal Kubecek a239c6
    if test -f ../scripts/kconfig/Makefile && \
Michal Kubecek a239c6
       grep -q syncconfig ../scripts/kconfig/Makefile; then
Michal Kubecek a239c6
        syncconfig="syncconfig"
Michal Kubecek a239c6
    else
Michal Kubecek a239c6
        syncconfig="silentoldconfig"
Michal Kubecek a239c6
    fi
Michal Kubecek a239c6
    make $syncconfig $MAKE_ARGS $KERN_DIRS < /dev/null
Michal Marek 411abb
    %_sourcedir/check-for-config-changes .config.orig .config
Michal Marek 411abb
    rm .config.orig
Michal Marek 411abb
fi
Michal Marek 411abb
Michal Marek 411abb
make prepare $MAKE_ARGS
Michal Marek 411abb
make scripts $MAKE_ARGS
Michal Marek 411abb
krel=$(make -s kernelrelease $MAKE_ARGS)
Michal Marek 411abb
Michal Marek 411abb
if [ "$krel" != "%kernelrelease-%build_flavor" ]; then
Michal Marek 411abb
    echo "Kernel release mismatch: $krel != %kernelrelease-%build_flavor" >&2
Michal Marek 411abb
    exit 1
Michal Marek 411abb
fi
Michal Marek 411abb
Michal Marek 411abb
make clean $MAKE_ARGS
Michal Marek 411abb
Michal Marek 411abb
rm -f source
Michal Marek 4c334f
find . ! -type d ! -name 'Module.base' ! -name 'Module.*-kmp' -printf '%%P\n' \
Michal Marek 4c334f
	> %my_builddir/obj-files
Michal Marek 411abb
Michal Marek 411abb
%build
Michal Marek 411abb
cd %kernel_build_dir
Michal Marek 411abb
source .kernel-binary.spec.buildenv
Michal Marek 411abb
Michal Marek 411abb
# create *.symref files in the tree
Michal Marek 411abb
if test -e %my_builddir/kabi/%cpu_arch/symtypes-%build_flavor; then
Michal Marek 411abb
    %_sourcedir/modversions --unpack . < $_
Michal Marek 411abb
fi
Michal Marek 411abb
Michal Marek 6eb6cd
# copy module signing certificate(s). We use the default path and trick
Michal Marek 6eb6cd
# certs/Makefile to not regenerate the certificate. It is done this way so
Michal Marek 6eb6cd
# that the kernel-source package can be rebuilt even without the certificate
Michal Marek 6eb6cd
mkdir -p certs
Michal Marek 8a264a
for f in %_sourcedir/*.crt; do
Michal Marek c5b127
    if ! test -e "$f"; then
Michal Marek c5b127
        continue
Michal Marek c5b127
    fi
Michal Marek 6eb6cd
    touch certs/x509.genkey
Michal Marek 6eb6cd
    cat "$f" >>certs/signing_key.pem
Michal Marek 8a264a
done
Michal Marek 8a264a
Jiri Slaby 21f820
%if "%CONFIG_KMSG_IDS" == "y"
Michal Marek 8eb070
    chmod +x ../scripts/kmsg-doc
Michal Marek d72f6c
    MAKE_ARGS="$MAKE_ARGS D=2"
Michal Marek 411abb
%endif
Michal Marek 411abb
Michal Marek f73822
mkdir -p %_topdir/OTHER
Michal Marek f73822
log=%_topdir/OTHER/make-stderr.log
Michal Marek 819d1f
while true; do
Michal Marek f73822
    make all $MAKE_ARGS 2> >(tee "$log")
Michal Marek 819d1f
    if test "${PIPESTATUS[0]}" -eq 0; then
Michal Marek 819d1f
        break
Michal Marek 819d1f
    fi
Michal Marek eeaaaf
    # In the linux-next and vanilla branches, we try harder to build a
Michal Marek eeaaaf
    # package.
Michal Marek eeaaaf
    if test 0%vanilla_only -gt 0 &&
Michal Marek f73822
			%_sourcedir/try-disable-staging-driver "$log"; then
Michal Marek 819d1f
        echo "Retrying make"
Michal Marek 819d1f
    else
Michal Marek 819d1f
        exit 1
Michal Marek 819d1f
    fi
Michal Marek 819d1f
done
Michal Marek d72f6c
Joao 0b1b4d
# Generate list of symbols that are used to create kernel livepatches
Michal Suchanek e35f14
%if 0%{?klp_symbols}
Joao 0b1b4d
	%_sourcedir/klp-symbols . Symbols.list
Joao 0b1b4d
%endif
Joao 0b1b4d
Michal Marek 411abb
%install
Michal Marek 411abb
Michal Marek 411abb
# get rid of /usr/lib/rpm/brp-strip-debug
Michal Marek 411abb
# strip removes too much from the vmlinux ELF binary
Michal Marek 411abb
export NO_BRP_STRIP_DEBUG=true
Michal Marek 411abb
export STRIP_KEEP_SYMTAB='*/vmlinux-*'
Michal Marek 411abb
Michal Marek e575cc
# /lib/modules/%kernelrelease-%build_flavor/source points to the source
Michal Marek e575cc
# directory installed by kernel-devel. The kernel-%build_flavor-devel package
Michal Marek e575cc
# has a correct dependency on kernel-devel, but the brp check does not see
Michal Marek e575cc
# kernel-devel during build.
Michal Marek 411abb
export NO_BRP_STALE_LINK_ERROR=yes
Michal Marek 411abb
Michal Marek 411abb
cd %kernel_build_dir
Michal Suchanek ce62ae
source .kernel-binary.spec.buildenv
Michal Marek 411abb
Michal Marek 411abb
mkdir -p %buildroot/boot
Michal Marek 411abb
# (Could strip out non-public symbols.)
Michal Marek 411abb
cp -p System.map %buildroot/boot/System.map-%kernelrelease-%build_flavor
Michal Marek 411abb
Michal Marek 411abb
add_vmlinux()
Michal Marek 411abb
{
Michal Marek 26b7a6
    local vmlinux=boot/vmlinux-%kernelrelease-%build_flavor
Michal Marek 411abb
Michal Marek 411abb
    cp vmlinux %buildroot/$vmlinux
Michal Marek 26b7a6
    # make sure that find-debuginfo.sh picks it up. In the filelist, we
Michal Marek 26b7a6
    # mark the file 0644 again
Michal Marek 26b7a6
    chmod +x %buildroot/$vmlinux
Michal Marek 26b7a6
    if test $1 == "--compressed"; then
Michal Marek 381a19
        # avoid using the gzip -n option to make kdump happy (bnc#880848#c20)
Michal Marek 381a19
        ts="$(head -n1 %_sourcedir/source-timestamp)"
Michal Marek 381a19
        touch -d "$ts" %buildroot/$vmlinux
Jiri Slaby c8b2d9
        touch %buildroot/$vmlinux.%{compress_vmlinux}
Michal Marek f928d6
%if 0%{?__debug_package:1}
Michal Marek 381a19
        # compress the vmlinux image after find-debuginfo.sh has processed it
Michal Marek 381a19
%global __debug_install_post %__debug_install_post \
Michal Marek 381a19
%_sourcedir/compress-vmlinux.sh %buildroot/boot/vmlinux-%kernelrelease-%build_flavor
Michal Marek 381a19
%else
Michal Marek 381a19
        %_sourcedir/compress-vmlinux.sh %buildroot/$vmlinux
Michal Marek f928d6
%endif
Michal Marek 26b7a6
        ghost_vmlinux=true
Michal Marek 411abb
    else
Michal Marek 26b7a6
        ghost_vmlinux=false
Michal Marek 411abb
    fi
Michal Marek 411abb
}
Michal Marek 411abb
Michal Marek 411abb
# architecture specifics
Michal Marek 411abb
%ifarch %ix86 x86_64
Michal Marek 411abb
    add_vmlinux --compressed
Michal Marek 411abb
    image=bzImage
Michal Marek 411abb
    cp -p arch/x86/boot/$image %buildroot/boot/vmlinuz-%kernelrelease-%build_flavor
Michal Marek 411abb
    image=vmlinuz
Michal Marek 411abb
%endif
Michal Marek c233eb
%ifarch ppc ppc64 ppc64le
Michal Marek 411abb
    add_vmlinux
Michal Marek 411abb
    image=vmlinux
Michal Marek 411abb
%endif
Michal Marek 411abb
%ifarch s390 s390x
Michal Marek 411abb
    add_vmlinux --compressed
Michal Kubecek d7ccf8
    image=image
Michal Kubecek d7ccf8
    if test ! -f arch/s390/boot/$image; then
Michal Kubecek d7ccf8
        image=bzImage
Michal Kubecek d7ccf8
    fi
Michal Kubecek d7ccf8
    cp -p arch/s390/boot/$image %buildroot/boot/image-%kernelrelease-%build_flavor
Michal Marek 411abb
    image=image
Michal Marek 411abb
    if test -e arch/s390/boot/kerntypes.o; then
Michal Marek 411abb
        cp -p arch/s390/boot/kerntypes.o %buildroot/boot/Kerntypes-%kernelrelease-%build_flavor
Michal Marek 411abb
    elif test -x "$(which dwarfextract 2>/dev/null)"; then
Michal Marek 411abb
	dwarfextract vmlinux %buildroot/boot/Kerntypes-%kernelrelease-%build_flavor || echo "dwarfextract failed ($?)"
Michal Marek 411abb
    fi
Jiri Slaby 21f820
%if "%CONFIG_KMSG_IDS" == "y"
Michal Marek 411abb
    mkdir -p %buildroot/usr/share/man/man9
Michal Marek 411abb
    find man -name '*.9' -exec install -m 644 -D '{}' %buildroot/usr/share/man/man9/ ';'
Michal Marek 411abb
%endif
Michal Marek 411abb
%endif
Alexander Graf 4c08eb
%ifarch %arm
Alexander Graf 4c08eb
    add_vmlinux --compressed
Alexander Graf 14e56c
    image=zImage
Michal Marek dd227e
    cp -p arch/arm/boot/$image %buildroot/boot/$image-%kernelrelease-%build_flavor
Alexander Graf 4c08eb
%endif
Alexander Graf 09220e
%ifarch aarch64
Alexander Graf 09220e
    add_vmlinux --compressed
Alexander Graf 09220e
    image=Image
Alexander Graf 09220e
    cp -p arch/arm64/boot/$image %buildroot/boot/$image-%kernelrelease-%build_flavor
Alexander Graf 09220e
%endif
Andreas Schwab c2885e
%ifarch riscv64
Andreas Schwab c2885e
    add_vmlinux --compressed
Andreas Schwab c2885e
    image=Image
Andreas Schwab c2885e
    cp -p arch/riscv/boot/$image %buildroot/boot/$image-%kernelrelease-%build_flavor
Andreas Schwab c2885e
%endif
Michal Marek 411abb
Guillaume GARDET bac621
# sign the modules, firmware and possibly the kernel in the buildservice
Guillaume GARDET bac621
BRP_PESIGN_FILES=""
Jiri Slaby 21f820
%if "%CONFIG_EFI_STUB" == "y"
Guillaume GARDET bac621
BRP_PESIGN_FILES="/boot/$image-%kernelrelease-%build_flavor"
Guillaume GARDET bac621
%endif
Michal Suchanek 971fc3
%ifarch s390x ppc64 ppc64le
Michal Suchanek e9175e
BRP_PESIGN_FILES="/boot/$image-%kernelrelease-%build_flavor"
Michal Suchanek e9175e
%endif
Jiri Slaby 21f820
%if "%CONFIG_MODULE_SIG" == "y"
Guillaume GARDET bac621
BRP_PESIGN_FILES="$BRP_PESIGN_FILES *.ko"
Guillaume GARDET bac621
%endif
Guillaume GARDET bac621
%ifarch %ix86
Guillaume GARDET bac621
# XXX: do not sign on x86, as the repackaging changes kernel-pae
Guillaume GARDET bac621
# from i686 to i586
Guillaume GARDET bac621
BRP_PESIGN_FILES=""
Guillaume GARDET bac621
%endif
Guillaume GARDET bac621
export BRP_PESIGN_FILES
Jiri Slaby 21f820
%if "%{compress_modules}" != "none"
Takashi Iwai cdf580
export BRP_PESIGN_COMPRESS_MODULE=%{compress_modules}
Takashi Iwai cdf580
%endif
Guillaume GARDET bac621
Michal Marek 2659f6
if test -x /usr/lib/rpm/pesign/gen-hmac; then
Michal Marek ce5bd7
	$_ -r %buildroot /boot/$image-%kernelrelease-%build_flavor
Michal Marek 2659f6
fi
Michal Marek 2659f6
Michal Marek 19b430
# Package the compiled-in certificates as DER files in /etc/uefi/certs
Michal Marek 19b430
# and have mokutil enroll them when the kernel is installed
Michal Marek 19b430
certs=()
Michal Marek 19b430
if test %CONFIG_MODULE_SIG = "y"; then
Michal Marek c6c6a9
    for f in %_sourcedir/*.crt; do
Michal Marek 19b430
            if ! test -s "$f"; then
Michal Marek 19b430
                    continue
Michal Marek 19b430
            fi
Michal Marek c6c6a9
            h=$(openssl x509 -inform PEM -fingerprint -noout -in "$f")
Michal Marek 19b430
            test -n "$h"
Michal Marek 19b430
            cert=/etc/uefi/certs/$(echo "$h" | \
Michal Marek 19b430
                sed -rn 's/^SHA1 Fingerprint=//; T; s/://g; s/(.{8}).*/\1/p').crt
Michal Marek 9d687a
            if test -e %buildroot/"$cert"; then
Michal Marek 9d687a
                    continue
Michal Marek 9d687a
            fi
Michal Marek 19b430
            mkdir -p %buildroot/etc/uefi/certs
Michal Marek c6c6a9
            openssl x509 -inform PEM -in "$f" -outform DER -out %buildroot/"$cert"
Michal Marek 19b430
            certs=("${certs[@]}" "$cert")
Michal Marek 19b430
    done
Michal Marek 19b430
fi
Michal Marek 19b430
Michal Suchanek 9b3ca3
for sub in '' '-extra'; do
Michal Marek 411abb
    case "$sub" in
Michal Suchanek a5ee24
    '') base_package=1 ;;
Michal Marek 411abb
    *) base_package=0 ;;
Michal Marek 411abb
    esac
Michal Marek 411abb
    for script in preun postun pre post devel-pre devel-post; do
Michal Marek bcca34
        if test %build_flavor = "zfcpdump"; then
Michal Marek bcca34
            : >%my_builddir/$script$sub.sh
Michal Marek bcca34
            continue
Michal Marek bcca34
        fi
Michal Marek 411abb
        sed -e "s:@KERNELRELEASE@:%kernelrelease:g" \
Michal Marek 411abb
            -e "s:@IMAGE@:$image:g" \
Michal Marek 411abb
            -e "s:@FLAVOR""@:%build_flavor:g" \
Michal Suchanek a5ee24
            -e "s:@SUBPACKAGE@:%name$sub:g" \
Michal Marek 411abb
            -e "s:@BASE_PACKAGE@:$base_package:g" \
Michal Marek 411abb
            -e "s:@RPM_VERSION_RELEASE@:%version-%release:g" \
Michal Suchanek a5ee24
            -e "s:@RPM_TARGET_CPU@:%_target_cpu:g" \
Michal Marek 411abb
	    -e "s:@CPU_ARCH_FLAVOR@:%cpu_arch_flavor:g" \
Michal Marek 411abb
            -e "s:@SRCVARIANT@:%variant:g" \
Michal Marek 411abb
            %_sourcedir/$script.sh > %my_builddir/$script$sub.sh
Michal Marek 7d1a48
        if test "$base_package" -eq 1 -a "${#certs[@]}" -gt 0; then
Michal Marek 7d1a48
            case "$script" in
Michal Marek 7d1a48
            preun | postun | post)
Michal Marek 7d1a48
                # Copy the respective scriptlet from kernel-cert-subpackage
Michal Marek 7d1a48
                sed "1,/^%%$script / d; /^%%[^%%]/,\$ d; s:@CERTS@:${certs[*]}:g" \
Michal Marek 7d1a48
                    %_sourcedir/kernel-cert-subpackage \
Michal Marek 7d1a48
                    >>"%my_builddir/$script$sub.sh"
Michal Marek 7d1a48
            esac
Michal Marek 19b430
        fi
Michal Marek 7d1a48
	# Do an exit 0 at the end of each scriptlet. If the last real command
Michal Marek 7d1a48
	# in the scriptlet (e.g. update-bootloader call, see bnc#809617)
Michal Marek 7d1a48
	# returns an error, we do not want to amplify the damage by leaving
Michal Marek 7d1a48
	# the system in an inconsistent state.
Michal Marek 7d1a48
	echo "exit 0" >>"%my_builddir/$script$sub.sh"
Michal Marek 411abb
    done
Michal Marek 411abb
done
Michal Marek 411abb
Michal Marek 0a2490
%if %build_vanilla
Michal Marek 411abb
# keep this -suffix list in sync with post.sh and postun.sh
Michal Marek 411abb
suffix=-%build_flavor
Michal Marek 411abb
%endif
Michal Marek 411abb
Michal Marek 411abb
cp -p .config %buildroot/boot/config-%kernelrelease-%build_flavor
Michal Marek 473f2d
sysctl_file=%buildroot/boot/sysctl.conf-%kernelrelease-%build_flavor
Michal Marek 473f2d
for file in %my_builddir/sysctl/{defaults,%cpu_arch/arch-defaults,%cpu_arch_flavor}; do
Michal Marek 473f2d
	if [ -f "$file" ]; then
Michal Marek 473f2d
		cat "$file"
Michal Marek 473f2d
	fi
Michal Marek 473f2d
done | sed '1i # Generated file - do not edit.' >$sysctl_file
Michal Marek 473f2d
if [ ! -s $sysctl_file ]; then
Michal Marek 473f2d
	rm $sysctl_file
Michal Marek 473f2d
fi
Michal Marek 411abb
Michal Marek 411abb
%if %install_vdso
Michal Marek 411abb
# Install the unstripped vdso's that are linked in the kernel image
Michal Marek 411abb
make vdso_install $MAKE_ARGS INSTALL_MOD_PATH=%buildroot
Michal Marek ca040a
rm -rf %buildroot/lib/modules/%kernelrelease-%build_flavor/vdso/.build-id
Michal Marek 411abb
%endif
Michal Marek 411abb
Michal Marek 411abb
# Create a dummy initrd with roughly the size the real one will have.
Michal Marek 411abb
# That way, YaST will know that this package requires some additional
Michal Marek 411abb
# space in /boot.
Michal Marek 411abb
dd if=/dev/zero of=%buildroot/boot/initrd-%kernelrelease-%build_flavor \
Michal Marek 411abb
	bs=1024 seek=2047 count=1
Michal Marek ef040f
# Also reserve some space for the kdump initrd
Michal Marek ef040f
cp %buildroot/boot/initrd-%kernelrelease-%build_flavor{,-kdump}
Martin Wilck 9e5e2a
%if 0%{?suse_version} >= 1500
Martin Wilck 9e5e2a
# Use same permissions as dracut
Martin Wilck 9e5e2a
chmod 0600 %buildroot/boot/initrd-%kernelrelease-%build_flavor{,-kdump}
Martin Wilck 9e5e2a
%endif
Michal Marek 411abb
Michal Marek 411abb
if [ %CONFIG_MODULES = y ]; then
Michal Marek 411abb
    mkdir -p %rpm_install_dir/%cpu_arch_flavor
Michal Marek 411abb
    mkdir -p %buildroot/usr/src/linux-obj/%cpu_arch
Michal Suchanek 679f5c
    install -m 755 -D -t %rpm_install_dir/%cpu_arch_flavor/scripts/mod/ scripts/mod/ksym-provides
Michal Marek 411abb
Michal Marek 9a65e4
    gzip -n -c9 < Module.symvers > %buildroot/boot/symvers-%kernelrelease-%build_flavor.gz
Michal Marek 411abb
Michal Marek 411abb
    make modules_install $MAKE_ARGS INSTALL_MOD_PATH=%buildroot
Michal Marek 411abb
Michal Marek 411abb
%ifarch s390 s390x
Michal Marek 411abb
    if test -e arch/s390/boot/kerntypes.o; then
Michal Marek 411abb
        :
Michal Marek 411abb
    elif test -x "$(which dwarfextract 2>/dev/null)" -a \
Michal Marek 411abb
	-f %buildroot/boot/Kerntypes-%kernelrelease-%build_flavor; then
Michal Marek 411abb
	find %buildroot -name "*.ko" > kofiles.list
Michal Marek 411abb
	dwarfextract %buildroot/boot/Kerntypes-%kernelrelease-%build_flavor -C kofiles.list || echo "dwarfextract failed ($?)"
Michal Marek 411abb
    fi
Michal Marek 411abb
%endif
Michal Marek 411abb
Michal Marek 411abb
    # Also put the resulting file in %rpm_install_dir/%cpu_arch/%build_flavor
Michal Marek 411abb
    # so that kernel-devel + kernel-%build_flavor is sufficient for building
Michal Marek 411abb
    # modules that have modversions as well.
Michal Marek 411abb
    mkdir -p %rpm_install_dir/%cpu_arch/%build_flavor
Michal Marek 411abb
    cp Module.symvers %rpm_install_dir/%cpu_arch/%build_flavor
Michal Marek 411abb
Joao 0b1b4d
    # List of symbols that are used to generate kernel livepatches
Michal Suchanek e35f14
    %if 0%{?klp_symbols}
Joao 0b1b4d
        cp Symbols.list %rpm_install_dir/%cpu_arch/%build_flavor
Miroslav Benes 98e5a9
        echo %obj_install_dir/%cpu_arch/%build_flavor/Symbols.list > %my_builddir/livepatch-files.no_dir
Miroslav Benes 98e5a9
Jiri Slaby 21f820
        %if "%CONFIG_LIVEPATCH_IPA_CLONES" == "y"
Miroslav Benes 98e5a9
            find %kernel_build_dir -name "*.ipa-clones" ! -size 0 | sed -e 's|^%kernel_build_dir/||' > ipa-clones.list
Miroslav Benes 98e5a9
            cp ipa-clones.list %rpm_install_dir/%cpu_arch/%build_flavor
Miroslav Benes 98e5a9
            echo %obj_install_dir/%cpu_arch/%build_flavor/ipa-clones.list >> %my_builddir/livepatch-files.no_dir
Miroslav Benes 98e5a9
            tar -C %kernel_build_dir --verbatim-files-from -T ipa-clones.list -cf- | tar -C %rpm_install_dir/%cpu_arch/%build_flavor -xvf-
Miroslav Benes 98e5a9
            cat ipa-clones.list | sed -e 's|^|%obj_install_dir/%cpu_arch/%build_flavor/|' >> %my_builddir/livepatch-files.no_dir
Miroslav Benes 98e5a9
        %endif
Joao 0b1b4d
    %endif
Joao 0b1b4d
Michal Marek 411abb
    # Table of types used in exported symbols (for modversion debugging).
Michal Marek 411abb
    %_sourcedir/modversions --pack . > %buildroot/boot/symtypes-%kernelrelease-%build_flavor
Michal Marek 411abb
    if [ -s %buildroot/boot/symtypes-%kernelrelease-%build_flavor ]; then
Michal Marek 9a65e4
	gzip -n -9 %buildroot/boot/symtypes-%kernelrelease-%build_flavor
Michal Marek 411abb
    else
Michal Marek 411abb
	rm -f %buildroot/boot/symtypes-%kernelrelease-%build_flavor
Michal Marek 411abb
    fi
Michal Marek 411abb
Michal Marek 411abb
    # Some architecture's $(uname -m) output is different from the ARCH
Michal Marek 411abb
    # parameter that needs to be passed to kbuild. Create symlinks from
Michal Marek 411abb
    # $(uname -m) to the ARCH directory.
Michal Marek 88a632
    if [ ! -e %rpm_install_dir/%kmp_target_cpu ]; then
Michal Marek 88a632
        ln -sf %cpu_arch %rpm_install_dir/%kmp_target_cpu
Michal Marek 88a632
        ln -sf %cpu_arch %buildroot/usr/src/linux-obj/%kmp_target_cpu
Michal Marek 411abb
    fi
Michal Marek 411abb
Michal Marek 411abb
    # We were building in %my_builddir/linux-%srcversion, but the sources will
Michal Marek 411abb
    # later be installed in /usr/src/linux-%srcversion-%source_rel. Fix up the
Michal Marek 411abb
    # build symlink.
Michal Marek 411abb
    rm -f %buildroot/lib/modules/%kernelrelease-%build_flavor/{source,build}
Michal Marek 411abb
    ln -s %src_install_dir \
Michal Marek 411abb
	%buildroot/lib/modules/%kernelrelease-%build_flavor/source
Michal Marek 411abb
    ln -s %obj_install_dir/%cpu_arch/%build_flavor \
Michal Marek 411abb
	%buildroot/lib/modules/%kernelrelease-%build_flavor/build
Michal Marek 411abb
Michal Marek 411abb
    # Abort if there are any undefined symbols
Michal Marek 411abb
    msg="$(/sbin/depmod -F %buildroot/boot/System.map-%kernelrelease-%build_flavor \
Michal Marek 411abb
			-b %buildroot -ae %kernelrelease-%build_flavor 2>&1)"
Michal Marek 411abb
    if [ $? -ne 0 ] || echo "$msg" | grep  'needs unknown symbol'; then
Michal Marek 411abb
	exit 1
Michal Marek 411abb
    fi
Michal Marek 411abb
Michal Marek 411abb
    %_sourcedir/split-modules -d %buildroot \
Michal Marek 411abb
	-o %my_builddir \
Michal Marek 39da39
	-b %kernel_build_dir \
Jiri Slaby 21f820
%if "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y"
Michal Marek add86b
	-e \
Michal Marek add86b
%endif
Michal Marek 88d5da
%if ! %supported_modules_check
Jiri Slaby 32df88
	-i \
Michal Marek 88d5da
%endif
Jiri Slaby 32df88
	%nil
Michal Marek 411abb
%if ! %split_extra
Michal Marek 411abb
    cat %my_builddir/unsupported-modules >>%my_builddir/main-modules
Michal Marek 411abb
%endif
Michal Marek 411abb
Michal Marek 26e4b7
    # The modules.dep file is sorted randomly which produces strange file
Michal Marek 26e4b7
    # checksums. As the file is not included in the resulting RPM, it's
Michal Marek 26e4b7
    # pointless to rely on its contents. Replacing by zeros to make the
Michal Marek 26e4b7
    # checksums always the same for several builds of the same package.
Michal Suchanek 75691f
    test -s %buildroot/lib/modules/%kernelrelease-%build_flavor/modules.dep && \
Michal Marek 26e4b7
    dd if=/dev/zero of=%buildroot/lib/modules/%kernelrelease-%build_flavor/modules.dep ibs=`stat -c%s %buildroot/lib/modules/%kernelrelease-%build_flavor/modules.dep` count=1
Michal Marek 26e4b7
Michal Marek 411abb
    res=0
Michal Marek 411abb
    if test -e %my_builddir/kabi/%cpu_arch/symvers-%build_flavor; then
Michal Marek 411abb
        # check for kabi changes
Michal Marek 411abb
        %_sourcedir/kabi.pl --rules %my_builddir/kabi/severities \
Michal Marek 411abb
            %my_builddir/kabi/%cpu_arch/symvers-%build_flavor \
Michal Marek 411abb
            Module.symvers || res=$?
Michal Marek 411abb
    fi
Michal Marek 411abb
    if [ $res -ne 0 ]; then
Michal Marek 19e7e5
	# %ignore_kabi_badness is defined in the Kernel:* projects in the
Michal Marek 19e7e5
	# OBS to be able to build the KOTD in spite of kabi errors
Michal Marek 19e7e5
	if [ 0%{?ignore_kabi_badness} -eq 0 -a \
Michal Marek 19e7e5
	     ! -e %my_builddir/kabi/%cpu_arch/ignore-%build_flavor -a \
Michal Marek 19e7e5
	     ! -e %_sourcedir/IGNORE-KABI-BADNESS ]; then
Michal Marek 411abb
	    echo "Create a file IGNORE-KABI-BADNESS in the kernel-source" \
Michal Marek 411abb
		 "directory to build this kernel even though its badness is" \
Michal Marek 411abb
		 "higher than allowed for an official kernel."
Michal Marek 411abb
	   exit 1
Michal Marek 411abb
	fi
Michal Marek 411abb
    fi
Michal Marek 411abb
Takashi Iwai e41de0
    # Check the license in each module
Takashi Iwai e41de0
    if ! sh %_sourcedir/check-module-license %buildroot; then
Takashi Iwai e41de0
	echo "Please fix the missing licenses!"
Jiri Slaby 21f820
%if "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y"
Takashi Iwai e41de0
	exit 1
Takashi Iwai e41de0
%endif
Takashi Iwai e41de0
    fi
Takashi Iwai e41de0
Jiri Slaby 07da11
    # These files are required for building external modules
Michal Kubecek fe37c1
    for FILE in arch/powerpc/lib/crtsavres.o arch/arm64/kernel/ftrace-mod.o \
Michal Kubecek fe37c1
		arch/*/kernel/macros.s scripts/module.lds
Michal Kubecek fe37c1
    do
Jiri Slaby 07da11
	    if [ -f %kernel_build_dir/$FILE ]; then
Jiri Slaby 07da11
		echo $FILE >> %my_builddir/obj-files
Jiri Slaby 07da11
	    fi
Jiri Slaby 07da11
    done
Michal Marek dd227e
Michal Suchanek 939a79
    tar --exclude=\*.ipa-clones --exclude=.config.old --exclude=.kernel-binary.spec.buildenv \
Michal Suchanek 939a79
        -cf - -T %my_builddir/obj-files | \
Michal Marek 411abb
	tar -xf - -C %rpm_install_dir/%cpu_arch_flavor
Michal Marek 411abb
    # bnc#507084
Michal Marek 411abb
    find %rpm_install_dir/%cpu_arch_flavor/scripts -type f -perm -111 | \
Michal Marek 411abb
        while read f; do
Michal Marek 411abb
            case "$(file -b "$f")" in
Michal Marek 411abb
            ELF\ *\ executable*)
Michal Marek 411abb
                strip "$f"
Michal Marek 411abb
            esac
Michal Marek 411abb
        done
Michal Marek 8eb070
    # Recreate the generated Makefile with correct path
Michal Marek 2d2ec7
    sh ../scripts/mkmakefile ../../../%{basename:%src_install_dir} \
Michal Marek 8eb070
        %rpm_install_dir/%cpu_arch_flavor \
Michal Marek 8331f4
        $(echo %srcversion | sed -r 's/^([0-9]+)\.([0-9]+).*/\1 \2/')
Michal Marek 411abb
fi
Michal Marek 411abb
Michal Suchanek 0b0b5c
rm -rf %{buildroot}/lib/firmware
Michal Suchanek 0b0b5c
Michal Marek 411abb
add_dirs_to_filelist() {
Michal Marek 411abb
    sed -rn '
Michal Marek 411abb
        # print file name
Michal Marek 411abb
        p
Michal Marek 411abb
        # remove filelist macros
Michal Marek 411abb
        s:%%[a-z]+(\([^)]+\))? ?::g
Michal Marek 411abb
        # add %%dir prefix
Michal Marek 411abb
        s:^:%%dir :
Michal Marek 411abb
        # print all parents
Michal Marek 411abb
        :a
Michal Marek 411abb
            # skip directories owned by other packages
Michal Marek 411abb
            s:^%%dir (/boot|/etc|/lib/(modules|firmware)|/usr/src)/[^/]+$::
Michal Marek 411abb
            s:/[^/]+$::p
Michal Marek 411abb
        ta
Michal Marek 411abb
    ' "$@" | sort -u
Michal Marek 411abb
}
Michal Marek 411abb
Michal Marek 411abb
# Collect the file lists.
Miroslav Benes 98e5a9
if [ -f %my_builddir/livepatch-files.no_dir ] ; then
Miroslav Benes 98e5a9
    cat %my_builddir/livepatch-files.no_dir | add_dirs_to_filelist > %my_builddir/livepatch-files
Miroslav Benes 98e5a9
fi
Miroslav Benes 98e5a9
Michal Marek 3375bd
shopt -s nullglob dotglob
Michal Marek 411abb
> %my_builddir/kernel-devel.files
Michal Marek 02bb97
for file in %buildroot/boot/symtypes* %buildroot/lib/modules/*/{build,source}; do
Michal Marek 411abb
	f=${file##%buildroot}
Michal Marek d89b96
	echo "$f"
Michal Marek d89b96
done | add_dirs_to_filelist >%my_builddir/kernel-devel.files
Michal Suchanek 558776
( cd %buildroot ; find .%obj_install_dir/%cpu_arch_flavor -type f ; ) | \
Michal Suchanek 558776
sed -e 's/^[.]//' | grep -v -e '[.]ipa-clones$' -e '/Symbols[.]list$' -e '/ipa-clones[.]list$'| \
Michal Suchanek 558776
add_dirs_to_filelist >> %my_builddir/kernel-devel.files
Michal Marek 411abb
Michal Suchanek 606c9d
{   echo %ghost /boot/$image$suffix
Michal Suchanek 606c9d
    echo %ghost /boot/initrd$suffix
Michal Suchanek 606c9d
    cd %buildroot
Michal Marek ef040f
    for f in boot/*; do
Michal Marek ef040f
        if test -L "$f"; then
Michal Marek ef040f
            echo "%%ghost /$f"
Michal Marek ef040f
            continue
Michal Marek ef040f
        elif test ! -f "$f"; then
Michal Marek ef040f
            continue
Michal Marek ef040f
        fi
Michal Marek ef040f
        case "$f" in
Michal Marek ef040f
        boot/initrd-*)
Michal Marek ef040f
            echo "%%ghost /$f"
Michal Marek 26b7a6
            continue
Michal Marek 26b7a6
            ;;
Jiri Slaby c8b2d9
        boot/vmlinux-*.%{compress_vmlinux})
Michal Marek 26b7a6
            ;;
Michal Marek 26b7a6
        boot/vmlinux-*)
Michal Marek 26b7a6
            if $ghost_vmlinux; then
Michal Marek 26b7a6
                echo "%%ghost /$f"
Michal Marek 26b7a6
                continue
Michal Marek 26b7a6
            fi
Michal Marek ef040f
            ;;
Michal Marek f1e303
        boot/symtypes*)
Michal Marek f1e303
            continue
Michal Marek f1e303
            ;;
Michal Marek ef040f
        esac
Michal Marek ef040f
        echo "%%attr(0644, root, root) /$f"
Michal Marek ef040f
    done
Michal Marek 411abb
Michal Marek 411abb
    if [ %CONFIG_MODULES = y ]; then
Michal Marek 411abb
	find lib/modules/%kernelrelease-%build_flavor \
Michal Marek 411abb
	    -type d -o \
Michal Marek 411abb
	    \( -path '*/modules.*' ! -path '*/modules.order' \
Jiri Slaby eb88df
	     ! -path '*/modules.builtin' \
Jiri Slaby eb88df
	     ! -path '*/modules.builtin.modinfo' \) -printf '%%%%ghost /%%p\n' \
Michal Marek f1e303
	       -o -name '*.ko' -prune -o -type f -printf '/%%p\n'
Michal Marek 411abb
	cat %my_builddir/base-modules
Michal Marek 411abb
    fi
Michal Marek ef1b7d
    if test %CONFIG_MODULE_SIG = "y" -a -d etc/uefi/certs; then
Michal Marek 19b430
        find etc/uefi/certs -type f -printf '/%%p\n'
Michal Marek 19b430
    fi
Michal Marek f68583
    if test -d lib/firmware/%kernelrelease-%build_flavor; then
Michal Marek f68583
        echo "%%dir /lib/firmware/%kernelrelease-%build_flavor"
Michal Marek f68583
        cat %my_builddir/base-firmware
Michal Marek f68583
    fi
Michal Marek 411abb
    if [ -e .%_docdir/%name ]; then
Michal Marek 411abb
	echo "%%doc %_docdir/%name"
Michal Marek 411abb
    fi
Michal Marek f1e303
} | sort -u | add_dirs_to_filelist >%my_builddir/kernel-base.files
Michal Marek 411abb
Michal Marek f68583
{
Michal Marek f68583
    add_dirs_to_filelist %my_builddir/{kernel-base.files,main-modules}
Takashi Iwai c03eb7
    if test -d %buildroot/lib/firmware/%kernelrelease-%build_flavor; then
Takashi Iwai a09ef6
	echo "/lib/firmware/%kernelrelease-%build_flavor"
Takashi Iwai a09ef6
    fi
Michal Marek f68583
} > %my_builddir/kernel-main.files
Michal Marek 411abb
%if %split_extra
Michal Marek 411abb
    add_dirs_to_filelist %my_builddir/unsupported-modules > %my_builddir/kernel-extra.files
Martin Wilck 0d585a
Martin Wilck 0d585a
%if 0%{?sle_version} >= 150000
Martin Wilck 0d585a
    # By default, loading unsupported modules is disabled on SLE through
Martin Wilck 0d585a
    # /etc/modprobe.d/10-unsupported-modules.conf from the suse-module-tools
Martin Wilck 0d585a
    # package.
Martin Wilck 0d585a
    # modules in kernel-$flavor-extra don't have the supported flag set,
Martin Wilck 0d585a
    # yet loading them should be possible if the package is installed.
Martin Wilck 0d585a
    # CAUTION PACKAGERS: The file content below must not change between
Martin Wilck 0d585a
    # kernel versions, otherwise file conflicts might arise with
Martin Wilck 0d585a
    # multiversion(kernel).
Martin Wilck 0d585a
Martin Wilck 0d585a
    mkdir -p %buildroot/etc/modprobe.d
Martin Wilck 0d585a
    cat >%buildroot/etc/modprobe.d/20-kernel-%{build_flavor}-extra.conf <
Martin Wilck 0d585a
# This file overrides the default from 10-unsupported-modules.conf.
Martin Wilck 0d585a
# This is necessary to load kernel modules from the
Martin Wilck 0d585a
# kernel-%{build_flavor}-extra package.
Martin Wilck 0d585a
#
Martin Wilck 0d585a
# WARNING: loading unsupported modules may compromise SLE support.
Martin Wilck 0d585a
# Please read the comments in 10-unsupported-modules.conf.
Martin Wilck 0d585a
allow_unsupported_modules 1
Martin Wilck 0d585a
EOF
Martin Wilck 0d585a
    echo "%%dir /etc/modprobe.d" >> %my_builddir/kernel-extra.files
Martin Wilck 0d585a
    echo '%%config(noreplace) /etc/modprobe.d/20-kernel-%{build_flavor}-extra.conf' >> %my_builddir/kernel-extra.files
Martin Wilck 0d585a
%endif
Michal Marek 411abb
%endif
Michal Marek 39da39
for f in %my_builddir/*-kmp-modules; do
Michal Marek 39da39
	f2=${f%%-modules}.files
Michal Marek 39da39
	add_dirs_to_filelist "$f" >"$f2"
Michal Marek 39da39
done
Michal Marek 39da39
Michal Suchanek 2cb2be
if [ %CONFIG_MODULES = y ]; then
Michal Suchanek 2cb2be
  install -m 644 %_sourcedir/modules.fips %{buildroot}/lib/modules/%kernelrelease-%build_flavor/modules.fips
Michal Suchanek 2cb2be
  echo /lib/modules/%kernelrelease-%build_flavor/modules.fips >> %my_builddir/kernel-base.files
Michal Suchanek e42315
  echo /lib/modules/%kernelrelease-%build_flavor/modules.fips >> %my_builddir/kernel-main.files
Michal Suchanek 2cb2be
fi
Michal Suchanek f70bab
Michal Marek 411abb
# Hardlink duplicate files automatically (from package fdupes): It doesn't save
Michal Marek 411abb
# much, but it keeps rpmlint from breaking the package build. Note that we skip
Michal Marek 411abb
# /usr/src/linux-obj intentionally, to not accidentally break timestamps there
Michal Marek 411abb
%fdupes $RPM_BUILD_ROOT/lib
Michal Marek 411abb
Michal Marek 411abb
%preun -f preun.sh
Michal Marek aebe2d
Michal Marek 411abb
%postun -f postun.sh
Michal Marek aebe2d
Michal Marek 411abb
%pre -f pre.sh
Michal Marek 411abb
Michal Marek aebe2d
%post -f post.sh
Michal Marek 411abb
Michal Marek 411abb
%files -f kernel-main.files
Andreas Jaeger e7e374
%defattr(-, root, root)
Michal Marek aebe2d
Michal Marek 411abb
%package extra
Michal Marek 411abb
Summary:        @SUMMARY@ - Unsupported kernel modules
Michal Marek 411abb
Group:          System/Kernel
Michal Marek 411abb
Url:            http://www.kernel.org/
Michal Suchanek b4ec51
Provides:       %name-extra_%_target_cpu = %version-%source_rel
Michal Marek 411abb
Provides:       kernel-extra = %version-%source_rel
Michal Marek 0b9e9a
Provides:       multiversion(kernel)
Michal Suchanek b4ec51
Requires:       %{name}_%_target_cpu = %version-%source_rel
Michal Marek 411abb
Requires(pre):  coreutils awk
Michal Marek 91f0a2
Requires(post): modutils
Michal Marek 411abb
Requires(post): perl-Bootloader
Michal Marek 411abb
Requires(post): mkinitrd
Michal Marek b6f8d7
@PROVIDES_OBSOLETES_EXTRA@
Michal Marek ffb73e
%obsolete_rebuilds %name-extra
Takashi Iwai 8f05b9
Supplements:    packageand(product(SLED):%{name}_%_target_cpu)
Takashi Iwai 8f05b9
Supplements:    packageand(product(sle-we):%{name}_%_target_cpu)
Michal Marek 411abb
%ifarch %ix86
Michal Marek 411abb
Conflicts:      libc.so.6()(64bit)
Michal Marek 411abb
%endif
Michal Marek 411abb
Michal Marek 411abb
%description extra
Michal Marek 411abb
@DESCRIPTION@
Michal Marek 411abb
Cyril Hrubis 8719d6
This package contains additional modules not supported by SUSE.
Michal Marek 411abb
Michal Marek 411abb
Michal Marek aebe2d
%source_timestamp
Michal Marek 411abb
%preun extra -f preun-extra.sh
Michal Marek aebe2d
Michal Marek 411abb
%postun extra -f postun-extra.sh
Michal Marek aebe2d
Michal Marek 411abb
%pre extra -f pre-extra.sh
Michal Marek aebe2d
Michal Marek 411abb
%post extra -f post-extra.sh
Michal Marek 411abb
Michal Marek 411abb
%if %split_extra
Michal Marek aebe2d
Michal Marek 411abb
%files extra -f kernel-extra.files
Michal Marek 411abb
%defattr(-, root, root)
Michal Marek 411abb
%endif
Michal Marek 411abb
Jiri Slaby 21f820
%if "%CONFIG_KMSG_IDS" == "y"
Michal Marek aebe2d
Michal Marek 411abb
%package man
David Sterba 9050a3
Summary:        The collection of man pages generated by the kmsg script
Michal Marek 411abb
Group:          System/Kernel
Michal Marek 411abb
Michal Marek 411abb
%description man
Michal Marek 411abb
This package includes the man pages that have been generated from the
Michal Marek 411abb
kmsg message documentation comments.
Michal Marek 411abb
Michal Marek 411abb
Michal Marek aebe2d
%source_timestamp
Michal Marek 411abb
%files man
Michal Marek 411abb
%defattr(-,root,root)
Michal Marek 411abb
/usr/share/man/man9/*
Michal Marek 411abb
%endif
Michal Marek 411abb
Michal Marek 411abb
%package devel
Michal Marek 411abb
Summary:        Development files necessary for building kernel modules
Michal Marek 411abb
Group:          Development/Sources
Michal Marek 411abb
Provides:       %name-devel = %version-%source_rel
Michal Marek 0b9e9a
Provides:       multiversion(kernel)
Takashi Iwai 794be7
Requires:       %{name} = %version-%source_rel
Michal Marek fbbc98
%if ! %build_vanilla
Michal Marek 411abb
Requires:       kernel-devel%variant = %version-%source_rel
Michal Marek a3cd25
Recommends:     make
Michal Marek a3cd25
Recommends:     gcc
Michal Marek a3cd25
Recommends:     perl
Jiri Kosina cad1ef
# for objtool
Jiri Kosina cad1ef
Requires:	libelf-devel
Michal Marek 411abb
Supplements:    packageand(%name:kernel-devel%variant)
Michal Marek fbbc98
%else
Michal Marek fbbc98
Requires:       kernel-source-vanilla = %version-%source_rel
Michal Marek fbbc98
Supplements:    packageand(%name:kernel-source-vanilla)
Michal Marek fbbc98
%endif
Michal Marek b6f8d7
@PROVIDES_OBSOLETES_DEVEL@
Michal Marek ffb73e
%obsolete_rebuilds %name-devel
Michal Marek 252056
PreReq:         coreutils
Michal Marek 411abb
Michal Marek 411abb
%description devel
Michal Marek 411abb
This package contains files necessary for building kernel modules (and
Michal Marek 411abb
kernel module packages) against the %build_flavor flavor of the kernel.
Michal Marek 411abb
Michal Marek 411abb
Michal Marek aebe2d
%source_timestamp
Michal Marek 1cf983
Jiri Slaby 21f820
%if "%CONFIG_MODULES" == "y"
Michal Marek aebe2d
Michal Marek 411abb
%pre devel -f devel-pre.sh
Michal Marek aebe2d
Michal Marek 411abb
%post devel -f devel-post.sh
Michal Marek aebe2d
Michal Marek 411abb
%files devel -f kernel-devel.files
Michal Marek 411abb
%defattr(-,root,root)
Michal Marek 411abb
%dir /usr/src/linux-obj
Michal Marek 411abb
%dir /usr/src/linux-obj/%cpu_arch
Michal Marek 411abb
%ghost /usr/src/linux-obj/%cpu_arch_flavor
Michal Suchanek a1728f
%exclude %obj_install_dir/%cpu_arch_flavor/Symbols.list
Jiri Slaby 21f820
%if "%kmp_target_cpu" != "%cpu_arch"
Michal Marek 88a632
%obj_install_dir/%kmp_target_cpu
Michal Marek 88a632
/usr/src/linux-obj/%kmp_target_cpu
Michal Marek 411abb
%endif
Michal Marek 411abb
Jiri Slaby 21f820
%if "%livepatch" != "" && "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y" && "%variant" == "" && %build_default
Jiri Slaby 21f820
%if "%livepatch" == "kgraft"
Michal Suchanek 88241e
%define patch_package %{livepatch}-patch
Michal Suchanek 88241e
%else
Michal Suchanek 88241e
%define patch_package kernel-%{livepatch}
Michal Suchanek 88241e
%endif
Michal Suchanek 88241e
%package %{livepatch}
Michal Suchanek 88241e
Summary:        Metapackage to pull in matching %patch_package package
Michal Marek 0439a4
Group:          System/Kernel
Michal Suchanek 16f681
Requires:       %{patch_package}-%(echo %{version}-%{source_rel} | sed 'y/\./_/')-%{build_flavor}
Libor Pechacek 050081
Provides:	kernel-default-kgraft = %version
Libor Pechacek 050081
Provides:	kernel-xen-kgraft = %version
Michal Suchanek d2ab97
Provides:       multiversion(kernel)
Michal Suchanek 25f769
%if "%livepatch" != "kgraft"
Libor Pechacek 050081
Obsoletes:	kernel-default-kgraft < %version
Libor Pechacek 050081
Obsoletes:	kernel-xen-kgraft < %version
Michal Suchanek 25f769
%endif
Michal Marek 0439a4
Michal Suchanek 88241e
%description %{livepatch}
Michal Suchanek 88241e
This is a metapackage that pulls in the matching %patch_package package for a
Michal Marek 0439a4
given kernel version. The advantage of the metapackage is that its name is
Michal Suchanek 36acf9
static, unlike the %{patch_package}-<kernel-version>-flavor package names.
Michal Marek 0439a4
Michal Suchanek 88241e
%files %{livepatch}
Michal Marek 0439a4
# rpmlint complains about empty packages, so lets own something
Michal Marek 0439a4
%defattr(-, root, root)
Michal Marek 0439a4
%dir /lib/modules/%kernelrelease-%build_flavor
Michal Marek 9bab96
%endif
Michal Marek 0439a4
Michal Suchanek 16f681
%if 0%{?klp_symbols} && "%livepatch" != ""
Michal Suchanek 88241e
%package %{livepatch}-devel
Michal Suchanek 88241e
Summary:	Kernel symbols file used during kGraft patch development
Joao 0b1b4d
Group:		System/Kernel
Joao 0b1b4d
Provides:	klp-symbols = %version
Joao 0b1b4d
Michal Suchanek 88241e
%description %{livepatch}-devel
Joao 0b1b4d
This package brings a file named Symbols.list, which contains a list of all
Joao 0b1b4d
kernel symbols and its respective kernel object . This list is to be used by
Joao 0b1b4d
the klp-convert tool, which helps livepatch developers by enabling automatic
Joao 0b1b4d
symbol resolution.
Joao 0b1b4d
Miroslav Benes 98e5a9
%files %{livepatch}-devel -f livepatch-files
Joao 0b1b4d
%endif
Joao 0b1b4d
Jiri Slaby 21f820
%if "%CONFIG_SUSE_KERNEL_SUPPORTED" == "y"
Michal Marek 09cb6b
# BEGIN KMP
Michal Marek 09cb6b
%package -n @KMP_NAME@-%build_flavor
Michal Marek 09cb6b
Summary:        @KMP_SUMMARY@
Michal Marek 09cb6b
Group:          System/Kernel
Michal Suchanek b4ec51
Requires:       %name = %version-%source_rel
Michal Suchanek b4ec51
Provides:       @KMP_NAME@ = %version-%source_rel
Michal Marek a3cd25
Provides:       multiversion(kernel)
Michal Marek 58d21f
# tell weak-modules2 to ignore this package
Michal Marek 58d21f
Provides:       kmp_in_kernel
Michal Marek 58d21f
Requires(post): suse-module-tools >= 12.4
Michal Marek 88d612
@KMP_DEPS@
Michal Marek 09cb6b
Michal Marek 09cb6b
%description -n @KMP_NAME@-%build_flavor
Michal Marek 09cb6b
@KMP_DESCRIPTION@
Michal Marek 09cb6b
Michal Marek 95f8b9
%post -n @KMP_NAME@-%build_flavor
Michal Marek 95f8b9
wm2=/usr/lib/module-init-tools/weak-modules2
Michal Marek 95f8b9
nvr=@KMP_NAME@-%build_flavor-%version-%release
Michal Marek 95f8b9
if test -x "$wm2"; then
Michal Marek 95f8b9
	rpm -ql "$nvr" | INITRD_IN_POSTTRANS=1 /bin/bash -${-/e/} "$wm2" \
Michal Marek 95f8b9
	--add-kernel-modules %kernelrelease-%build_flavor
Michal Marek 95f8b9
fi
Michal Marek 95f8b9
Michal Marek 95f8b9
%posttrans -n @KMP_NAME@-%build_flavor
Michal Marek 95f8b9
%{?regenerate_initrd_posttrans}
Michal Marek 95f8b9
Michal Marek 95f8b9
%preun -n @KMP_NAME@-%build_flavor
Michal Marek 95f8b9
nvr=@KMP_NAME@-%build_flavor-%version-%release
Takashi Iwai e32ee2
rpm -ql "$nvr" | grep '\.ko\(\.xz\)\?$' > "/var/run/rpm-$nvr-modules"
Michal Marek 95f8b9
Michal Marek 95f8b9
%postun -n @KMP_NAME@-%build_flavor
Michal Marek 95f8b9
wm2=/usr/lib/module-init-tools/weak-modules2
Michal Marek 95f8b9
nvr=@KMP_NAME@-%build_flavor-%version-%release
Michal Marek 95f8b9
if test -x "$wm2"; then
Michal Marek 95f8b9
	/bin/bash -${-/e/} "$wm2" < "/var/run/rpm-$nvr-modules" \
Michal Marek 95f8b9
	--remove-kernel-modules %kernelrelease-%build_flavor
Michal Marek 95f8b9
fi
Michal Marek 95f8b9
rm -f "/var/run/rpm-$nvr-modules"
Michal Marek 95f8b9
Michal Marek 09cb6b
%files -n @KMP_NAME@-%build_flavor -f @KMP_NAME@.files
Michal Marek 09cb6b
%defattr(-, root, root)
Michal Marek 09cb6b
# END KMP
Michal Marek a259f7
%endif # %CONFIG_SUSE_KERNEL_SUPPORTED
Michal Marek 1cf983
%endif # %CONFIG_MODULES
Michal Marek 1cf983
Michal Marek 411abb
%changelog