integ/livepatch/kpatch/debian/patches/0003-kpatch-Adjust-the-kpat...

88 lines
3.1 KiB
Diff

From 713fd23d83514ef609bd216d6649ac29a606a83e Mon Sep 17 00:00:00 2001
From: Zhixiong Chi <zhixiong.chi@windriver.com>
Date: Mon, 13 Jun 2022 23:16:59 -0700
Subject: [PATCH] kpatch: Adjust the kpatch-build to support the multikernel
With multikernel support, both the std and rt kernel packages are installed
into the image. This causes confusion in locating the relevant tools or the
source for the kernel type.
Adjust the variables to get the correct tools and source locations.
Signed-off-by: Zhixiong Chi <zhixiong.chi@windriver.com>
---
kpatch-build/kpatch-build | 23 +++++++++++++++--------
1 file changed, 15 insertions(+), 8 deletions(-)
diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build
index 8a9fa03..af91f5e 100755
--- a/kpatch-build/kpatch-build
+++ b/kpatch-build/kpatch-build
@@ -41,17 +41,14 @@ SCRIPTDIR="$(readlink -f "$(dirname "$(type -p "$0")")")"
ARCH="$(uname -m)"
CPUS="$(getconf _NPROCESSORS_ONLN)"
CACHEDIR="${CACHEDIR:-$HOME/.kpatch}"
-SRCDIR="$CACHEDIR/src"
RPMTOPDIR="$CACHEDIR/buildroot"
VERSIONFILE="$CACHEDIR/version"
TEMPDIR="$CACHEDIR/tmp"
ENVFILE="$TEMPDIR/kpatch-build.env"
LOGFILE="$CACHEDIR/build.log"
RELEASE_FILE=/etc/os-release
+KERNELTYPE=
LINUXSRCDIR=/usr/src
-KVERSION=$(uname -r)
-KEYDIR="${LINUXSRCDIR}/kernels/${KVERSION}"
-SIGNTOOLDIR=(/usr/lib/linux*-kbuild-*/scripts)
SIGNTOOL="sign-file"
SIGHASH="sha256"
DEBUG=0
@@ -711,6 +708,13 @@ fi
[[ -z "$ARCHVERSION" ]] && ARCHVERSION="$(uname -r)"
+[[ "$ARCHVERSION" =~ rt ]] && KERNELTYPE="-rt"
+
+LINUXTYPE="linux${KERNELTYPE}"
+SIGNTOOLDIR=(/usr/lib/${LINUXTYPE}-kbuild-*/scripts)
+SRCDIR="${CACHEDIR}/${LINUXTYPE}-src"
+KEYDIR="${LINUXSRCDIR}/kernels/${ARCHVERSION}"
+
[[ "$SKIPCLEANUP" -eq 0 ]] && trap cleanup EXIT INT TERM HUP
KVER="${ARCHVERSION%%-*}"
@@ -821,10 +825,10 @@ else
# Since the linux-yocto kernel version is used for wrcp project now, so need to ensure the linux-source package had
# already been installed. We don't dowanload the kernel source from the debian any more.
KSRCVER="${KVER%.*}"
- KSRCNAME="$LINUXSRCDIR/linux-source-$KSRCVER.tar.xz"
- if [[ -e "$KSRCNAME" ]]; then
+ KSRCNAME="${LINUXSRCDIR}/${LINUXTYPE}-source-${KSRCVER}.tar.xz"
+ if [[ -e "${KSRCNAME}" ]]; then
tar xvf "${KSRCNAME}" 2>&1 | logger || die
- mv "linux-source-$KSRCVER" "$SRCDIR" || die
+ mv "${LINUXTYPE}-source-${KSRCVER}" "${SRCDIR}" || die
fi
# Due to the ostree mechanism, we need add the prefix for kernel config here
CMDLINE="$(cat /proc/cmdline)"
@@ -835,7 +839,7 @@ else
CONFIGFILE="$SRCDIR/.config"
if [[ "$ARCHVERSION" == *-* ]]; then
- echo "-${ARCHVERSION#*-}" > "$SRCDIR/localversion" || die
+ echo "-${ARCHVERSION#*-}" > "$SRCDIR/localversion${KERNELTYPE}" || die
fi
# for some reason the Ubuntu kernel versions don't follow the
# upstream SUBLEVEL; they are always at SUBLEVEL 0
@@ -1076,6 +1080,8 @@ if [[ -z "$MODNAME" ]] ; then
MODNAME="kpatch-$MODNAME"
fi
+ [[ "$KERNELTYPE" == "-rt" ]] && MODNAME="rt-${MODNAME}"
+
MODNAME="$(module_name_string "$MODNAME")"
fi
FILES="$(cat "$TEMPDIR/changed_objs")"
--
2.34.1