Skip to content

Commit

Permalink
kpatch-build: fix setlocalversion for pre-v6.3 kernels
Browse files Browse the repository at this point in the history
Commit 629b5ac ("kpatch-build: fix setlocalversion for pre-v6.3
kernels"), fixed VERMAGIC_STRING between kpatch original/patched kernel
builds by creating a temporary scripts/setlocalversion script.	This was
accomplished by saving the output from `make kernelversion` into a
KERNELVERSION environment variable and running the (original)
scripts/setlocalversion to gather a "vX.Y" + "<src version>" pair of
strings.

Unfortunately pre-v6.3 scripts/setlocalversion does not use the
KERNELVERSION environment variable, so the same efforts results in an
unusable "<NULL>" + "<src version>" version string pair.

Restore the original `scripts/setlocalversion --save-scmversion`
invocation for source trees that (still) support the --save-scmversion
option.

Fixes: 629b5ac ("kpatch-build: fix setlocalversion for pre-v6.3 kernels")
Signed-off-by: Joe Lawrence <[email protected]>
  • Loading branch information
joe-lawrence committed Jun 6, 2024
1 parent 507d47b commit 8085be3
Showing 1 changed file with 16 additions and 9 deletions.
25 changes: 16 additions & 9 deletions kpatch-build/kpatch-build
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,8 @@ restore_kernel_files() {
}

cleanup() {
rm -f "$BUILDDIR/.scmversion"

remove_patches
restore_kernel_files

Expand Down Expand Up @@ -1118,18 +1120,23 @@ fi
# appended to the kernel version string (VERMAGIC_STRING), even if the original
# kernel was not dirty. That can complicate both the build (create-diff-object
# false positive changes) and the patch module link (module version mismatch
# load failures).
# load failures). Before making any changes to the source:
#
# For pre-v6.3 kernels:
# Run `./scripts/setlocalversion --save-scmversion`.
#
# Prevent that by replacing the original setlocalversion with a friendlier one
# which just echo's the original version. This should be done before any
# changes to the source.
# For v6.3+ kernels:
# Replace the original setlocalversion with a friendlier one which just echo's
# the original version.
if [[ -n "$USERSRCDIR" && -e "$KERNEL_SRCDIR/.git" ]]; then
cd "$KERNEL_SRCDIR" || die
backup_kernel_file "scripts/setlocalversion"
LOCALVERSION="$(make kernelversion)"
LOCALVERSION="$(KERNELVERSION="$LOCALVERSION" ./scripts/setlocalversion)"
[[ -n "$LOCALVERSION" ]] || die "setlocalversion failed"
echo "echo $LOCALVERSION" > scripts/setlocalversion
if ! ./scripts/setlocalversion --save-scmversion &>/dev/null; then
backup_kernel_file "scripts/setlocalversion"
LOCALVERSION="$(make kernelversion)"
LOCALVERSION="$(KERNELVERSION="$LOCALVERSION" ./scripts/setlocalversion)"
[[ -n "$LOCALVERSION" ]] || die "setlocalversion failed"
echo "echo $LOCALVERSION" > scripts/setlocalversion
fi
fi

# kernel option checking
Expand Down

0 comments on commit 8085be3

Please sign in to comment.