Michal Marek 411abb
#
Michal Marek aebe2d
# spec file for package kernel-source@VARIANT@
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
77b5f8
# Please submit bugfixes or comments via https://bugs.opensuse.org/
Michal Marek 411abb
#
Michal Marek 411abb
Michal Marek 0b9e9a
Michal Marek 411abb
%define srcversion @SRCVERSION@
Michal Marek 411abb
%define patchversion @PATCHVERSION@
Michal Marek 411abb
%define variant @VARIANT@%{nil}
Michal Marek 411abb
Michal Marek 411abb
%include %_sourcedir/kernel-spec-macros
Michal Marek 411abb
Michal Marek 411abb
%define src_install_dir usr/src/linux-%kernelrelease%variant
Michal Marek 411abb
e350c1
# if undefined use legacy location of before SLE15
e350c1
%if %{undefined _rpmmacrodir}
e350c1
%define _rpmmacrodir /etc/rpm
e350c1
%endif
e350c1
Michal Marek 411abb
Name:           kernel-source@VARIANT@
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
77b5f8
Summary:        The Linux Kernel Sources
77b5f8
License:        GPL-2.0-only
77b5f8
Group:          Development/Sources
77b5f8
URL:            https://www.kernel.org/
Michal Marek 411abb
AutoReqProv:    off
Michal Suchanek bb95fe
%if 0%{?suse_version} > 1500 || 0%{?sle_version} > 150300
Michal Suchanek bb95fe
BuildRequires:  bash-sh
Michal Suchanek bb95fe
%endif
Michal Marek 0b9e9a
BuildRequires:  coreutils
Michal Marek 411abb
BuildRequires:  fdupes
Michal Marek 0b9e9a
BuildRequires:  sed
Michal Marek 411abb
Requires(post): coreutils sed
Michal Marek 411abb
Provides:       %name = %version-%source_rel
Michal Suchanek 219bce
Provides:       %name-srchash-@COMMIT_FULL@
Michal Marek 0b9e9a
Provides:       linux
Michal Marek 0b9e9a
Provides:       multiversion(kernel)
Michal Marek 27d9f6
Source0:        @TARBALL_URL@linux-%srcversion.tar.xz
Michal Suchanek e76c4c
%if "@TARBALL_URL@" != ""
Michal Suchanek e76c4c
Source1:        @TARBALL_URL@linux-%srcversion.tar.sign
Michal Suchanek e76c4c
Source2:        linux.keyring
Michal Suchanek e76c4c
%endif
Michal Marek 411abb
Source3:        kernel-source.rpmlintrc
Michal Marek 411abb
Source14:       series.conf
Michal Marek 411abb
Source16:       guards
Michal Marek 411abb
Source17:       apply-patches
Michal Marek 411abb
Source21:       config.conf
Michal Marek 411abb
Source23:       supported.conf
Michal Marek 411abb
Source33:       check-for-config-changes
Michal Marek aebe2d
Source35:       group-source-files.pl
Michal Marek 9c9ce6
Source36:       README.PATCH-POLICY.SUSE
Michal Marek 411abb
Source37:       README.SUSE
Michal Marek 411abb
Source38:       README.KSYMS
Michal Marek 411abb
Source39:       config-options.changes.txt
Michal Marek 411abb
Source40:       source-timestamp
Michal Marek 007a83
Source46:       split-modules
Michal Marek 007a83
Source47:       modversions
Michal Marek 411abb
Source48:       macros.kernel-source
Michal Marek 411abb
Source49:       kernel-module-subpackage
Michal Marek 411abb
Source50:       kabi.pl
Michal Marek 411abb
Source51:       mkspec
Michal Marek 411abb
Source52:       kernel-source%variant.changes
Michal Marek 411abb
Source53:       kernel-source.spec.in
Michal Marek 411abb
Source54:       kernel-binary.spec.in
Michal Marek 411abb
Source55:       kernel-syms.spec.in
Michal Marek 411abb
Source56:       kernel-docs.spec.in
Michal Marek d8f177
Source57:       kernel-cert-subpackage
Michal Marek 65a07f
Source58:       constraints.in
Michal Marek 411abb
Source60:       config.sh
Michal Marek 411abb
Source61:       compute-PATCHVERSION.sh
Michal Marek 4037e1
Source62:       old-flavors
Michal Marek 411abb
Source63:       arch-symbols
Michal Marek 411abb
Source64:       package-descriptions
Michal Marek 411abb
Source65:       kernel-spec-macros
Michal Marek 411abb
Source67:       log.sh
Michal Marek e3c78c
Source68:       host-memcpy-hack.h
Michal Marek 819d1f
Source69:       try-disable-staging-driver
Michal Marek b2e5f7
Source70:       kernel-obs-build.spec.in
Michal Marek b2e5f7
Source71:       kernel-obs-qa.spec.in
Michal Marek 381a19
Source72:       compress-vmlinux.sh
Michal Marek 3a67f5
Source73:       dtb.spec.in.in
Michal Marek 3a67f5
Source74:       mkspec-dtb
Jeff Mahoney 0ca61c
Source75:       release-projects
Jeff Mahoney 031ed9
Source76:       check-module-license
Joao 0b1b4d
Source77:       klp-symbols
Michal Suchanek f70bab
Source78:       modules.fips
Michal Suchanek a5ee24
Source79:       splitflist
Michal Suchanek a5ee24
Source80:       mergedep
Michal Suchanek a5ee24
Source81:       moddep
Michal Suchanek a5ee24
Source82:       modflist
Michal Suchanek ad7c22
Source83:       kernel-subpackage-build
Michal Suchanek ad7c22
Source84:       kernel-subpackage-spec
Michal Suchanek ad7c22
Source85:       kernel-default-base.spec.txt
Michal Marek 411abb
Source100:      config.tar.bz2
Michal Marek 411abb
Source101:      config.addon.tar.bz2
Michal Marek 411abb
Source102:      patches.arch.tar.bz2
Michal Marek 411abb
Source103:      patches.drivers.tar.bz2
Michal Marek 411abb
Source104:      patches.fixes.tar.bz2
Michal Marek 411abb
Source105:      patches.rpmify.tar.bz2
Michal Marek 411abb
Source106:      patches.suse.tar.bz2
Michal Marek 411abb
Source108:      patches.addon.tar.bz2
Michal Marek 411abb
Source109:      patches.kernel.org.tar.bz2
Michal Marek 411abb
Source110:      patches.apparmor.tar.bz2
Michal Marek 411abb
Source111:      patches.rt.tar.bz2
Michal Marek 411abb
Source113:      patches.kabi.tar.bz2
Michal Marek 411abb
Source120:      kabi.tar.bz2
Michal Marek 473f2d
Source121:      sysctl.tar.bz2
Michal Marek 411abb
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
Olaf Hering 74358b
ExclusiveArch:  noarch @ARCHS@
Michal Marek 411abb
BuildArch:      noarch
Michal Marek 411abb
Prefix:         /usr/src
Michal Marek 411abb
# Source is only complete with devel files.
Michal Suchanek b4ec51
Requires:       kernel-devel%variant = %version-%source_rel
Takashi Iwai 6fcec9
# extra packages needed for building a kernel from scratch
Takashi Iwai 6fcec9
Recommends:     bc
Takashi Iwai 6fcec9
Recommends:     bison
Takashi Iwai 6fcec9
Recommends:     flex
Takashi Iwai 6fcec9
Recommends:     libelf-devel
Takashi Iwai 2c5131
Recommends:     openssl-devel
Michal Suchanek 364f54
# pahole needed for BTF
Michal Suchanek 364f54
%if 0%{?suse_version} > 1500 || 0%{?sle_version} > 150300
Michal Suchanek 364f54
Recommends:     dwarves >= 1.22
Michal Suchanek 364f54
%endif
Michal Suchanek 2ed668
# dracut no longer carries installkernel
Michal Suchanek 6cefb5
%if 0%{?suse_version} > 1500 || 0%{?sle_version} > 150300
Michal Suchanek 2ed668
Recommends:     kernel-install-tools
Michal Suchanek 2ed668
%endif
Michal Suchanek 652446
%obsolete_rebuilds %name
Michal Marek 411abb
Michal Marek 411abb
%(chmod +x %_sourcedir/{@SCRIPTS@})
Michal Marek 411abb
Michal Suchanek 375ec8
# Force bzip2 instead of lzma compression to
Michal Suchanek 375ec8
# 1) allow install on older dist versions, and
Michal Suchanek 375ec8
# 2) decrease build times (bsc#962356 boo#1175882)
Michal Suchanek 375ec8
%define _binary_payload w9.bzdio
Michal Suchanek 375ec8
Michal Marek 411abb
%define symbols %(set -- $([ -e %_sourcedir/extra-symbols ] && cat %_sourcedir/extra-symbols) ; echo $*)
Michal Marek 411abb
Michal Marek 411abb
%define do_vanilla "%variant" == ""
Michal Marek 411abb
Michal Marek 411abb
%description
Michal Marek 411abb
Linux kernel sources with many fixes and improvements.
Michal Marek 411abb
Michal Marek 411abb
Michal Marek aebe2d
%source_timestamp
Michal Marek 411abb
%package -n kernel-devel%variant
Michal Suchanek 652446
%obsolete_rebuilds kernel-devel%variant
Michal Marek aebe2d
Summary:        Development files needed for building kernel modules
Michal Marek aebe2d
Group:          Development/Sources
Michal Marek aebe2d
AutoReqProv:    off
Michal Marek 411abb
Provides:       kernel-devel%variant = %version-%source_rel
Michal Marek 0b9e9a
Provides:       multiversion(kernel)
Michal Marek 9b6a6f
Requires:       kernel-macros
Takashi Iwai ceb927
Requires(post): coreutils
Michal Marek 411abb
Michal Marek 411abb
%description -n kernel-devel%variant
Michal Marek 411abb
Kernel-level headers and Makefiles required for development of
Michal Marek 411abb
external kernel modules.
Michal Marek 411abb
Michal Marek 9b6a6f
%source_timestamp
Michal Marek 9b6a6f
Michal Marek a3cd25
# Note: The kernel-macros package intentionally does not provide
Michal Marek a3cd25
# multiversion(kernel) nor is its name decorated with the variant (-rt)
Michal Marek 9b6a6f
%package -n kernel-macros
Michal Marek 9b6a6f
Summary:        RPM macros for building Kernel Module Packages
Michal Marek 9b6a6f
Group:          Development/Sources
Michal Suchanek ad7c22
Provides:       kernel-subpackage-macros
Michal Marek 9b6a6f
Michal Marek 9b6a6f
%description -n kernel-macros
Michal Marek 9b6a6f
This package provides the rpm macros and templates for Kernel Module Pakcages
Michal Marek 411abb
Michal Marek aebe2d
%source_timestamp
Michal Marek 9b6a6f
Michal Marek 411abb
%package vanilla
Michal Suchanek 652446
%obsolete_rebuilds %name-vanilla
David Sterba 9050a3
Summary:        Vanilla Linux kernel sources with minor build fixes
Michal Marek 411abb
Group:          Development/Sources
Michal Marek 411abb
AutoReqProv:    off
Michal Marek 411abb
Provides:       %name-vanilla = %version-%source_rel
Michal Marek 0b9e9a
Provides:       multiversion(kernel)
Michal Marek cd3361
Requires:       kernel-macros
Takashi Iwai 93b137
# dracut no longer carries installkernel
Takashi Iwai 93b137
%if 0%{?suse_version} > 1500 || 0%{?sle_version} > 150300
Takashi Iwai 93b137
Recommends:     kernel-install-tools
Takashi Iwai 93b137
%endif
Michal Marek 411abb
Michal Marek 411abb
%description vanilla
Michal Marek 411abb
Vanilla Linux kernel sources with minor build fixes.
Michal Marek 411abb
Michal Marek 411abb
Michal Marek aebe2d
%source_timestamp
Michal Marek 9b6a6f
Michal Marek 411abb
%prep
Michal Marek 411abb
Michal Marek 411abb
echo "Symbol(s): %symbols"
Michal Marek 411abb
Michal Marek 411abb
# Unpack all sources and patches
Michal Marek 411abb
%setup -q -c -T @UNPACK_PATCHES@
Michal Marek 411abb
Michal Marek 411abb
%build
Michal Suchanek 13bd53
%install
e2f602
mkdir -p %{buildroot}/usr/src
e2f602
pushd %{buildroot}/usr/src
Michal Marek 411abb
Michal Marek 411abb
# Unpack the vanilla kernel sources
Michal Marek d12c88
tar -xf %{S:0}
Jiri Slaby 13bbc5
find . -xtype l -delete -printf "deleted '%f'\n"
Michal Marek 411abb
if test "%srcversion" != "%kernelrelease%variant"; then
Michal Marek 411abb
	mv linux-%srcversion linux-%kernelrelease%variant
