Blame kernel-source.spec

Bernhard M. Wiedemann 6ebc4a
#
8a7a33
# spec file for package kernel-source
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
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}
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
%include %_sourcedir/kernel-spec-macros
Bernhard M. Wiedemann 6ebc4a
7a1991
%(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})
00af90
Bernhard M. Wiedemann 6ebc4a
Name:           kernel-source
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
57a832
Summary:        The Linux Kernel Sources
57a832
License:        GPL-2.0-only
57a832
Group:          Development/Sources
57a832
URL:            https://www.kernel.org/
Bernhard M. Wiedemann 6ebc4a
AutoReqProv:    off
5c34fe
%if 0%{?suse_version} > 1500 || 0%{?sle_version} > 150300
5c34fe
BuildRequires:  bash-sh
5c34fe
%endif
Bernhard M. Wiedemann 6ebc4a
BuildRequires:  coreutils
Bernhard M. Wiedemann 6ebc4a
BuildRequires:  fdupes
Bernhard M. Wiedemann 6ebc4a
BuildRequires:  sed
7a1991
%if ! 0%{?is_kotd} || ! %{?is_kotd_qa}%{!?is_kotd_qa:0}
7a1991
BuildArch:      noarch
7a1991
%else
7a1991
ExclusiveArch:  do_not_build
7a1991
%endif
7a1991
Prefix:         /usr/src
7a1991
7a1991
%define src_install_dir usr/src/linux-%kernelrelease%variant
7a1991
7a1991
# if undefined use legacy location of before SLE15
7a1991
%if %{undefined _rpmmacrodir}
7a1991
%define _rpmmacrodir /etc/rpm
7a1991
%endif
7a1991
160bca
Source0:        https://www.kernel.org/pub/linux/kernel/v6.x/linux-%srcversion.tar.xz
160bca
%if "https://www.kernel.org/pub/linux/kernel/v6.x/" != ""
160bca
Source1:        https://www.kernel.org/pub/linux/kernel/v6.x/linux-%srcversion.tar.sign
1d2ab9
Source2:        linux.keyring
1d2ab9
%endif
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
7a1991
Requires(post): coreutils sed
Bernhard M. Wiedemann 6ebc4a
# Source is only complete with devel files.
Bernhard M. Wiedemann 6ebc4a
Requires:       kernel-devel%variant = %version-%source_rel
Bernhard M. Wiedemann 878168
Provides:       %name = %version-%source_rel
Bernhard M. Wiedemann 878168
Provides:       %name-srchash-%git_commit
Bernhard M. Wiedemann 878168
Provides:       linux
Bernhard M. Wiedemann 878168
Provides:       multiversion(kernel)
Bernhard M. Wiedemann 6ebc4a
# extra packages needed for building a kernel from scratch
Bernhard M. Wiedemann 6ebc4a
Recommends:     bc
Bernhard M. Wiedemann 6ebc4a
Recommends:     bison
Bernhard M. Wiedemann 6ebc4a
Recommends:     flex
Bernhard M. Wiedemann 6ebc4a
Recommends:     libelf-devel
Bernhard M. Wiedemann 6ebc4a
Recommends:     openssl-devel
5d1286
# pahole needed for BTF
5d1286
%if 0%{?suse_version} > 1500 || 0%{?sle_version} > 150300
5d1286
Recommends:     dwarves >= 1.22
5d1286
%endif
e462ca
# dracut no longer carries installkernel
ff41bd
%if 0%{?suse_version} > 1500 || 0%{?sle_version} > 150300
e462ca
Recommends:     kernel-install-tools
e462ca
%endif
Bernhard M. Wiedemann d38ef0
%obsolete_rebuilds %name
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 8b37e4
# Force bzip2 instead of lzma compression to
Bernhard M. Wiedemann 8b37e4
# 1) allow install on older dist versions, and
Bernhard M. Wiedemann 8b37e4
# 2) decrease build times (bsc#962356 boo#1175882)
Bernhard M. Wiedemann 8b37e4
%define _binary_payload w9.bzdio
Bernhard M. Wiedemann 8b37e4
Bernhard M. Wiedemann 6ebc4a
%define symbols %(set -- $([ -e %_sourcedir/extra-symbols ] && cat %_sourcedir/extra-symbols) ; echo $*)
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
%define do_vanilla "%variant" == ""
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
%description
Bernhard M. Wiedemann 6ebc4a
Linux kernel sources with many fixes and improvements.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
%source_timestamp
7a1991
7a1991
%post
7a1991
%relink_function
7a1991
7a1991
relink linux-%kernelrelease%variant /usr/src/linux%variant
7a1991
7a1991
%files -f nondevel.files
7a1991
Bernhard M. Wiedemann 6ebc4a
%package -n kernel-devel%variant
Bernhard M. Wiedemann 6ebc4a
Summary:        Development files needed for building kernel modules
Bernhard M. Wiedemann 6ebc4a
Group:          Development/Sources
Bernhard M. Wiedemann 6ebc4a
AutoReqProv:    off
Bernhard M. Wiedemann 6ebc4a
Provides:       kernel-devel%variant = %version-%source_rel
Bernhard M. Wiedemann 6ebc4a
Provides:       multiversion(kernel)
Bernhard M. Wiedemann 6ebc4a
Requires:       kernel-macros
Bernhard M. Wiedemann 78ffbf
Requires(post): coreutils
7a1991
%obsolete_rebuilds kernel-devel%variant
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
%description -n kernel-devel%variant
Bernhard M. Wiedemann 6ebc4a
Kernel-level headers and Makefiles required for development of
Bernhard M. Wiedemann 6ebc4a
external kernel modules.
Bernhard M. Wiedemann 6ebc4a
7a1991
Bernhard M. Wiedemann 6ebc4a
%source_timestamp
Bernhard M. Wiedemann 6ebc4a
7a1991
%post -n kernel-devel%variant
7a1991
%relink_function
7a1991
7a1991
relink linux-%kernelrelease%variant /usr/src/linux%variant
7a1991
7a1991
%files -n kernel-devel%variant -f devel.files
7a1991
%ghost /usr/src/linux%variant
7a1991
%doc /usr/share/doc/packages/*
7a1991
Bernhard M. Wiedemann 6ebc4a
# Note: The kernel-macros package intentionally does not provide
Bernhard M. Wiedemann 6ebc4a
# multiversion(kernel) nor is its name decorated with the variant (-rt)
Bernhard M. Wiedemann 6ebc4a
%package -n kernel-macros
Bernhard M. Wiedemann 6ebc4a
Summary:        RPM macros for building Kernel Module Packages
Bernhard M. Wiedemann 6ebc4a
Group:          Development/Sources
Bernhard M. Wiedemann 6ebc4a
Provides:       kernel-subpackage-macros
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
%description -n kernel-macros
786718
This package provides the rpm macros and templates for Kernel Module Packages
Bernhard M. Wiedemann 6ebc4a
7a1991
Bernhard M. Wiedemann 6ebc4a
%source_timestamp
Bernhard M. Wiedemann 6ebc4a
7a1991
%if "%variant" == ""
7a1991
%files -n kernel-macros
7a1991
%{_rpmmacrodir}/macros.kernel-source
7a1991
/usr/lib/rpm/kernel-*-subpackage
7a1991
%dir /usr/lib/rpm/kernel
7a1991
/usr/lib/rpm/kernel/*
7a1991
%endif
7a1991
Bernhard M. Wiedemann 6ebc4a
%package vanilla
Bernhard M. Wiedemann d38ef0
%obsolete_rebuilds %name-vanilla
Bernhard M. Wiedemann 6ebc4a
Summary:        Vanilla Linux kernel sources with minor build fixes
Bernhard M. Wiedemann 6ebc4a
Group:          Development/Sources
Bernhard M. Wiedemann 6ebc4a
AutoReqProv:    off
Bernhard M. Wiedemann 6ebc4a
Provides:       %name-vanilla = %version-%source_rel
Bernhard M. Wiedemann 6ebc4a
Provides:       multiversion(kernel)
Bernhard M. Wiedemann 6ebc4a
Requires:       kernel-macros
1f1601
# dracut no longer carries installkernel
1f1601
%if 0%{?suse_version} > 1500 || 0%{?sle_version} > 150300
1f1601
Recommends:     kernel-install-tools
1f1601
%endif
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
%description vanilla
Bernhard M. Wiedemann 6ebc4a
Vanilla Linux kernel sources with minor build fixes.
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
%source_timestamp
Bernhard M. Wiedemann 6ebc4a
7a1991
%if %do_vanilla
7a1991
%files vanilla
7a1991
/usr/src/linux-%kernelrelease-vanilla
7a1991
%endif
7a1991
Bernhard M. Wiedemann 6ebc4a
%prep
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
echo "Symbol(s): %symbols"
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
# Unpack all sources and patches
6a054f
%setup -q -c -T -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
Bernhard M. Wiedemann 6ebc4a
%build
5c5b33
%install
576ef8
mkdir -p %{buildroot}/usr/src
576ef8
pushd %{buildroot}/usr/src
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
# Unpack the vanilla kernel sources
Bernhard M. Wiedemann 6ebc4a
tar -xf %{S:0}
1d2ab9
find . -xtype l -delete -printf "deleted '%f'\n"
Bernhard M. Wiedemann 6ebc4a
if test "%srcversion" != "%kernelrelease%variant"; then
Bernhard M. Wiedemann 6ebc4a
	mv linux-%srcversion linux-%kernelrelease%variant
Bernhard M. Wiedemann 6ebc4a
fi
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
%if %do_vanilla
Bernhard M. Wiedemann 6ebc4a
	cp -al \
Bernhard M. Wiedemann 6ebc4a
	linux-%kernelrelease%variant linux-%kernelrelease-vanilla
Bernhard M. Wiedemann 6ebc4a
cd linux-%kernelrelease-vanilla
Bernhard M. Wiedemann 6ebc4a
%_sourcedir/apply-patches --vanilla %_sourcedir/series.conf %my_builddir %symbols
Bernhard M. Wiedemann 6ebc4a
rm -f $(find . -name ".gitignore")
5c34fe
# Hardlink duplicate files automatically (from package fdupes).
5c34fe
%fdupes $PWD
Bernhard M. Wiedemann 6ebc4a
cd ..
Bernhard M. Wiedemann 6ebc4a
%endif
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
cd linux-%kernelrelease%variant
Bernhard M. Wiedemann 6ebc4a
%_sourcedir/apply-patches %_sourcedir/series.conf %my_builddir %symbols
Bernhard M. Wiedemann 6ebc4a
rm -f $(find . -name ".gitignore")
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
if [ -f %_sourcedir/localversion ] ; then
Bernhard M. Wiedemann 6ebc4a
    cat %_sourcedir/localversion > localversion
Bernhard M. Wiedemann 6ebc4a
fi
5c34fe
# Hardlink duplicate files automatically (from package fdupes).
5c34fe
%fdupes $PWD
5c5b33
cd ..
5c5b33
popd
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
# Install the documentation and example Kernel Module Package.
Bernhard M. Wiedemann 6ebc4a
DOC=/usr/share/doc/packages/%name-%kernelrelease
Bernhard M. Wiedemann 6ebc4a
mkdir -p %buildroot/$DOC
Bernhard M. Wiedemann 878168
cp %_sourcedir/README.SUSE %buildroot/$DOC
Bernhard M. Wiedemann 6ebc4a
ln -s $DOC/README.SUSE %buildroot/%src_install_dir/
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
%if "%variant" == ""
576ef8
install -m 755 -d %{buildroot}%{_rpmmacrodir}
576ef8
install -m 644 %_sourcedir/macros.kernel-source %{buildroot}%{_rpmmacrodir}
576ef8
echo "%%kernel_module_directory %{kernel_module_directory}" >> %{buildroot}%{_rpmmacrodir}/macros.kernel-source
00af90
576ef8
install -m 755 -d %{buildroot}/usr/lib/rpm
Bernhard M. Wiedemann 6ebc4a
install -m 644 %_sourcedir/kernel-{module,cert}-subpackage \
576ef8
    %{buildroot}/usr/lib/rpm/
576ef8
install -m 755 -d %{buildroot}/usr/lib/rpm/kernel
576ef8
install -m 755 %_sourcedir/{splitflist,mergedep,moddep,modflist,kernel-subpackage-build} %{buildroot}/usr/lib/rpm/kernel
576ef8
install -m 644 %_sourcedir/kernel-subpackage-spec %{buildroot}/usr/lib/rpm/kernel
576ef8
install -m 644 %_sourcedir/kernel-spec-macros %{buildroot}/usr/lib/rpm/kernel
576ef8
install -m 644 -T %_sourcedir/kernel-default-base.spec.txt %{buildroot}/usr/lib/rpm/kernel/kernel-default-base.spec
Bernhard M. Wiedemann 6ebc4a
%endif
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
pushd "%buildroot"
Bernhard M. Wiedemann 6ebc4a
perl "%_sourcedir/group-source-files.pl" \
Bernhard M. Wiedemann 6ebc4a
	-D "$OLDPWD/devel.files" -N "$OLDPWD/nondevel.files" \
Bernhard M. Wiedemann 6ebc4a
	-L "%src_install_dir"
Bernhard M. Wiedemann 6ebc4a
popd
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 30899f
find %{buildroot}/usr/src/linux* -type f -name '*.[ch]' -perm /0111 -exec chmod -v a-x {} +
95fa8d
# OBS checks don't like /usr/bin/env in script interpreter lines
95fa8d
grep -Elr '^#! */usr/bin/env ' %{buildroot}/usr/src/linux* | while read f; do
95fa8d
    sed -re '1 { s_^#! */usr/bin/env +/_#!/_ ; s_^#! */usr/bin/env +([^/])_#!/usr/bin/\1_ }' -i "$f"
95fa8d
done
Bernhard M. Wiedemann 6ebc4a
# kernel-source and kernel-$flavor-devel are built independently, but the
Bernhard M. Wiedemann 6ebc4a
# shipped sources (/usr/src/linux/) need to be older than generated files
Bernhard M. Wiedemann 6ebc4a
# (/usr/src/linux-obj). We rely on the git commit timestamp to not point into
Bernhard M. Wiedemann 6ebc4a
# the future and be thus lower than the timestamps of files built from the
Bernhard M. Wiedemann 6ebc4a
# source (bnc#669669).
Bernhard M. Wiedemann 6ebc4a
ts="$(head -n1 %_sourcedir/source-timestamp)"
7a1991
find %buildroot/usr/src/linux* ! -type l -print0 | xargs -0 touch -d "$ts"
Bernhard M. Wiedemann 6ebc4a
Bernhard M. Wiedemann 6ebc4a
%changelog