88 lines
3.1 KiB
Diff
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
|
|
|