Michal Marek 411abb
fi
Michal Marek 411abb
Michal Marek 411abb
%if %do_vanilla
Michal Marek 411abb
	cp -al \
Michal Marek 411abb
	linux-%kernelrelease%variant linux-%kernelrelease-vanilla
Michal Marek 411abb
cd linux-%kernelrelease-vanilla
Michal Marek 411abb
%_sourcedir/apply-patches --vanilla %_sourcedir/series.conf %my_builddir %symbols
Michal Marek 411abb
rm -f $(find . -name ".gitignore")
Michal Suchanek b8e00c
%if 0%{?usrmerged}
Michal Suchanek b8e00c
# fix MODLIB so kmps install to /usr
Michal Suchanek b8e00c
sed -ie 's,/lib/modules/,%{kernel_module_directory}/,' linux-%kernelrelease%variant/Makefile scripts/depmod.sh
Michal Suchanek b8e00c
%endif
1da843
# Hardlink duplicate files automatically (from package fdupes).
1da843
%fdupes $PWD
Michal Marek 411abb
cd ..
Michal Marek 411abb
%endif
Michal Marek 411abb
Michal Marek 411abb
cd linux-%kernelrelease%variant
Michal Marek 411abb
%_sourcedir/apply-patches %_sourcedir/series.conf %my_builddir %symbols
Michal Marek 411abb
rm -f $(find . -name ".gitignore")
Michal Marek 411abb
Michal Marek 411abb
if [ -f %_sourcedir/localversion ] ; then
Michal Marek 411abb
    cat %_sourcedir/localversion > localversion
