kernel-6.8.0-0.rc6.20240229git805d849d7c3c.51

* Thu Feb 29 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.8.0-0.rc6.805d849d7c3c.51]
- gitlab-ci: fix merge tree URL for gating pipelines (Michael Hofmann)
- Revert "net: bump CONFIG_MAX_SKB_FRAGS to 45" (Marcelo Ricardo Leitner)
- uki: use systemd-pcrphase dracut module (Gerd Hoffmann)
- Add libperf-debuginfo subpackage (Justin M. Forbes)
- redhat/kernel.spec.template: Add log_msg macro (Prarit Bhargava)
- Linux v6.8.0-0.rc6.805d849d7c3c
Resolves:

Signed-off-by: Justin M. Forbes <jforbes@fedoraproject.org>
This commit is contained in:
Justin M. Forbes 2024-02-29 09:25:14 -06:00
parent af24b5dbb7
commit b9352d952c
No known key found for this signature in database
GPG Key ID: B8FA7924A4B1C140
4 changed files with 146 additions and 46 deletions

View File

@ -12,7 +12,7 @@ dracutmodules+=" base systemd systemd-initrd dracut-systemd dbus dbus-broker usr
dracutmodules+=" dm lvm rootfs-block fs-lib " dracutmodules+=" dm lvm rootfs-block fs-lib "
# modules: tpm and crypto # modules: tpm and crypto
dracutmodules+=" crypt crypt-loop tpm2-tss " dracutmodules+=" crypt crypt-loop tpm2-tss systemd-pcrphase "
# modules: support root on virtiofs # modules: support root on virtiofs
dracutmodules+=" virtiofs " dracutmodules+=" virtiofs "
@ -36,6 +36,3 @@ drivers+=" dm_crypt "
# filesystems # filesystems
filesystems+=" vfat ext4 xfs overlay " filesystems+=" vfat ext4 xfs overlay "
# systemd-pcrphase
install_items+=" /lib/systemd/system/systemd-pcrphase-initrd.service /usr/lib/systemd/systemd-pcrphase /usr/lib/systemd/system/initrd.target.wants/systemd-pcrphase-initrd.service "

View File

@ -1,6 +1,10 @@
* Wed Feb 28 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.8.0-0.rc6.cf1182944c7c.51] * Thu Feb 29 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.8.0-0.rc6.805d849d7c3c.51]
- gitlab-ci: fix merge tree URL for gating pipelines (Michael Hofmann)
- Revert "net: bump CONFIG_MAX_SKB_FRAGS to 45" (Marcelo Ricardo Leitner) - Revert "net: bump CONFIG_MAX_SKB_FRAGS to 45" (Marcelo Ricardo Leitner)
- uki: use systemd-pcrphase dracut module (Gerd Hoffmann)
- Add libperf-debuginfo subpackage (Justin M. Forbes) - Add libperf-debuginfo subpackage (Justin M. Forbes)
- redhat/kernel.spec.template: Add log_msg macro (Prarit Bhargava)
- Linux v6.8.0-0.rc6.805d849d7c3c
Resolves: Resolves:
* Wed Feb 28 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.8.0-0.rc6.cf1182944c7c.50] * Wed Feb 28 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.8.0-0.rc6.cf1182944c7c.50]

View File

