diff --git a/kpatch-build/kpatch-build b/kpatch-build/kpatch-build index d32c13ba..366adead 100755 --- a/kpatch-build/kpatch-build +++ b/kpatch-build/kpatch-build @@ -211,6 +211,8 @@ restore_kernel_files() { } cleanup() { + rm -f "$BUILDDIR/.scmversion" + remove_patches restore_kernel_files @@ -690,11 +692,11 @@ module_name_string() { } is_supported_deb_distro(){ - [[ -n "${SUPPORTED_DEB_DISTROS[$1]:-}" ]] + [[ -n "$1" ]] && [[ -n "${SUPPORTED_DEB_DISTROS[$1]:-}" ]] } is_supported_rpm_distro(){ - [[ -n "${SUPPORTED_RPM_DISTROS[$1]:-}" ]] + [[ -n "$1" ]] && [[ -n "${SUPPORTED_RPM_DISTROS[$1]:-}" ]] } print_supported_distro(){ @@ -957,7 +959,7 @@ if [[ -n "$USERSRCDIR" ]]; then # save original vmlinux before it gets overwritten by sourcedir build if [[ "$VMLINUX" -ef "$KERNEL_SRCDIR"/vmlinux ]]; then backup_kernel_file "vmlinux" - VMLINUX="$TEMPDIR/vmlinux" + VMLINUX="$KERNEL_BACKUPDIR/vmlinux" fi elif [[ -n "$OOT_MODULE" ]]; then if [[ -z "${CONFIGFILE}" ]]; then @@ -1119,18 +1121,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 --no-print-directory kernelversion)" + LOCALVERSION="$(KERNELVERSION="$LOCALVERSION" ./scripts/setlocalversion)" + [[ -n "$LOCALVERSION" ]] || die "setlocalversion failed" + echo "echo $LOCALVERSION" > scripts/setlocalversion + fi fi # kernel option checking