Michal Marek 411abb
fi
Michal Suchanek b8e00c
%if 0%{?usrmerged}
Michal Suchanek b8e00c
# fix MODLIB so kmps install to /usr
Michal Suchanek b8e00c
sed -ie 's,/lib/modules/,%{kernel_module_directory}/,' linux-%kernelrelease%variant/Makefile scripts/depmod.sh
Michal Suchanek b8e00c
%endif
1da843
# Hardlink duplicate files automatically (from package fdupes).
1da843
%fdupes $PWD
Michal Suchanek 13bd53
cd ..
Michal Suchanek 13bd53
popd
Michal Marek 411abb
Michal Marek 411abb
# Install the documentation and example Kernel Module Package.
Michal Marek deb25b
DOC=/usr/share/doc/packages/%name-%kernelrelease
Michal Marek deb25b
mkdir -p %buildroot/$DOC
Michal Marek deb25b
cp %_sourcedir/README.SUSE %_sourcedir/config-options.changes.txt %buildroot/$DOC
Michal Marek deb25b
ln -s $DOC/README.SUSE %buildroot/%src_install_dir/
Michal Marek 411abb
Michal Marek 9b6a6f
%if "%variant" == ""
e2f602
install -m 755 -d %{buildroot}%{_rpmmacrodir}
e2f602
install -m 644 %_sourcedir/macros.kernel-source %{buildroot}%{_rpmmacrodir}
e2f602
echo "%%kernel_module_directory %{kernel_module_directory}" >> %{buildroot}%{_rpmmacrodir}/macros.kernel-source
22ec56
e2f602
install -m 755 -d %{buildroot}/usr/lib/rpm
Michal Marek d8f177
install -m 644 %_sourcedir/kernel-{module,cert}-subpackage \
e2f602
    %{buildroot}/usr/lib/rpm/
