Compare commits

2 Commits
main ... 1.1

4 changed files with 72 additions and 25 deletions

View File

@@ -1,3 +1,31 @@
-------------------------------------------------------------------
Mon Jul 7 14:36:05 UTC 2025 - Petr Mladek <pmladek@suse.com>
- Version 1.8
-------------------------------------------------------------------
Mon Jul 7 12:19:16 UTC 2025 - Petr Mladek <pmladek@suse.com>
- Drop different flavors support (bsc#1245949)
-------------------------------------------------------------------
Wed Jun 25 15:20:40 UTC 2025 - Petr Mladek <pmladek@suse.com>
- Hardcode version 1.2 when building for older distributions
than SL 16.0. The existing livepatch packages require exactly
this version. But new versions are backward compatible.
-------------------------------------------------------------------
Wed Jun 25 13:30:09 UTC 2025 - Petr Mladek <pmladek@suse.com>
- Release version 1.7
-------------------------------------------------------------------
Wed Jun 25 10:34:15 UTC 2025 - Petr Mladek <pmladek@suse.com>
- Use "transactional-update" for downgrading livepatch package
on transactional systems (bsc#1245346)
-------------------------------------------------------------------
Fri Jan 31 10:10:30 UTC 2025 - Petr Mladek <pmladek@suse.com>

View File

@@ -19,7 +19,11 @@
%define dracutlibdir %{_prefix}/lib/dracut
Name: kernel-livepatch-tools
Version: 1.6
%if 0%{?suse_version} >= 1600
Version: 1.8
%else
Version: 1.2
%endif
Release: 0
Summary: Scripts for installing kernel live patches
License: GPL-2.0-only

14
klp.sh
View File

@@ -194,6 +194,13 @@ function klp_detailed_patch_info() {
fi
}
# This check is inspired by zypper source code
function is_transactional_system() {
findmnt -O "ro" -t "btrfs" "/" >/dev/null 2>&1 || return 1
which "transactional-update" >/dev/null 2>&1 || return 1
return 0
}
function klp_downgrade()
{
VERBOSE_ORIG="$VERBOSE"
@@ -237,7 +244,12 @@ function klp_downgrade()
exit 1
fi
ZYPPER_COMMAND="zypper -n in --oldpackage $RPM_NAME = $PREV_RPM_VERSION"
if is_transactional_system ; then
ZYPPER_COMMAND="transactional-update pkg in -n"
else
ZYPPER_COMMAND="zypper -n in"
fi
ZYPPER_COMMAND="$ZYPPER_COMMAND --oldpackage $RPM_NAME = $PREV_RPM_VERSION"
echo "KLP tool will replace the current kernel live patch with its previous version."
echo "The command for downgrade is: $ZYPPER_COMMAND"
if [ -z "$NON_INTERACTIVE" ]; then

View File

@@ -1,29 +1,32 @@
# Defines %flavors_to_build and %kernel_source() as a side effect.
%klp_module_package(n:x) \
# Defines %flavor and %kernel_source() as a side effect.
# Also defines %flavors_to_build for backward compatibility.
#
# Macro %variant should be defined in the spec file before %klp_module_package
# is used. The flavor value is guessed from the macro %variant. The value
# "default" is used as a fallback.
%klp_module_package(n:) \
%{expand:%( \
subpkg=/usr/lib/rpm/kernel-livepatch-subpackage \
variant=%{?variant}%{!?variant:"-default"} \
[ -z "$variant" ] && variant="-default" \
flavor=${variant#-} \
if [ -z "$flavor" ] || [ ! -d "/usr/src/linux-obj/%_target_cpu/$flavor" ]; then \
echo "Error: Kernel flavor '$flavor' derived from '%%variant' not found or empty at /usr/src/linux-obj/%_target_cpu/$flavor." >&2 \
echo "%%%%internal_kmp_error" \
exit 1 \
fi \
echo "%%define _suse_klp_module_subpackage(n:v:r:f:p:bc) %%{expand:%%(cd %_sourcedir; cat $subpkg; echo %%%%nil)}" \
flavors_to_build= \
flavors="%*" \
for flavor in $(ls /usr/src/linux-obj/%_target_cpu 2>/dev/null); do \
case " $flavors " in \
(*" $flavor "*) \
[ -n "%{-x}" ] && continue ;; \
(*) \
[ -z "%{-x}" -a -n "$flavors" ] && continue ;; \
esac \
krel=$(make -s -C /usr/src/linux-obj/%_target_cpu/$flavor kernelrelease) \
krpmver_flavor=${krel/.0-rc/.rc} \
krpmver=${krpmver_flavor%%-*} \
kprovide="kernel-$flavor-$krpmver" \
khashprovide=$(rpm -q --whatprovides "$kprovide" --provides | grep "^kernel-$flavor-srchash-") \
if [ -n "$khashprovide" ]; then \
kprovide="$khashprovide" \
fi \
flavors_to_build="$flavors_to_build $flavor" \
echo "%%_suse_klp_module_subpackage -n %{-n*}%{!-n:kernel-livepatch} -r %{release} $krel $krpmver_flavor $kprovide" \
done \
echo "%%global flavors_to_build${flavors_to_build:-%%nil}" \
krel=$(make -s -C /usr/src/linux-obj/%_target_cpu/$flavor kernelrelease) \
krpmver_flavor=${krel/.0-rc/.rc} \
krpmver=${krpmver_flavor%%-*} \
kprovide="kernel-$flavor-$krpmver" \
khashprovide=$(rpm -q --whatprovides "$kprovide" --provides | grep "^kernel-$flavor-srchash-") \
if [ -n "$khashprovide" ]; then \
kprovide="$khashprovide" \
fi \
echo "%%_suse_klp_module_subpackage -n %{-n*}%{!-n:kernel-livepatch} -r %{release} $krel $krpmver_flavor $kprovide" \
echo "%%global flavors_to_build ${flavor}" \
echo "%%global flavor ${flavor}"
echo "%%{expand:%%(test -z '%flavors_to_build' && echo %%%%internal_kmp_error)}" \
echo "%%global kernel_source() /usr/src/linux-obj/%_target_cpu/%%%%{1}" \
\