From 713fd23d83514ef609bd216d6649ac29a606a83e Mon Sep 17 00:00:00 2001 From: Zhixiong Chi 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 --- 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