e2f602
install -m 755 -d %{buildroot}/usr/lib/rpm/kernel
e2f602
install -m 755 %_sourcedir/{splitflist,mergedep,moddep,modflist,kernel-subpackage-build} %{buildroot}/usr/lib/rpm/kernel
e2f602
install -m 644 %_sourcedir/kernel-subpackage-spec %{buildroot}/usr/lib/rpm/kernel
e2f602
install -m 644 %_sourcedir/kernel-spec-macros %{buildroot}/usr/lib/rpm/kernel
e2f602
install -m 644 -T %_sourcedir/kernel-default-base.spec.txt %{buildroot}/usr/lib/rpm/kernel/kernel-default-base.spec
Michal Marek 9b6a6f
%endif
Michal Marek 411abb
Michal Marek 411abb
pushd "%buildroot"
Michal Marek 411abb
perl "%_sourcedir/group-source-files.pl" \
Michal Marek 411abb
	-D "$OLDPWD/devel.files" -N "$OLDPWD/nondevel.files" \
Michal Marek 411abb
	-L "%src_install_dir"
Michal Marek 411abb
popd
Michal Marek 411abb
Michal Kubecek 771e29
find %{buildroot}/usr/src/linux* -type f -name '*.[ch]' -perm /0111 -exec chmod -v a-x {} +
Michal Kubecek 45c5c1
# OBS checks don't like /usr/bin/env in script interpreter lines
Michal Kubecek 45c5c1
grep -Elr '^#! */usr/bin/env ' %{buildroot}/usr/src/linux* | while read f; do
Michal Kubecek 45c5c1
    sed -re '1 { s_^#! */usr/bin/env +/_#!/_ ; s_^#! */usr/bin/env +([^/])_#!/usr/bin/\1_ }' -i "$f"