@ -163,13 +163,13 @@ Summary: The Linux kernel
%define specrpmversion 6.8.0 %define specrpmversion 6.8.0
%define specversion 6.8.0 %define specversion 6.8.0
%define patchversion 6.8 %define patchversion 6.8
%define pkgrelease 0.rc6.20240228gitcf1182944c7c.51 %define pkgrelease 0.rc6.20240229git805d849d7c3c.51
%define kversion 6 %define kversion 6
%define tarfile_release 6.8-rc6-21-gcf1182944c7c %define tarfile_release 6.8-rc6-37-g805d849d7c3c
# This is needed to do merge window version magic # This is needed to do merge window version magic
%define patchlevel 8 %define patchlevel 8
# This allows pkg_release to have configurable %%{?dist} tag # This allows pkg_release to have configurable %%{?dist} tag
%define specrelease 0.rc6.20240228gitcf1182944c7c.51%{?buildid}%{?dist} %define specrelease 0.rc6.20240229git805d849d7c3c.51%{?buildid}%{?dist}
# This defines the kabi tarball version # This defines the kabi tarball version
%define kabiversion 6.8.0 %define kabiversion 6.8.0
@ -1724,11 +1724,20 @@ Prebuilt 64k unified kernel image for virtual machines.
%kernel_ipaclones_package %kernel_ipaclones_package
%endif %endif
%define log_msg() set +x \
_log_msglineno=$(grep -n %{*} %{_specdir}/${RPM_PACKAGE_NAME}.spec | grep log_msg | cut -d":" -f1) \
echo "kernel.spec:${_log_msglineno}: %{*}" \
set -x
%prep %prep
%{log_msg "Start of prep stage"}
%{log_msg "Sanity checks"}
# do a few sanity-checks for --with *only builds # do a few sanity-checks for --with *only builds
%if %{with_baseonly} %if %{with_baseonly}
%if !%{with_up} %if !%{with_up}
echo "Cannot build --with baseonly, up build is disabled" %{log_msg "Cannot build --with baseonly, up build is disabled"}
exit 1 exit 1
%endif %endif
%endif %endif
@ -1737,7 +1746,7 @@ exit 1
if [ "%{patches}" != "%%{patches}" ] ; then if [ "%{patches}" != "%%{patches}" ] ; then
for patch in %{patches} ; do for patch in %{patches} ; do
if [ ! -f $patch ] ; then if [ ! -f $patch ] ; then
echo "ERROR: Patch ${patch##/*/} listed in specfile but is missing" %{log_msg "ERROR: Patch ${patch##/*/} listed in specfile but is missing"}
exit 1 exit 1
fi fi
done done
@ -1753,7 +1762,7 @@ ApplyPatch()
fi fi
if ! grep -E "^Patch[0-9]+: $patch\$" %{_specdir}/${RPM_PACKAGE_NAME}.spec ; then if ! grep -E "^Patch[0-9]+: $patch\$" %{_specdir}/${RPM_PACKAGE_NAME}.spec ; then
if [ "${patch:0:8}" != "patch-%{kversion}." ] ; then if [ "${patch:0:8}" != "patch-%{kversion}." ] ; then
echo "ERROR: Patch $patch not listed as a source patch in specfile" %{log_msg "ERROR: Patch $patch not listed as a source patch in specfile"}
exit 1 exit 1
fi fi
fi 2>/dev/null fi 2>/dev/null
@ -1770,6 +1779,7 @@ ApplyOptionalPatch()
{ {
local patch=$1 local patch=$1
shift shift
%{log_msg "ApplyOptionalPatch: $1"}
if [ ! -f $RPM_SOURCE_DIR/$patch ]; then if [ ! -f $RPM_SOURCE_DIR/$patch ]; then
exit 1 exit 1
fi fi
@ -1779,12 +1789,14 @@ ApplyOptionalPatch()
fi fi
} }
%{log_msg "Untar kernel tarball"}
%setup -q -n kernel-%{tarfile_release} -c %setup -q -n kernel-%{tarfile_release} -c
mv linux-%{tarfile_release} linux-%{KVERREL} mv linux-%{tarfile_release} linux-%{KVERREL}
cd linux-%{KVERREL} cd linux-%{KVERREL}
cp -a %{SOURCE1} . cp -a %{SOURCE1} .
%{log_msg "Start of patch applications"}
%if !%{nopatches} %if !%{nopatches}
ApplyOptionalPatch patch-%{patchversion}-redhat.patch ApplyOptionalPatch patch-%{patchversion}-redhat.patch
@ -1792,10 +1804,11 @@ ApplyOptionalPatch patch-%{patchversion}-redhat.patch
ApplyOptionalPatch linux-kernel-test.patch ApplyOptionalPatch linux-kernel-test.patch
%{log_msg "End of patch applications"}
# END OF PATCH APPLICATIONS # END OF PATCH APPLICATIONS
# Any further pre-build tree manipulations happen here. # Any further pre-build tree manipulations happen here.
%{log_msg "Pre-build tree manipulations"}
chmod +x scripts/checkpatch.pl chmod +x scripts/checkpatch.pl
mv COPYING COPYING-%{specrpmversion}-%{release} mv COPYING COPYING-%{specrpmversion}-%{release}
@ -1810,7 +1823,7 @@ rm -f localversion-next
# This fixes errors such as # This fixes errors such as
# *** ERROR: ambiguous python shebang in /usr/bin/kvm_stat: #!/usr/bin/python. Change it to python3 (or python2) explicitly. # *** ERROR: ambiguous python shebang in /usr/bin/kvm_stat: #!/usr/bin/python. Change it to python3 (or python2) explicitly.
# We patch all sources below for which we got a report/error. # We patch all sources below for which we got a report/error.
echo "Fixing Python shebangs..." %{log_msg "Fixing Python shebangs..."}
%py3_shebang_fix \ %py3_shebang_fix \
tools/kvm/kvm_stat/kvm_stat \ tools/kvm/kvm_stat/kvm_stat \
scripts/show_delta \ scripts/show_delta \
@ -1830,6 +1843,7 @@ fi
mkdir configs mkdir configs
cd configs cd configs
%{log_msg "Copy additional source files into buildroot"}
# Drop some necessary files from the source dir into the buildroot # Drop some necessary files from the source dir into the buildroot
cp $RPM_SOURCE_DIR/%{name}-*.config . cp $RPM_SOURCE_DIR/%{name}-*.config .
cp %{SOURCE80} . cp %{SOURCE80} .
@ -1841,6 +1855,7 @@ cp %{SOURCE3001} partial-kernel-local-debug-snip.config
FLAVOR=%{primary_target} SPECPACKAGE_NAME=%{name} SPECVERSION=%{specversion} SPECRPMVERSION=%{specrpmversion} ./generate_all_configs.sh %{debugbuildsenabled} FLAVOR=%{primary_target} SPECPACKAGE_NAME=%{name} SPECVERSION=%{specversion} SPECRPMVERSION=%{specrpmversion} ./generate_all_configs.sh %{debugbuildsenabled}
# Collect custom defined config options # Collect custom defined config options
%{log_msg "Collect custom defined config options"}
PARTIAL_CONFIGS="" PARTIAL_CONFIGS=""
%if %{with_gcov} %if %{with_gcov}
PARTIAL_CONFIGS="$PARTIAL_CONFIGS %{SOURCE70} %{SOURCE71}" PARTIAL_CONFIGS="$PARTIAL_CONFIGS %{SOURCE70} %{SOURCE71}"
@ -1866,6 +1881,7 @@ GetArch()
} }
# Merge in any user-provided local config option changes # Merge in any user-provided local config option changes
%{log_msg "Merge in any user-provided local config option changes"}
%ifnarch %nobuildarches %ifnarch %nobuildarches
for i in %{all_configs} for i in %{all_configs}
do do
@ -1890,6 +1906,7 @@ done
# Add DUP and kpatch certificates to system trusted keys for RHEL # Add DUP and kpatch certificates to system trusted keys for RHEL
%if 0%{?rhel} %if 0%{?rhel}
%{log_msg "Add DUP and kpatch certificates to system trusted keys for RHEL"}
%if %{signkernel}%{signmodules} %if %{signkernel}%{signmodules}
openssl x509 -inform der -in %{SOURCE100} -out rheldup3.pem openssl x509 -inform der -in %{SOURCE100} -out rheldup3.pem
openssl x509 -inform der -in %{SOURCE101} -out rhelkpatch1.pem openssl x509 -inform der -in %{SOURCE101} -out rhelkpatch1.pem
@ -1907,11 +1924,13 @@ done
# Adjust FIPS module name for RHEL # Adjust FIPS module name for RHEL
%if 0%{?rhel} %if 0%{?rhel}
%{log_msg "Adjust FIPS module name for RHEL"}
for i in *.config; do for i in *.config; do
sed -i 's/CONFIG_CRYPTO_FIPS_NAME=.*/CONFIG_CRYPTO_FIPS_NAME="Red Hat Enterprise Linux %{rhel} - Kernel Cryptographic API"/' $i sed -i 's/CONFIG_CRYPTO_FIPS_NAME=.*/CONFIG_CRYPTO_FIPS_NAME="Red Hat Enterprise Linux %{rhel} - Kernel Cryptographic API"/' $i
done done
%endif %endif
%{log_msg "Set process_configs.sh $OPTS"}
cp %{SOURCE81} . cp %{SOURCE81} .
OPTS="" OPTS=""
%if %{with_configchecks} %if %{with_configchecks}
@ -1922,6 +1941,7 @@ for opt in %{clang_make_opts}; do
OPTS="$OPTS -m $opt" OPTS="$OPTS -m $opt"
done done
%endif %endif
%{log_msg "Generate redhat configs"}
RHJOBS=$RPM_BUILD_NCPUS SPECPACKAGE_NAME=%{name} ./process_configs.sh $OPTS %{specrpmversion} RHJOBS=$RPM_BUILD_NCPUS SPECPACKAGE_NAME=%{name} ./process_configs.sh $OPTS %{specrpmversion}
# We may want to override files from the primary target in case of building # We may want to override files from the primary target in case of building
@ -1936,20 +1956,21 @@ update_scripts() {
done done
} }
%{log_msg "Set scripts/SOURCES targets"}
update_target=%{primary_target} update_target=%{primary_target}
if [ "%{primary_target}" == "rhel" ]; then if [ "%{primary_target}" == "rhel" ]; then
: # no-op to avoid empty if-fi error : # no-op to avoid empty if-fi error
%if 0%{?centos} %if 0%{?centos}
update_scripts $update_target update_scripts $update_target
echo "Updating scripts/sources to centos version" %{log_msg "Updating scripts/sources to centos version"}
update_target=centos update_target=centos
%endif %endif
fi fi
update_scripts $update_target update_scripts $update_target
# end of kernel config
%endif %endif
%{log_msg "End of kernel config"}
cd .. cd ..
# # End of Configs stuff # # End of Configs stuff
@ -1965,7 +1986,9 @@ cd ..
### build ### build
### ###
%build %build
%{log_msg "Start of build stage"}
%{log_msg "General arch build configuration"}
rm -rf %{buildroot_unstripped} || true rm -rf %{buildroot_unstripped} || true
mkdir -p %{buildroot_unstripped} mkdir -p %{buildroot_unstripped}
@ -1989,6 +2012,9 @@ cp_vmlinux()
%define make %{__make} %{?cross_opts} %{?make_opts} HOSTCFLAGS="%{?build_hostcflags}" HOSTLDFLAGS="%{?build_hostldflags}" %define make %{__make} %{?cross_opts} %{?make_opts} HOSTCFLAGS="%{?build_hostcflags}" HOSTLDFLAGS="%{?build_hostldflags}"
InitBuildVars() { InitBuildVars() {
%{log_msg "InitBuildVars for $1"}
%{log_msg "InitBuildVars: Initialize build variables"}
# Initialize the kernel .config file and create some variables that are # Initialize the kernel .config file and create some variables that are
# needed for the actual build process. # needed for the actual build process.
@ -2000,6 +2026,7 @@ InitBuildVars() {
KernelVer=%{specversion}-%{release}.%{_target_cpu}${Variant:++${Variant}} KernelVer=%{specversion}-%{release}.%{_target_cpu}${Variant:++${Variant}}
%{log_msg "InitBuildVars: Update Makefile"}
# make sure EXTRAVERSION says what we want it to say # make sure EXTRAVERSION says what we want it to say
# Trim the release if this is a CI build, since KERNELVERSION is limited to 64 characters # Trim the release if this is a CI build, since KERNELVERSION is limited to 64 characters
ShortRel=$(perl -e "print \"%{release}\" =~ s/\.pr\.[0-9A-Fa-f]{32}//r") ShortRel=$(perl -e "print \"%{release}\" =~ s/\.pr\.[0-9A-Fa-f]{32}//r")
@ -2009,6 +2036,7 @@ InitBuildVars() {
# if we are post rc1 this should match anyway so this won't matter # if we are post rc1 this should match anyway so this won't matter
perl -p -i -e 's/^PATCHLEVEL.*/PATCHLEVEL = %{patchlevel}/' Makefile perl -p -i -e 's/^PATCHLEVEL.*/PATCHLEVEL = %{patchlevel}/' Makefile
%{log_msg "InitBuildVars: Copy files"}
%{make} %{?_smp_mflags} mrproper %{make} %{?_smp_mflags} mrproper
cp configs/$Config .config cp configs/$Config .config
@ -2017,23 +2045,26 @@ InitBuildVars() {
%endif %endif
Arch=`head -1 .config | cut -b 3-` Arch=`head -1 .config | cut -b 3-`
echo USING ARCH=$Arch %{log_msg "InitBuildVars: USING ARCH=$Arch"}
KCFLAGS="%{?kcflags}" KCFLAGS="%{?kcflags}"
# add kpatch flags for base kernel # add kpatch flags for base kernel
%{log_msg "InitBuildVars: Configure KCFLAGS"}
if [ "$Variant" == "" ]; then if [ "$Variant" == "" ]; then
KCFLAGS="$KCFLAGS %{?kpatch_kcflags}" KCFLAGS="$KCFLAGS %{?kpatch_kcflags}"
fi fi
} }
BuildKernel() { BuildKernel() {
%{log_msg "BuildKernel for $4"}
MakeTarget=$1 MakeTarget=$1
KernelImage=$2 KernelImage=$2
DoVDSO=$3 DoVDSO=$3
Variant=$4 Variant=$4
InstallName=${5:-vmlinuz} InstallName=${5:-vmlinuz}
%{log_msg "Setup variables"}
DoModules=1 DoModules=1
if [ "$Variant" = "zfcpdump" ]; then if [ "$Variant" = "zfcpdump" ]; then
DoModules=0 DoModules=0
@ -2048,22 +2079,25 @@ BuildKernel() {
fi fi
%if %{with_gcov} %if %{with_gcov}
%{log_msg "Setup build directories"}
# Make build directory unique for each variant, so that gcno symlinks # Make build directory unique for each variant, so that gcno symlinks
# are also unique for each variant. # are also unique for each variant.
if [ -n "$Variant" ]; then if [ -n "$Variant" ]; then
ln -s $(pwd) ../linux-%{KVERREL}-${Variant} ln -s $(pwd) ../linux-%{KVERREL}-${Variant}
fi fi
echo "GCOV - continuing build in: $(pwd)" %{log_msg "GCOV - continuing build in: $(pwd)"}
pushd ../linux-%{KVERREL}${Variant:+-${Variant}} pushd ../linux-%{KVERREL}${Variant:+-${Variant}}
pwd > ../kernel${Variant:+-${Variant}}-gcov.list pwd > ../kernel${Variant:+-${Variant}}-gcov.list
%endif %endif
%{log_msg "Calling InitBuildVars for $Variant"}
InitBuildVars $Variant InitBuildVars $Variant
echo BUILDING A KERNEL FOR ${Variant} %{_target_cpu}... %{log_msg "BUILDING A KERNEL FOR ${Variant} %{_target_cpu}..."}
%{make} ARCH=$Arch olddefconfig >/dev/null %{make} ARCH=$Arch olddefconfig >/dev/null
%{log_msg "Setup build-ids"}
# This ensures build-ids are unique to allow parallel debuginfo # This ensures build-ids are unique to allow parallel debuginfo
perl -p -i -e "s/^CONFIG_BUILD_SALT.*/CONFIG_BUILD_SALT=\"%{KVERREL}\"/" .config perl -p -i -e "s/^CONFIG_BUILD_SALT.*/CONFIG_BUILD_SALT=\"%{KVERREL}\"/" .config
%{make} ARCH=$Arch KCFLAGS="$KCFLAGS" WITH_GCOV="%{?with_gcov}" %{?_smp_mflags} $MakeTarget %{?sparse_mflags} %{?kernel_mflags} %{make} ARCH=$Arch KCFLAGS="$KCFLAGS" WITH_GCOV="%{?with_gcov}" %{?_smp_mflags} $MakeTarget %{?sparse_mflags} %{?kernel_mflags}
@ -2071,6 +2105,7 @@ BuildKernel() {
%{make} ARCH=$Arch KCFLAGS="$KCFLAGS" WITH_GCOV="%{?with_gcov}" %{?_smp_mflags} modules %{?sparse_mflags} || exit 1 %{make} ARCH=$Arch KCFLAGS="$KCFLAGS" WITH_GCOV="%{?with_gcov}" %{?_smp_mflags} modules %{?sparse_mflags} || exit 1
fi fi
%{log_msg "Setup RPM_BUILD_ROOT directories"}
mkdir -p $RPM_BUILD_ROOT/%{image_install_path} mkdir -p $RPM_BUILD_ROOT/%{image_install_path}
mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer
mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/systemtap mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/systemtap
@ -2079,32 +2114,38 @@ BuildKernel() {
%endif %endif
%ifarch aarch64 %ifarch aarch64
%{log_msg "Build dtb kernel"}
%{make} ARCH=$Arch dtbs INSTALL_DTBS_PATH=$RPM_BUILD_ROOT/%{image_install_path}/dtb-$KernelVer %{make} ARCH=$Arch dtbs INSTALL_DTBS_PATH=$RPM_BUILD_ROOT/%{image_install_path}/dtb-$KernelVer
%{make} ARCH=$Arch dtbs_install INSTALL_DTBS_PATH=$RPM_BUILD_ROOT/%{image_install_path}/dtb-$KernelVer %{make} ARCH=$Arch dtbs_install INSTALL_DTBS_PATH=$RPM_BUILD_ROOT/%{image_install_path}/dtb-$KernelVer
cp -r $RPM_BUILD_ROOT/%{image_install_path}/dtb-$KernelVer $RPM_BUILD_ROOT/lib/modules/$KernelVer/dtb cp -r $RPM_BUILD_ROOT/%{image_install_path}/dtb-$KernelVer $RPM_BUILD_ROOT/lib/modules/$KernelVer/dtb
find arch/$Arch/boot/dts -name '*.dtb' -type f -delete find arch/$Arch/boot/dts -name '*.dtb' -type f -delete
%endif %endif
%{log_msg "Cleanup temp btf files"}
# Remove large intermediate files we no longer need to save space # Remove large intermediate files we no longer need to save space
# (-f required for zfcpdump builds that do not enable BTF) # (-f required for zfcpdump builds that do not enable BTF)
rm -f vmlinux.o .tmp_vmlinux.btf rm -f vmlinux.o .tmp_vmlinux.btf
%{log_msg "Install files to RPM_BUILD_ROOT"}
# Start installing the results # Start installing the results
install -m 644 .config $RPM_BUILD_ROOT/boot/config-$KernelVer install -m 644 .config $RPM_BUILD_ROOT/boot/config-$KernelVer
install -m 644 .config $RPM_BUILD_ROOT/lib/modules/$KernelVer/config install -m 644 .config $RPM_BUILD_ROOT/lib/modules/$KernelVer/config
install -m 644 System.map $RPM_BUILD_ROOT/boot/System.map-$KernelVer install -m 644 System.map $RPM_BUILD_ROOT/boot/System.map-$KernelVer
install -m 644 System.map $RPM_BUILD_ROOT/lib/modules/$KernelVer/System.map install -m 644 System.map $RPM_BUILD_ROOT/lib/modules/$KernelVer/System.map
%{log_msg "Create initrfamfs"}
# We estimate the size of the initramfs because rpm needs to take this size # We estimate the size of the initramfs because rpm needs to take this size
# into consideration when performing disk space calculations. (See bz #530778) # into consideration when performing disk space calculations. (See bz #530778)
dd if=/dev/zero of=$RPM_BUILD_ROOT/boot/initramfs-$KernelVer.img bs=1M count=20 dd if=/dev/zero of=$RPM_BUILD_ROOT/boot/initramfs-$KernelVer.img bs=1M count=20
if [ -f arch/$Arch/boot/zImage.stub ]; then if [ -f arch/$Arch/boot/zImage.stub ]; then
%{log_msg "Copy zImage.stub to RPM_BUILD_ROOT"}
cp arch/$Arch/boot/zImage.stub $RPM_BUILD_ROOT/%{image_install_path}/zImage.stub-$KernelVer || : cp arch/$Arch/boot/zImage.stub $RPM_BUILD_ROOT/%{image_install_path}/zImage.stub-$KernelVer || :
cp arch/$Arch/boot/zImage.stub $RPM_BUILD_ROOT/lib/modules/$KernelVer/zImage.stub-$KernelVer || : cp arch/$Arch/boot/zImage.stub $RPM_BUILD_ROOT/lib/modules/$KernelVer/zImage.stub-$KernelVer || :
fi fi
%if %{signkernel} %if %{signkernel}
%{log_msg "Copy kernel for signing"}
if [ "$KernelImage" = vmlinux ]; then if [ "$KernelImage" = vmlinux ]; then
# We can't strip and sign $KernelImage in place, because # We can't strip and sign $KernelImage in place, because
# we need to preserve original vmlinux for debuginfo. # we need to preserve original vmlinux for debuginfo.
@ -2117,6 +2158,7 @@ BuildKernel() {
SignImage=$KernelImage SignImage=$KernelImage
%ifarch x86_64 aarch64 %ifarch x86_64 aarch64
%{log_msg "Sign kernel image"}
%pesign -s -i $SignImage -o vmlinuz.tmp -a %{secureboot_ca_0} -c %{secureboot_key_0} -n %{pesign_name_0} %pesign -s -i $SignImage -o vmlinuz.tmp -a %{secureboot_ca_0} -c %{secureboot_key_0} -n %{pesign_name_0}
%pesign -s -i vmlinuz.tmp -o vmlinuz.signed -a %{secureboot_ca_1} -c %{secureboot_key_1} -n %{pesign_name_1} %pesign -s -i vmlinuz.tmp -o vmlinuz.signed -a %{secureboot_ca_1} -c %{secureboot_key_1} -n %{pesign_name_1}
rm vmlinuz.tmp rm vmlinuz.tmp
@ -2133,31 +2175,35 @@ BuildKernel() {
%endif %endif
if [ ! -s vmlinuz.signed ]; then if [ ! -s vmlinuz.signed ]; then
echo "pesigning failed" %{log_msg "pesigning failed"}
exit 1 exit 1
fi fi
mv vmlinuz.signed $SignImage mv vmlinuz.signed $SignImage
# signkernel # signkernel
%endif %endif
%{log_msg "copy signed kernel"}
$CopyKernel $KernelImage \ $CopyKernel $KernelImage \
$RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer
chmod 755 $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer chmod 755 $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer
cp $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer $RPM_BUILD_ROOT/lib/modules/$KernelVer/$InstallName cp $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer $RPM_BUILD_ROOT/lib/modules/$KernelVer/$InstallName
# hmac sign the kernel for FIPS # hmac sign the kernel for FIPS
echo "Creating hmac file: $RPM_BUILD_ROOT/%{image_install_path}/.vmlinuz-$KernelVer.hmac" %{log_msg "hmac sign the kernel for FIPS"}
%{log_msg "Creating hmac file: $RPM_BUILD_ROOT/%{image_install_path}/.vmlinuz-$KernelVer.hmac"}
ls -l $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer ls -l $RPM_BUILD_ROOT/%{image_install_path}/$InstallName-$KernelVer
(cd $RPM_BUILD_ROOT/%{image_install_path} && sha512hmac $InstallName-$KernelVer) > $RPM_BUILD_ROOT/%{image_install_path}/.vmlinuz-$KernelVer.hmac; (cd $RPM_BUILD_ROOT/%{image_install_path} && sha512hmac $InstallName-$KernelVer) > $RPM_BUILD_ROOT/%{image_install_path}/.vmlinuz-$KernelVer.hmac;
cp $RPM_BUILD_ROOT/%{image_install_path}/.vmlinuz-$KernelVer.hmac $RPM_BUILD_ROOT/lib/modules/$KernelVer/.vmlinuz.hmac cp $RPM_BUILD_ROOT/%{image_install_path}/.vmlinuz-$KernelVer.hmac $RPM_BUILD_ROOT/lib/modules/$KernelVer/.vmlinuz.hmac
if [ $DoModules -eq 1 ]; then if [ $DoModules -eq 1 ]; then
%{log_msg "Install modules in RPM_BUILD_ROOT"}
# Override $(mod-fw) because we don't want it to install any firmware # Override $(mod-fw) because we don't want it to install any firmware
# we'll get it from the linux-firmware package and we don't want conflicts # we'll get it from the linux-firmware package and we don't want conflicts
%{make} %{?_smp_mflags} ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT %{?_smp_mflags} modules_install KERNELRELEASE=$KernelVer mod-fw= %{make} %{?_smp_mflags} ARCH=$Arch INSTALL_MOD_PATH=$RPM_BUILD_ROOT %{?_smp_mflags} modules_install KERNELRELEASE=$KernelVer mod-fw=
fi fi
%if %{with_gcov} %if %{with_gcov}
%{log_msg "install gcov-needed files to $BUILDROOT/$BUILD/"}
# install gcov-needed files to $BUILDROOT/$BUILD/...: # install gcov-needed files to $BUILDROOT/$BUILD/...:
# gcov_info->filename is absolute path # gcov_info->filename is absolute path
# gcno references to sources can use absolute paths (e.g. in out-of-tree builds) # gcno references to sources can use absolute paths (e.g. in out-of-tree builds)
@ -2165,6 +2211,7 @@ BuildKernel() {
find . \( -name '*.gcno' -o -name '*.[chS]' \) -exec install -D '{}' "$RPM_BUILD_ROOT/$(pwd)/{}" \; find . \( -name '*.gcno' -o -name '*.[chS]' \) -exec install -D '{}' "$RPM_BUILD_ROOT/$(pwd)/{}" \;
%endif %endif
%{log_msg "Add VDSO files"}
# add an a noop %%defattr statement 'cause rpm doesn't like empty file list files # add an a noop %%defattr statement 'cause rpm doesn't like empty file list files
echo '%%defattr(-,-,-)' > ../kernel${Variant:+-${Variant}}-ldsoconf.list echo '%%defattr(-,-,-)' > ../kernel${Variant:+-${Variant}}-ldsoconf.list
if [ $DoVDSO -ne 0 ]; then if [ $DoVDSO -ne 0 ]; then
@ -2178,6 +2225,7 @@ BuildKernel() {
rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/vdso/.build-id rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/vdso/.build-id
fi fi
%{log_msg "Save headers/makefiles, etc. for kernel-headers"}
# And save the headers/makefiles etc for building modules against # And save the headers/makefiles etc for building modules against
# #
# This all looks scary, but the end result is supposed to be: # This all looks scary, but the end result is supposed to be:
@ -2212,12 +2260,12 @@ BuildKernel() {
# NOTENOTE: script which dynamically adds exported kernel symbol # NOTENOTE: script which dynamically adds exported kernel symbol
# NOTENOTE: checksums to the rpm metadata provides list. # NOTENOTE: checksums to the rpm metadata provides list.
# NOTENOTE: if you change the symvers name, update the backend too # NOTENOTE: if you change the symvers name, update the backend too
echo "**** GENERATING kernel ABI metadata ****" %{log_msg "GENERATING kernel ABI metadata"}
%compression --stdout %compression_flags < Module.symvers > $RPM_BUILD_ROOT/boot/symvers-$KernelVer.%compext %compression --stdout %compression_flags < Module.symvers > $RPM_BUILD_ROOT/boot/symvers-$KernelVer.%compext
cp $RPM_BUILD_ROOT/boot/symvers-$KernelVer.%compext $RPM_BUILD_ROOT/lib/modules/$KernelVer/symvers.%compext cp $RPM_BUILD_ROOT/boot/symvers-$KernelVer.%compext $RPM_BUILD_ROOT/lib/modules/$KernelVer/symvers.%compext
%if %{with_kabichk} %if %{with_kabichk}
echo "**** kABI checking is enabled in kernel SPEC file. ****" %{log_msg "kABI checking is enabled in kernel SPEC file."}
chmod 0755 $RPM_SOURCE_DIR/check-kabi chmod 0755 $RPM_SOURCE_DIR/check-kabi
if [ -e $RPM_SOURCE_DIR/Module.kabi_%{_target_cpu}$Variant ]; then if [ -e $RPM_SOURCE_DIR/Module.kabi_%{_target_cpu}$Variant ]; then
cp $RPM_SOURCE_DIR/Module.kabi_%{_target_cpu}$Variant $RPM_BUILD_ROOT/Module.kabi cp $RPM_SOURCE_DIR/Module.kabi_%{_target_cpu}$Variant $RPM_BUILD_ROOT/Module.kabi
@ -2225,19 +2273,19 @@ BuildKernel() {
# for now, don't keep it around. # for now, don't keep it around.
rm $RPM_BUILD_ROOT/Module.kabi rm $RPM_BUILD_ROOT/Module.kabi
else else
echo "**** NOTE: Cannot find reference Module.kabi file. ****" %{log_msg "NOTE: Cannot find reference Module.kabi file."}
fi fi
%endif %endif
%if %{with_kabidupchk} %if %{with_kabidupchk}
echo "**** kABI DUP checking is enabled in kernel SPEC file. ****" %{log_msg "kABI DUP checking is enabled in kernel SPEC file."}
if [ -e $RPM_SOURCE_DIR/Module.kabi_dup_%{_target_cpu}$Variant ]; then if [ -e $RPM_SOURCE_DIR/Module.kabi_dup_%{_target_cpu}$Variant ]; then
cp $RPM_SOURCE_DIR/Module.kabi_dup_%{_target_cpu}$Variant $RPM_BUILD_ROOT/Module.kabi cp $RPM_SOURCE_DIR/Module.kabi_dup_%{_target_cpu}$Variant $RPM_BUILD_ROOT/Module.kabi
$RPM_SOURCE_DIR/check-kabi -k $RPM_BUILD_ROOT/Module.kabi -s Module.symvers || exit 1 $RPM_SOURCE_DIR/check-kabi -k $RPM_BUILD_ROOT/Module.kabi -s Module.symvers || exit 1
# for now, don't keep it around. # for now, don't keep it around.
rm $RPM_BUILD_ROOT/Module.kabi rm $RPM_BUILD_ROOT/Module.kabi
else else
echo "**** NOTE: Cannot find DUP reference Module.kabi file. ****" %{log_msg "NOTE: Cannot find DUP reference Module.kabi file."}
fi fi
%endif %endif
@ -2250,7 +2298,7 @@ BuildKernel() {
mkdir -p $RPM_BUILD_ROOT/kabi-dwarf/stablelists mkdir -p $RPM_BUILD_ROOT/kabi-dwarf/stablelists
tar -xvf %{SOURCE300} -C $RPM_BUILD_ROOT/kabi-dwarf/stablelists tar -xvf %{SOURCE300} -C $RPM_BUILD_ROOT/kabi-dwarf/stablelists
echo "**** GENERATING DWARF-based kABI baseline dataset ****" %{log_msg "GENERATING DWARF-based kABI baseline dataset"}
chmod 0755 $RPM_BUILD_ROOT/kabi-dwarf/run_kabi-dw.sh chmod 0755 $RPM_BUILD_ROOT/kabi-dwarf/run_kabi-dw.sh
$RPM_BUILD_ROOT/kabi-dwarf/run_kabi-dw.sh generate \ $RPM_BUILD_ROOT/kabi-dwarf/run_kabi-dw.sh generate \
"$RPM_BUILD_ROOT/kabi-dwarf/stablelists/kabi-current/kabi_stablelist_%{_target_cpu}" \ "$RPM_BUILD_ROOT/kabi-dwarf/stablelists/kabi-current/kabi_stablelist_%{_target_cpu}" \
@ -2269,26 +2317,27 @@ BuildKernel() {
mkdir -p $RPM_BUILD_ROOT/kabi-dwarf/stablelists mkdir -p $RPM_BUILD_ROOT/kabi-dwarf/stablelists
tar -xvf %{SOURCE300} -C $RPM_BUILD_ROOT/kabi-dwarf/stablelists tar -xvf %{SOURCE300} -C $RPM_BUILD_ROOT/kabi-dwarf/stablelists
echo "**** GENERATING DWARF-based kABI dataset ****" %{log_msg "GENERATING DWARF-based kABI dataset"}
chmod 0755 $RPM_BUILD_ROOT/kabi-dwarf/run_kabi-dw.sh chmod 0755 $RPM_BUILD_ROOT/kabi-dwarf/run_kabi-dw.sh
$RPM_BUILD_ROOT/kabi-dwarf/run_kabi-dw.sh generate \ $RPM_BUILD_ROOT/kabi-dwarf/run_kabi-dw.sh generate \
"$RPM_BUILD_ROOT/kabi-dwarf/stablelists/kabi-current/kabi_stablelist_%{_target_cpu}" \ "$RPM_BUILD_ROOT/kabi-dwarf/stablelists/kabi-current/kabi_stablelist_%{_target_cpu}" \
"$(pwd)" \ "$(pwd)" \
"$RPM_BUILD_ROOT/kabi-dwarf/base/%{_target_cpu}${Variant:+.${Variant}}.tmp" || : "$RPM_BUILD_ROOT/kabi-dwarf/base/%{_target_cpu}${Variant:+.${Variant}}.tmp" || :
echo "**** kABI DWARF-based comparison report ****" %{log_msg "kABI DWARF-based comparison report"}
$RPM_BUILD_ROOT/kabi-dwarf/run_kabi-dw.sh compare \ $RPM_BUILD_ROOT/kabi-dwarf/run_kabi-dw.sh compare \
"$RPM_BUILD_ROOT/kabi-dwarf/base/%{_target_cpu}${Variant:+.${Variant}}" \ "$RPM_BUILD_ROOT/kabi-dwarf/base/%{_target_cpu}${Variant:+.${Variant}}" \
"$RPM_BUILD_ROOT/kabi-dwarf/base/%{_target_cpu}${Variant:+.${Variant}}.tmp" || : "$RPM_BUILD_ROOT/kabi-dwarf/base/%{_target_cpu}${Variant:+.${Variant}}.tmp" || :
echo "**** End of kABI DWARF-based comparison report ****" %{log_msg "End of kABI DWARF-based comparison report"}
else else
echo "**** Baseline dataset for kABI DWARF-BASED comparison report not found ****" %{log_msg "Baseline dataset for kABI DWARF-BASED comparison report not found"}
fi fi
rm -rf $RPM_BUILD_ROOT/kabi-dwarf rm -rf $RPM_BUILD_ROOT/kabi-dwarf
fi fi
%endif %endif
%{log_msg "Cleanup Makefiles/Kconfig files"}
# then drop all but the needed Makefiles/Kconfig files # then drop all but the needed Makefiles/Kconfig files
rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/scripts
rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include rm -rf $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/include
@ -2300,11 +2349,13 @@ BuildKernel() {
%ifarch s390x %ifarch s390x
# CONFIG_EXPOLINE_EXTERN=y produces arch/s390/lib/expoline/expoline.o # CONFIG_EXPOLINE_EXTERN=y produces arch/s390/lib/expoline/expoline.o
# which is needed during external module build. # which is needed during external module build.
%{log_msg "Copy expoline.o"}
if [ -f arch/s390/lib/expoline/expoline.o ]; then if [ -f arch/s390/lib/expoline/expoline.o ]; then
cp -a --parents arch/s390/lib/expoline/expoline.o $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents arch/s390/lib/expoline/expoline.o $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
fi fi
%endif %endif
%{log_msg "Copy additional files for make targets"}
# Files for 'make scripts' to succeed with kernel-devel. # Files for 'make scripts' to succeed with kernel-devel.
mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/security/selinux/include mkdir -p $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/security/selinux/include
cp -a --parents security/selinux/include/classmap.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents security/selinux/include/classmap.h $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
@ -2398,6 +2449,7 @@ BuildKernel() {
cp -a --parents tools/objtool/arch/x86/ $RPM_BUILD_ROOT/lib/modules/$KernelVer/build cp -a --parents tools/objtool/arch/x86/ $RPM_BUILD_ROOT/lib/modules/$KernelVer/build
%endif %endif
%{log_msg "Clean up intermediate tools files"}
# Clean up intermediate tools files # Clean up intermediate tools files
find $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/tools \( -iname "*.o" -o -iname "*.cmd" \) -exec rm -f {} + find $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/tools \( -iname "*.o" -o -iname "*.cmd" \) -exec rm -f {} +
@ -2411,6 +2463,7 @@ BuildKernel() {
eu-readelf -n vmlinux | grep "Build ID" | awk '{print $NF}' > vmlinux.id eu-readelf -n vmlinux | grep "Build ID" | awk '{print $NF}' > vmlinux.id
cp vmlinux.id $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/vmlinux.id cp vmlinux.id $RPM_BUILD_ROOT/lib/modules/$KernelVer/build/vmlinux.id
%{log_msg "Copy additional files for kernel-debuginfo rpm"}
# #
# save the vmlinux file for kernel debugging into the kernel-debuginfo rpm # save the vmlinux file for kernel debugging into the kernel-debuginfo rpm
# (use mv + symlink instead of cp to reduce disk space requirements) # (use mv + symlink instead of cp to reduce disk space requirements)
@ -2437,13 +2490,14 @@ BuildKernel() {
%py_byte_compile %{python3} $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer/scripts/gdb %py_byte_compile %{python3} $RPM_BUILD_ROOT%{debuginfodir}/lib/modules/$KernelVer/scripts/gdb
%endif %endif
%{log_msg "Create modnames"}
find $RPM_BUILD_ROOT/lib/modules/$KernelVer -name "*.ko" -type f >modnames find $RPM_BUILD_ROOT/lib/modules/$KernelVer -name "*.ko" -type f >modnames
# mark modules executable so that strip-to-file can strip them # mark modules executable so that strip-to-file can strip them
xargs --no-run-if-empty chmod u+x < modnames xargs --no-run-if-empty chmod u+x < modnames
# Generate a list of modules for block and networking. # Generate a list of modules for block and networking.
%{log_msg "Generate a list of modules for block and networking"}
grep -F /drivers/ modnames | xargs --no-run-if-empty nm -upA | grep -F /drivers/ modnames | xargs --no-run-if-empty nm -upA |
sed -n 's,^.*/\([^/]*\.ko\): *U \(.*\)$,\1 \2,p' > drivers.undef sed -n 's,^.*/\([^/]*\.ko\): *U \(.*\)$,\1 \2,p' > drivers.undef
@ -2465,6 +2519,7 @@ BuildKernel() {
collect_modules_list modesetting \ collect_modules_list modesetting \
'drm_crtc_init' 'drm_crtc_init'
%{log_msg "detect missing or incorrect license tags"}
# detect missing or incorrect license tags # detect missing or incorrect license tags
( find $RPM_BUILD_ROOT/lib/modules/$KernelVer -name '*.ko' | xargs /sbin/modinfo -l | \ ( find $RPM_BUILD_ROOT/lib/modules/$KernelVer -name '*.ko' | xargs /sbin/modinfo -l | \
grep -E -v 'GPL( v2)?$|Dual BSD/GPL$|Dual MPL/GPL$|GPL and additional rights$' ) && exit 1 grep -E -v 'GPL( v2)?$|Dual BSD/GPL$|Dual MPL/GPL$|GPL and additional rights$' ) && exit 1
@ -2480,8 +2535,10 @@ BuildKernel() {
popd popd
} }
%{log_msg "Remove depmod files"}
remove_depmod_files remove_depmod_files
%{log_msg "Identify modules in kenrel-modules-* packages"}
# Identify modules in the kernel-modules-extras package # Identify modules in the kernel-modules-extras package
%{SOURCE20} $RPM_BUILD_ROOT lib/modules/$KernelVer $(realpath configs/mod-extra.list) %{SOURCE20} $RPM_BUILD_ROOT lib/modules/$KernelVer $(realpath configs/mod-extra.list)
# Identify modules in the kernel-modules-internal package # Identify modules in the kernel-modules-internal package
@ -2498,6 +2555,7 @@ BuildKernel() {
# #
# Generate the kernel-core and kernel-modules files lists # Generate the kernel-core and kernel-modules files lists
# #
%{log_msg "Gemerate the kernel-core and kernel-modules files lists"}
# Copy the System.map file for depmod to use, and create a backup of the # Copy the System.map file for depmod to use, and create a backup of the
# full module tree so we can restore it after we're done filtering # full module tree so we can restore it after we're done filtering
@ -2507,6 +2565,7 @@ BuildKernel() {
mkdir restore mkdir restore
cp -r lib/modules/$KernelVer/* restore/. cp -r lib/modules/$KernelVer/* restore/.
%{log_msg "Remove files in the kernel-modules-* file lists"}
# don't include anything going into kernel-modules-extra in the file lists # don't include anything going into kernel-modules-extra in the file lists
xargs rm -rf < mod-extra.list xargs rm -rf < mod-extra.list
# don't include anything going into kernel-modules-internal in the file lists # don't include anything going into kernel-modules-internal in the file lists
@ -2521,6 +2580,7 @@ BuildKernel() {
fi fi
if [ $DoModules -eq 1 ]; then if [ $DoModules -eq 1 ]; then
%{log_msg "Filter files into core and modules lists"}
# Find all the module files and filter them out into the core and # Find all the module files and filter them out into the core and
# modules lists. This actually removes anything going into -modules # modules lists. This actually removes anything going into -modules
# from the dir. # from the dir.
@ -2531,13 +2591,14 @@ BuildKernel() {
# Run depmod on the resulting module tree and make sure it isn't broken # Run depmod on the resulting module tree and make sure it isn't broken
depmod -b . -aeF ./System.map $KernelVer &> depmod.out depmod -b . -aeF ./System.map $KernelVer &> depmod.out
if [ -s depmod.out ]; then if [ -s depmod.out ]; then
echo "Depmod failure" %{log_msg "Depmod failure"}
cat depmod.out cat depmod.out
exit 1 exit 1
else else
rm depmod.out rm depmod.out
fi fi
else else
%{log_msg "Create empty files for RPM packaging"}
# Ensure important files/directories exist to let the packaging succeed # Ensure important files/directories exist to let the packaging succeed
echo '%%defattr(-,-,-)' > modules.list echo '%%defattr(-,-,-)' > modules.list
echo '%%defattr(-,-,-)' > k-d.list echo '%%defattr(-,-,-)' > k-d.list
@ -2549,9 +2610,10 @@ BuildKernel() {
fi fi
if [[ "$Variant" == "rt" || "$Variant" == "rt-debug" ]]; then if [[ "$Variant" == "rt" || "$Variant" == "rt-debug" ]]; then
echo "Skipping efiuki build" %{log_msg "Skipping efiuki build"}
else else
%if %{with_efiuki} %if %{with_efiuki}
%{log_msg "Setup the EFI UKI kernel"}
popd popd
KernelUnifiedImageDir="$RPM_BUILD_ROOT/lib/modules/$KernelVer" KernelUnifiedImageDir="$RPM_BUILD_ROOT/lib/modules/$KernelVer"
@ -2571,13 +2633,13 @@ BuildKernel() {
$KernelUnifiedImage $KernelUnifiedImage
%if %{signkernel} %if %{signkernel}
%{log_msg "Sign the EFI UKI kernel"}
%pesign -s -i $KernelUnifiedImage -o $KernelUnifiedImage.tmp -a %{secureboot_ca_0} -c %{secureboot_key_0} -n %{pesign_name_0} %pesign -s -i $KernelUnifiedImage -o $KernelUnifiedImage.tmp -a %{secureboot_ca_0} -c %{secureboot_key_0} -n %{pesign_name_0}
%pesign -s -i $KernelUnifiedImage.tmp -o $KernelUnifiedImage.signed -a %{secureboot_ca_1} -c %{secureboot_key_1} -n %{pesign_name_1} %pesign -s -i $KernelUnifiedImage.tmp -o $KernelUnifiedImage.signed -a %{secureboot_ca_1} -c %{secureboot_key_1} -n %{pesign_name_1}
rm -f $KernelUnifiedImage.tmp rm -f $KernelUnifiedImage.tmp
if [ ! -s $KernelUnifiedImage.signed ]; then if [ ! -s $KernelUnifiedImage.signed ]; then
echo "pesigning failed" %{log_msg "pesigning failed"}
exit 1 exit 1
fi fi
mv $KernelUnifiedImage.signed $KernelUnifiedImage mv $KernelUnifiedImage.signed $KernelUnifiedImage
@ -2599,6 +2661,7 @@ BuildKernel() {
find lib/modules/$KernelVer/kernel -mindepth 1 -type d | sort -n > module-dirs.list find lib/modules/$KernelVer/kernel -mindepth 1 -type d | sort -n > module-dirs.list
# Cleanup # Cleanup
%{log_msg "Cleanup build files"}
rm System.map rm System.map
# Just "cp -r" can be very slow: here, it rewrites _existing files_ # Just "cp -r" can be very slow: here, it rewrites _existing files_
# with open(O_TRUNC). Many filesystems synchronously wait for metadata # with open(O_TRUNC). Many filesystems synchronously wait for metadata
@ -2613,6 +2676,7 @@ BuildKernel() {
# Make sure the files lists start with absolute paths or rpmbuild fails. # Make sure the files lists start with absolute paths or rpmbuild fails.
# Also add in the dir entries # Also add in the dir entries
%{log_msg "Create module list files for all kernel variants"}
sed -e 's/^lib*/\/lib/' %{?zipsed} $RPM_BUILD_ROOT/k-d.list > ../kernel${Variant:+-${Variant}}-modules.list sed -e 's/^lib*/\/lib/' %{?zipsed} $RPM_BUILD_ROOT/k-d.list > ../kernel${Variant:+-${Variant}}-modules.list
sed -e 's/^lib*/%dir \/lib/' %{?zipsed} $RPM_BUILD_ROOT/module-dirs.list > ../kernel${Variant:+-${Variant}}-modules-core.list sed -e 's/^lib*/%dir \/lib/' %{?zipsed} $RPM_BUILD_ROOT/module-dirs.list > ../kernel${Variant:+-${Variant}}-modules-core.list
sed -e 's/^lib*/\/lib/' %{?zipsed} $RPM_BUILD_ROOT/modules.list >> ../kernel${Variant:+-${Variant}}-modules-core.list sed -e 's/^lib*/\/lib/' %{?zipsed} $RPM_BUILD_ROOT/modules.list >> ../kernel${Variant:+-${Variant}}-modules-core.list
@ -2621,7 +2685,8 @@ BuildKernel() {
sed -e 's/^lib*/\/lib/' %{?zipsed} $RPM_BUILD_ROOT/mod-kvm.list >> ../kernel${Variant:+-${Variant}}-kvm.list sed -e 's/^lib*/\/lib/' %{?zipsed} $RPM_BUILD_ROOT/mod-kvm.list >> ../kernel${Variant:+-${Variant}}-kvm.list
fi fi
# Cleanup # Cleanup kernel variant module lists
%{log_msg "Clean up kernel variant module lists"}
rm -f $RPM_BUILD_ROOT/k-d.list rm -f $RPM_BUILD_ROOT/k-d.list
rm -f $RPM_BUILD_ROOT/modules.list rm -f $RPM_BUILD_ROOT/modules.list
rm -f $RPM_BUILD_ROOT/module-dirs.list rm -f $RPM_BUILD_ROOT/module-dirs.list
@ -2636,6 +2701,7 @@ BuildKernel() {
%if %{signmodules} %if %{signmodules}
if [ $DoModules -eq 1 ]; then if [ $DoModules -eq 1 ]; then
%{log_msg "Save the signing keys for modules"}
# Save the signing keys so we can sign the modules in __modsign_install_post # Save the signing keys so we can sign the modules in __modsign_install_post
cp certs/signing_key.pem certs/signing_key.pem.sign${Variant:++${Variant}} cp certs/signing_key.pem certs/signing_key.pem.sign${Variant:++${Variant}}
cp certs/signing_key.x509 certs/signing_key.x509.sign${Variant:++${Variant}} cp certs/signing_key.x509 certs/signing_key.x509.sign${Variant:++${Variant}}
@ -2643,6 +2709,7 @@ BuildKernel() {
%endif %endif
# Move the devel headers out of the root file system # Move the devel headers out of the root file system
%{log_msg "Move the devel headers to RPM_BUILD_ROOT"}
mkdir -p $RPM_BUILD_ROOT/usr/src/kernels mkdir -p $RPM_BUILD_ROOT/usr/src/kernels
mv $RPM_BUILD_ROOT/lib/modules/$KernelVer/build $RPM_BUILD_ROOT/$DevelDir mv $RPM_BUILD_ROOT/lib/modules/$KernelVer/build $RPM_BUILD_ROOT/$DevelDir
@ -2655,6 +2722,7 @@ BuildKernel() {
# Generate vmlinux.h and put it to kernel-devel path # Generate vmlinux.h and put it to kernel-devel path
# zfcpdump build does not have btf anymore # zfcpdump build does not have btf anymore
if [ "$Variant" != "zfcpdump" ]; then if [ "$Variant" != "zfcpdump" ]; then
%{log_msg "Build the bootstrap bpftool to generate vmlinux.h"}
# Build the bootstrap bpftool to generate vmlinux.h # Build the bootstrap bpftool to generate vmlinux.h
export BPFBOOTSTRAP_CFLAGS=$(echo "%{__global_compiler_flags}" | sed -r "s/\-specs=[^\ ]+\/redhat-annobin-cc1//") export BPFBOOTSTRAP_CFLAGS=$(echo "%{__global_compiler_flags}" | sed -r "s/\-specs=[^\ ]+\/redhat-annobin-cc1//")
export BPFBOOTSTRAP_LDFLAGS=$(echo "%{__global_ldflags}" | sed -r "s/\-specs=[^\ ]+\/redhat-annobin-cc1//") export BPFBOOTSTRAP_LDFLAGS=$(echo "%{__global_ldflags}" | sed -r "s/\-specs=[^\ ]+\/redhat-annobin-cc1//")
@ -2663,12 +2731,14 @@ BuildKernel() {
tools/bpf/bpftool/bootstrap/bpftool btf dump file vmlinux format c > $RPM_BUILD_ROOT/$DevelDir/vmlinux.h tools/bpf/bpftool/bootstrap/bpftool btf dump file vmlinux format c > $RPM_BUILD_ROOT/$DevelDir/vmlinux.h
fi fi
%{log_msg "Cleanup kernel-devel and kernel-debuginfo files"}
# prune junk from kernel-devel # prune junk from kernel-devel
find $RPM_BUILD_ROOT/usr/src/kernels -name ".*.cmd" -delete find $RPM_BUILD_ROOT/usr/src/kernels -name ".*.cmd" -delete
# prune junk from kernel-debuginfo # prune junk from kernel-debuginfo
find $RPM_BUILD_ROOT/usr/src/kernels -name "*.mod.c" -delete find $RPM_BUILD_ROOT/usr/src/kernels -name "*.mod.c" -delete
# Red Hat UEFI Secure Boot CA cert, which can be used to authenticate the kernel # Red Hat UEFI Secure Boot CA cert, which can be used to authenticate the kernel
%{log_msg "Install certs"}
mkdir -p $RPM_BUILD_ROOT%{_datadir}/doc/kernel-keys/$KernelVer mkdir -p $RPM_BUILD_ROOT%{_datadir}/doc/kernel-keys/$KernelVer
%ifarch x86_64 aarch64 %ifarch x86_64 aarch64
install -m 0644 %{secureboot_ca_0} $RPM_BUILD_ROOT%{_datadir}/doc/kernel-keys/$KernelVer/kernel-signing-ca-20200609.cer install -m 0644 %{secureboot_ca_0} $RPM_BUILD_ROOT%{_datadir}/doc/kernel-keys/$KernelVer/kernel-signing-ca-20200609.cer
@ -2690,6 +2760,7 @@ BuildKernel() {
%endif %endif
%if %{with_ipaclones} %if %{with_ipaclones}
%{log_msg "install IPA clones"}
MAXPROCS=$(echo %{?_smp_mflags} | sed -n 's/-j\s*\([0-9]\+\)/\1/p') MAXPROCS=$(echo %{?_smp_mflags} | sed -n 's/-j\s*\([0-9]\+\)/\1/p')
if [ -z "$MAXPROCS" ]; then if [ -z "$MAXPROCS" ]; then
MAXPROCS=1 MAXPROCS=1
@ -2718,7 +2789,6 @@ cd linux-%{KVERREL}
%if %{with_debug} %if %{with_debug}
%if %{with_realtime} %if %{with_realtime}
echo "building rt-debug"
BuildKernel %make_target %kernel_image %{_use_vdso} rt-debug BuildKernel %make_target %kernel_image %{_use_vdso} rt-debug
%endif %endif
@ -2731,7 +2801,6 @@ BuildKernel %make_target %kernel_image %{_use_vdso} 64k-debug
%endif %endif
%if %{with_up} %if %{with_up}
echo "building main debug package"
BuildKernel %make_target %kernel_image %{_use_vdso} debug BuildKernel %make_target %kernel_image %{_use_vdso} debug
%endif %endif
%endif %endif
@ -2760,6 +2829,7 @@ BuildKernel %make_target %kernel_image %{_use_vdso}
%if !%{with_debug} && !%{with_zfcpdump} && !%{with_up} && !%{with_arm64_16k} && !%{with_arm64_64k} && !%{with_realtime} %if !%{with_debug} && !%{with_zfcpdump} && !%{with_up} && !%{with_arm64_16k} && !%{with_arm64_64k} && !%{with_realtime}
# If only building the user space tools, then initialize the build environment # If only building the user space tools, then initialize the build environment
# and some variables so that the various userspace tools can be built. # and some variables so that the various userspace tools can be built.
%{log_msg "Initialize userspace tools build environment"}
InitBuildVars InitBuildVars
%endif %endif
%endif %endif
@ -2770,6 +2840,7 @@ InitBuildVars
%global perf_make \ %global perf_make \
%{__make} %{?make_opts} EXTRA_CFLAGS="${RPM_OPT_FLAGS}" EXTRA_CXXFLAGS="${RPM_OPT_FLAGS}" LDFLAGS="%{__global_ldflags} -Wl,-E" %{?cross_opts} -C tools/perf V=1 NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 WERROR=0 NO_LIBUNWIND=1 HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_STRLCPY=1 NO_BIONIC=1 LIBBPF_DYNAMIC=1 LIBTRACEEVENT_DYNAMIC=1 %{?perf_build_extra_opts} prefix=%{_prefix} PYTHON=%{__python3} %{__make} %{?make_opts} EXTRA_CFLAGS="${RPM_OPT_FLAGS}" EXTRA_CXXFLAGS="${RPM_OPT_FLAGS}" LDFLAGS="%{__global_ldflags} -Wl,-E" %{?cross_opts} -C tools/perf V=1 NO_PERF_READ_VDSO32=1 NO_PERF_READ_VDSOX32=1 WERROR=0 NO_LIBUNWIND=1 HAVE_CPLUS_DEMANGLE=1 NO_GTK2=1 NO_STRLCPY=1 NO_BIONIC=1 LIBBPF_DYNAMIC=1 LIBTRACEEVENT_DYNAMIC=1 %{?perf_build_extra_opts} prefix=%{_prefix} PYTHON=%{__python3}
%if %{with_perf} %if %{with_perf}
%{log_msg "Build perf"}
# perf # perf
# make sure check-headers.sh is executable # make sure check-headers.sh is executable
chmod +x tools/perf/check-headers.sh chmod +x tools/perf/check-headers.sh
@ -2779,6 +2850,7 @@ chmod +x tools/perf/check-headers.sh
%if %{with_libperf} %if %{with_libperf}
%global libperf_make \ %global libperf_make \
%{__make} %{?make_opts} EXTRA_CFLAGS="${RPM_OPT_FLAGS}" LDFLAGS="%{__global_ldflags}" %{?cross_opts} -C tools/lib/perf V=1 %{__make} %{?make_opts} EXTRA_CFLAGS="${RPM_OPT_FLAGS}" LDFLAGS="%{__global_ldflags}" %{?cross_opts} -C tools/lib/perf V=1
%{log_msg "build libperf"}
%{libperf_make} DESTDIR=$RPM_BUILD_ROOT %{libperf_make} DESTDIR=$RPM_BUILD_ROOT
%endif %endif
@ -2790,44 +2862,56 @@ chmod +x tools/perf/check-headers.sh
# cpupower # cpupower
# make sure version-gen.sh is executable. # make sure version-gen.sh is executable.
chmod +x tools/power/cpupower/utils/version-gen.sh chmod +x tools/power/cpupower/utils/version-gen.sh
%{log_msg "build cpupower"}
%{tools_make} %{?_smp_mflags} -C tools/power/cpupower CPUFREQ_BENCH=false DEBUG=false %{tools_make} %{?_smp_mflags} -C tools/power/cpupower CPUFREQ_BENCH=false DEBUG=false
%ifarch x86_64 %ifarch x86_64
pushd tools/power/cpupower/debug/x86_64 pushd tools/power/cpupower/debug/x86_64
%{log_msg "build centrino-decode powernow-k8-decode"}
%{tools_make} %{?_smp_mflags} centrino-decode powernow-k8-decode %{tools_make} %{?_smp_mflags} centrino-decode powernow-k8-decode
popd popd
%endif %endif
%ifarch x86_64 %ifarch x86_64
pushd tools/power/x86/x86_energy_perf_policy/ pushd tools/power/x86/x86_energy_perf_policy/
%{log_msg "build x86_energy_perf_policy"}
%{tools_make} %{tools_make}
popd popd
pushd tools/power/x86/turbostat pushd tools/power/x86/turbostat
%{log_msg "build turbostat"}
%{tools_make} %{tools_make}
popd popd
pushd tools/power/x86/intel-speed-select pushd tools/power/x86/intel-speed-select
%{log_msg "build intel-speed-select"}
%{tools_make} %{tools_make}
popd popd
pushd tools/arch/x86/intel_sdsi pushd tools/arch/x86/intel_sdsi
%{log_msg "build intel_sdsi"}
%{tools_make} CFLAGS="${RPM_OPT_FLAGS}" %{tools_make} CFLAGS="${RPM_OPT_FLAGS}"
popd popd
%endif %endif
%endif %endif
pushd tools/thermal/tmon/ pushd tools/thermal/tmon/
%{log_msg "build tmon"}
%{tools_make} %{tools_make}
popd popd
pushd tools/iio/ pushd tools/iio/
%{log_msg "build iio"}
%{tools_make} %{tools_make}
popd popd
pushd tools/gpio/ pushd tools/gpio/
%{log_msg "build gpio"}
%{tools_make} %{tools_make}
popd popd
# build VM tools # build VM tools
pushd tools/mm/ pushd tools/mm/
%{log_msg "build slabinfo page_owner_sort"}
%{tools_make} slabinfo page_owner_sort %{tools_make} slabinfo page_owner_sort
popd popd
pushd tools/verification/rv/ pushd tools/verification/rv/
%{log_msg "build rv"}
%{tools_make} %{tools_make}
popd popd
pushd tools/tracing/rtla pushd tools/tracing/rtla
%{log_msg "build rtla"}
%{tools_make} %{tools_make}
popd popd
%endif %endif
@ -2839,26 +2923,31 @@ fi
%if %{with_bpftool} %if %{with_bpftool}
%global bpftool_make \ %global bpftool_make \
%{__make} EXTRA_CFLAGS="${RPM_OPT_FLAGS}" EXTRA_LDFLAGS="%{__global_ldflags}" DESTDIR=$RPM_BUILD_ROOT %{?make_opts} VMLINUX_H="${RPM_VMLINUX_H}" V=1 %{__make} EXTRA_CFLAGS="${RPM_OPT_FLAGS}" EXTRA_LDFLAGS="%{__global_ldflags}" DESTDIR=$RPM_BUILD_ROOT %{?make_opts} VMLINUX_H="${RPM_VMLINUX_H}" V=1
%{log_msg "build bpftool"}
pushd tools/bpf/bpftool pushd tools/bpf/bpftool
%{bpftool_make} %{bpftool_make}
popd popd
%else %else
echo "bpftools disabled ... disabling selftests" %{log_msg "bpftools disabled ... disabling selftests"}
%endif %endif
%if %{with_selftests} %if %{with_selftests}
%{log_msg "start build selftests"}
# Unfortunately, samples/bpf/Makefile expects that the headers are installed # Unfortunately, samples/bpf/Makefile expects that the headers are installed
# in the source tree. We installed them previously to $RPM_BUILD_ROOT/usr # in the source tree. We installed them previously to $RPM_BUILD_ROOT/usr
# but there's no way to tell the Makefile to take them from there. # but there's no way to tell the Makefile to take them from there.
%{log_msg "install headers for selftests"}
%{make} %{?_smp_mflags} headers_install %{make} %{?_smp_mflags} headers_install
# If we re building only tools without kernel, we need to generate config # If we re building only tools without kernel, we need to generate config
# headers and prepare tree for modules building. The modules_prepare target # headers and prepare tree for modules building. The modules_prepare target
# will cover both. # will cover both.
if [ ! -f include/generated/autoconf.h ]; then if [ ! -f include/generated/autoconf.h ]; then
%{log_msg "modules_prepare for selftests"}
%{make} %{?_smp_mflags} modules_prepare %{make} %{?_smp_mflags} modules_prepare
fi fi
%{log_msg "build samples/bpf"}
%{make} %{?_smp_mflags} ARCH=$Arch V=1 M=samples/bpf/ VMLINUX_H="${RPM_VMLINUX_H}" || true %{make} %{?_smp_mflags} ARCH=$Arch V=1 M=samples/bpf/ VMLINUX_H="${RPM_VMLINUX_H}" || true
# Prevent bpf selftests to build bpftool repeatedly: # Prevent bpf selftests to build bpftool repeatedly:
@ -2873,10 +2962,12 @@ pushd tools/testing/selftests
force_targets="" force_targets=""
%endif %endif
%{log_msg "main selftests compile"}
%{make} %{?_smp_mflags} ARCH=$Arch V=1 TARGETS="bpf mm livepatch net net/forwarding net/mptcp netfilter tc-testing memfd drivers/net/bonding" SKIP_TARGETS="" $force_targets INSTALL_PATH=%{buildroot}%{_libexecdir}/kselftests VMLINUX_H="${RPM_VMLINUX_H}" install %{make} %{?_smp_mflags} ARCH=$Arch V=1 TARGETS="bpf mm livepatch net net/forwarding net/mptcp netfilter tc-testing memfd drivers/net/bonding" SKIP_TARGETS="" $force_targets INSTALL_PATH=%{buildroot}%{_libexecdir}/kselftests VMLINUX_H="${RPM_VMLINUX_H}" install
# 'make install' for bpf is broken and upstream refuses to fix it. # 'make install' for bpf is broken and upstream refuses to fix it.
# Install the needed files manually. # Install the needed files manually.
%{log_msg "install selftests"}
for dir in bpf bpf/no_alu32 bpf/progs; do for dir in bpf bpf/no_alu32 bpf/progs; do
# In ARK, the rpm build continues even if some of the selftests # In ARK, the rpm build continues even if some of the selftests
# cannot be built. It's not always possible to build selftests, # cannot be built. It's not always possible to build selftests,
@ -2893,15 +2984,19 @@ done
%buildroot_save_unstripped "usr/libexec/kselftests/bpf/test_progs-no_alu32" %buildroot_save_unstripped "usr/libexec/kselftests/bpf/test_progs-no_alu32"
popd popd
export -n BPFTOOL export -n BPFTOOL
%{log_msg "end build selftests"}
%endif %endif
%if %{with_doc} %if %{with_doc}
%{log_msg "start install docs"}
# Make the HTML pages. # Make the HTML pages.
%{log_msg "build html docs"}
%{__make} PYTHON=/usr/bin/python3 htmldocs || %{doc_build_fail} %{__make} PYTHON=/usr/bin/python3 htmldocs || %{doc_build_fail}
# sometimes non-world-readable files sneak into the kernel source tree # sometimes non-world-readable files sneak into the kernel source tree
chmod -R a=rX Documentation chmod -R a=rX Documentation
find Documentation -type d | xargs chmod u+w find Documentation -type d | xargs chmod u+w
%{log_msg "end install docs"}
%endif %endif
# Module signing (modsign) # Module signing (modsign)
@ -2913,17 +3008,17 @@ find Documentation -type d | xargs chmod u+w
%define __modsign_install_post \ %define __modsign_install_post \
if [ "%{signmodules}" -eq "1" ]; then \ if [ "%{signmodules}" -eq "1" ]; then \
echo "Signing kernel modules ..." \ %{log_msg "Signing kernel modules ..."} \
modules_dirs="$(shopt -s nullglob; echo $RPM_BUILD_ROOT/lib/modules/%{KVERREL}*)" \ modules_dirs="$(shopt -s nullglob; echo $RPM_BUILD_ROOT/lib/modules/%{KVERREL}*)" \
for modules_dir in $modules_dirs; do \ for modules_dir in $modules_dirs; do \
variant_suffix="${modules_dir#$RPM_BUILD_ROOT/lib/modules/%{KVERREL}}" \ variant_suffix="${modules_dir#$RPM_BUILD_ROOT/lib/modules/%{KVERREL}}" \
[ "$variant_suffix" == "+zfcpdump" ] && continue \ [ "$variant_suffix" == "+zfcpdump" ] && continue \
echo "Signing modules for %{KVERREL}${variant_suffix}" \ %{log_msg "Signing modules for %{KVERREL}${variant_suffix}"} \
%{modsign_cmd} certs/signing_key.pem.sign${variant_suffix} certs/signing_key.x509.sign${variant_suffix} $modules_dir/ \ %{modsign_cmd} certs/signing_key.pem.sign${variant_suffix} certs/signing_key.x509.sign${variant_suffix} $modules_dir/ \
done \ done \
fi \ fi \
if [ "%{zipmodules}" -eq "1" ]; then \ if [ "%{zipmodules}" -eq "1" ]; then \
echo "Compressing kernel modules ..." \ %{log_msg "Compressing kernel modules ..."} \
find $RPM_BUILD_ROOT/lib/modules/ -type f -name '*.ko' | xargs -n 16 -P${RPM_BUILD_NCPUS} -r %compression %compression_flags; \ find $RPM_BUILD_ROOT/lib/modules/ -type f -name '*.ko' | xargs -n 16 -P${RPM_BUILD_NCPUS} -r %compression %compression_flags; \
fi \ fi \
%{nil} %{nil}
@ -3865,9 +3960,13 @@ fi\
# #
# #
%changelog %changelog
* Wed Feb 28 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.8.0-0.rc6.cf1182944c7c.51] * Thu Feb 29 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.8.0-0.rc6.805d849d7c3c.51]
- gitlab-ci: fix merge tree URL for gating pipelines (Michael Hofmann)
- Revert "net: bump CONFIG_MAX_SKB_FRAGS to 45" (Marcelo Ricardo Leitner) - Revert "net: bump CONFIG_MAX_SKB_FRAGS to 45" (Marcelo Ricardo Leitner)
- uki: use systemd-pcrphase dracut module (Gerd Hoffmann)
- Add libperf-debuginfo subpackage (Justin M. Forbes) - Add libperf-debuginfo subpackage (Justin M. Forbes)
- redhat/kernel.spec.template: Add log_msg macro (Prarit Bhargava)
- Linux v6.8.0-0.rc6.805d849d7c3c
* Wed Feb 28 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.8.0-0.rc6.cf1182944c7c.50] * Wed Feb 28 2024 Fedora Kernel Team <kernel-team@fedoraproject.org> [6.8.0-0.rc6.cf1182944c7c.50]
- Linux v6.8.0-0.rc6.cf1182944c7c - Linux v6.8.0-0.rc6.cf1182944c7c

View File

@ -1,5 +1,5 @@
SHA512 (kernel-abi-stablelists-6.6.0.tar.bz2) = 4f917598056dee5e23814621ec96ff2e4a411c8c4ba9d56ecb01b23cb96431825bedbecfcbaac9338efbf5cb21694d85497fa0bf43e7c80d9cd10bc6dd144dbd SHA512 (kernel-abi-stablelists-6.6.0.tar.bz2) = 4f917598056dee5e23814621ec96ff2e4a411c8c4ba9d56ecb01b23cb96431825bedbecfcbaac9338efbf5cb21694d85497fa0bf43e7c80d9cd10bc6dd144dbd
SHA512 (kernel-kabi-dw-6.6.0.tar.bz2) = 19308cd976031d05e18ef7f5d093218acdb89446418bab0cd956ff12cf66369915b9e64bb66fa9f20939428a60e81884fec5be3529c6c7461738d6540d3cc5c6 SHA512 (kernel-kabi-dw-6.6.0.tar.bz2) = 19308cd976031d05e18ef7f5d093218acdb89446418bab0cd956ff12cf66369915b9e64bb66fa9f20939428a60e81884fec5be3529c6c7461738d6540d3cc5c6
SHA512 (linux-6.8-rc6-21-gcf1182944c7c.tar.xz) = 4e849dfad1eae9176110c8ec5885fda15cb61d885dbb9daa77611d0d2d850cbec392996754ee52ae798c17e6ef873320ff1816e146182ab574e5f98b14cc53ca SHA512 (linux-6.8-rc6-37-g805d849d7c3c.tar.xz) = 363aac713f74b3f07f9a3119b7cc179f9d3cd4bb94b9e2fbaea4deced2f2aa56c645d5dc232c95aa1211e152e072549c2fa0a9842cb16deed294257dc68699c8
SHA512 (kernel-abi-stablelists-6.8.0.tar.xz) = dc55b68f991a9e45aa2f71c67caf4c9243555d06e56f0e2b8be02ddccaf13a8b6fddf7bdc734354de795834df33bbc165b25a227d5ea7e8c0b29e3212845f5b4 SHA512 (kernel-abi-stablelists-6.8.0.tar.xz) = e54f08d19c84cf1fb11ea7935a392678944f8276b4af58436fcf58913e9d49fd4b9ae9f4bdfcf57aa4454b3ac341a9ed5ec5d85ceacfa26b6920aabf5ee76379
SHA512 (kernel-kabi-dw-6.8.0.tar.xz) = 418af894e6c26a48a7ef2e87f5755a3135206a8e709cb035363b2789470f68429f336661d674f4233791f24c315d35036b72ecfeede337abf4d7a02604bb8fd9 SHA512 (kernel-kabi-dw-6.8.0.tar.xz) = f5d293151e220344e2f54c6ec84d2ae5b317b83b25c148409e275f1b06133c1d7b0671f57831b2d01a4012038479c326a9b076f98672316da5439b17b9a46191