Description: support ubuntu kernel flavors
 Add support for kernel flavors (generic, lowlatency, aws, etc...) the flavor
 may contain dashes and/or tildes, so handle these cases.

Author: Benjamin M Romer <benjamin.romer@canonical.com>
Last-Update: 2022-05-24
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- a/kpatch-build/kpatch-build
+++ b/kpatch-build/kpatch-build
@@ -741,7 +741,7 @@
 	die "gawk not installed"
 fi
 
-options="$(getopt -o ha:r:s:c:v:j:t:n:o:dR -l "help,archversion:,sourcerpm:,sourcedir:,config:,vmlinux:,jobs:,target:,name:,output:,oot-module:,oot-module-src:,debug,skip-gcc-check,skip-compiler-check,skip-cleanup,non-replace,version" -- "$@")" || die "getopt failed"
+options="$(getopt -o ha:r:s:c:v:j:t:n:o:dRf -l "help,archversion:,sourcerpm:,sourcedir:,config:,vmlinux:,jobs:,target:,name:,output:,oot-module:,oot-module-src:,debug,skip-gcc-check,skip-compiler-check,skip-cleanup,non-replace,version" -- "$@")" || die "getopt failed"
 
 eval set -- "$options"
 
@@ -827,6 +827,10 @@
 		echo "Version : $VERSION"
 		exit 0
 		;;
+	-f|--flavor)
+		FLAVOR="$2"
+		shift
+		;;
 	*)
 		[[ "$1" = "--" ]] && shift && continue
 		[[ ! -f "$1" ]] && die "patch file '$1' not found"
@@ -883,12 +887,25 @@
 		fi
 		ARCHVERSION="$VMLINUX_VER"
 	fi
+	FLAV=${ARCHVERSION#*-*-}
+	if [[ -n "$FLAVOR" ]]; then
+		if [[ "$FLAVOR" != "$FLAV" ]]; then
+			die "specified flavor $FLAVOR does not match vmlinux ($FLAV)"
+		fi
+	else
+			FLAVOR=$FLAV
+	fi
 fi
 
 if [[ -n "$OOT_MODULE" ]]; then
 	ARCHVERSION="$(modinfo -F vermagic "$OOT_MODULE" | awk '{print $1}')"
 fi
 
+
+if [[ -z "$FLAVOR" ]]; then
+	FLAVOR=$(uname -r | cut -d - -f 3)
+fi
+
 [[ -z "$ARCHVERSION" ]] && ARCHVERSION="$(uname -r)"
 
 if [[ -n "$OOT_MODULE" ]]; then
@@ -898,7 +915,7 @@
 	BUILDDIR="$OOT_MODULE_SRCDIR"
 else
 	if [[ $DISTRO = ubuntu ]]; then
-		BUILDDIR="$TEMPDIR/build-generic"
+		BUILDDIR="$TEMPDIR/build-$FLAVOR"
 		mkdir -p "$BUILDDIR"
 	else
 		BUILDDIR="$KERNEL_SRCDIR"
@@ -1306,7 +1323,7 @@
 	# shellcheck disable=SC1117
 	MAKEFLAGS="--no-print-directory" fakeroot \
 		debian/rules "${MAKEVARS[@]}" "-j$CPUS" \
-		build-generic build_image=vmlinux builddir="$TEMPDIR" \
+		"build-$FLAVOR" build_image=vmlinux builddir="$TEMPDIR" \
 		enable_zfs=false  2>&1 | logger \
 		|| die
 else
@@ -1317,7 +1334,7 @@
 
 MODULE_SYMVERS="$KERNEL_SRCDIR/Module.symvers"
 if [[ "$DISTRO" = ubuntu ]]; then
-	MODULE_SYMVERS="$TEMPDIR/build-generic/Module.symvers"
+	MODULE_SYMVERS="$TEMPDIR/build-$FLAVOR/Module.symvers"
 fi
 
 # Save original module symvers
@@ -1331,11 +1348,11 @@
 save_env
 
 if [[ $DISTRO = ubuntu ]]; then
-	rm -f debian/stamps/stamp-build-generic
+	rm -f "debian/stamps/stamp-build-$FLAVOR"
 	# shellcheck disable=SC1117
 	MAKEFLAGS="--no-print-directory" fakeroot \
 		debian/rules "${MAKEVARS[@]}" "-j$CPUS" \
-		build-generic build_image=vmlinux builddir="$TEMPDIR" \
+		"build-$FLAVOR" build_image=vmlinux builddir="$TEMPDIR" \
 		enable_zfs=false  2>&1 | logger \
 		|| die
 else
@@ -1536,6 +1553,9 @@
 KBUILD_EXTRA_SYMBOLS="$KBUILD_EXTRA_SYMBOLS" \
 KPATCH_LDFLAGS="$KPATCH_LDFLAGS" \
 CROSS_COMPILE="$CROSS_COMPILE"
+if [[ $DISTRO = ubuntu ]]; then
+	export KPATCH_BUILD="$BUILDDIR"
+fi
 save_env
 
 make "${MAKEVARS[@]}" 2>&1 | logger || die