Michal Kubecek 45c5c1
done
Michal Marek 411abb
# kernel-source and kernel-$flavor-devel are built independently, but the
Michal Marek 411abb
# shipped sources (/usr/src/linux/) need to be older than generated files
Michal Marek 411abb
# (/usr/src/linux-obj). We rely on the git commit timestamp to not point into
Michal Marek 411abb
# the future and be thus lower than the timestamps of files built from the
Michal Marek 411abb
# source (bnc#669669).
Michal Marek 411abb
ts="$(head -n1 %_sourcedir/source-timestamp)"
Michal Marek 411abb
find %buildroot/usr/src/linux* ! -type l | xargs touch -d "$ts"
Michal Marek 411abb
Michal Suchanek 692d38
%post
Michal Suchanek 692d38
%relink_function
Michal Suchanek 692d38
Michal Suchanek 692d38
relink linux-%kernelrelease%variant /usr/src/linux%variant
Michal Suchanek 692d38
Michal Suchanek 692d38
%post -n kernel-devel%variant
Michal Suchanek 692d38
%relink_function
Michal Marek 411abb
Michal Suchanek 692d38
relink linux-%kernelrelease%variant /usr/src/linux%variant
Michal Marek 411abb
Michal Marek 411abb
%files -f nondevel.files
Michal Marek 411abb
Michal Marek 411abb
%files -n kernel-devel%variant -f devel.files
Michal Marek 411abb
%ghost /usr/src/linux%variant
Michal Marek deb25b
%doc /usr/share/doc/packages/*
Michal Marek 9b6a6f
Michal Marek 9b6a6f
%if "%variant" == ""
Michal Marek 9b6a6f
%files -n kernel-macros
e350c1
%{_rpmmacrodir}/macros.kernel-source
Michal Marek d8f177
/usr/lib/rpm/kernel-*-subpackage
Michal Suchanek ad7c22
%dir /usr/lib/rpm/kernel
Michal Suchanek ad7c22
/usr/lib/rpm/kernel/*
Michal Marek 411abb
%endif
Michal Marek 411abb
Michal Marek 9b6a6f
Michal Marek 411abb
%if %do_vanilla
Michal Marek aebe2d
Michal Marek 411abb
%files vanilla
Michal Marek 411abb
/usr/src/linux-%kernelrelease-vanilla
Michal Marek 411abb
%endif
Michal Marek 411abb
Michal Marek 411abb
%changelog