# Co-Maintainer: Achill Gilgenast <achill@achill.org>
maintainer="Aelin <aelin@postmarketos.org>"
pkgname=linux-postmarketos-stable
pkgver=6.19.6
pkgrel=0
_kver=${pkgver%.*}
pkgdesc="Stable Kernel"
# armhf: pmbootstrap cannot dynamically choose a defconfig, so it ends up using multi_v7_defconfig which isn't correct
# s390x: kconfigcheck is not ready for it yet
arch="all !armhf !s390x"
_flavor="stable"
url="https://kernel.org"
license="GPL-2.0-only"
options="
	!check
	!strip
	!tracedeps
	pmb:cross-native
	pmb:generic-kernel
	pmb:kconfigcheck-community
	pmb:kconfigcheck-immutable
	pmb:kconfigcheck-rust
	pmb:kconfigcheck-uefi
	pmb:kconfigcheck-virt
"
makedepends="
	bison
	clang
	clang-libclang
	diffutils
	elfutils-dev
	findutils
	flex
	linux-headers
	lld
	llvm
	openssl-dev
	pahole
	perl
	postmarketos-installkernel
	python3
	rust
	rust-bindgen
	rust-src
	rustfmt
	sed
	zstd
"
replaces="linux-stable"

# Source
source="
	linux-$_kver.tar.xz::https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/linux-$_kver.tar.xz

	config-stable.aarch64
	config-stable.armv7
	config-stable.loongarch64
	config-stable.ppc64le
	config-stable.riscv64
	config-stable.x86
	config-stable.x86_64
"
builddir="$srcdir/linux-$_kver"
_defconfig="defconfig"

if [ "${pkgver%.0}" = "$pkgver" ]; then
	# Prepend to apply first
	source="patch-$pkgver.patch.xz::https://cdn.kernel.org/pub/linux/kernel/v${pkgver%%.*}.x/patch-$pkgver.xz $source"
fi

case "$CARCH" in
	aarch64*) _carch="arm64" ;;
	arm*) _carch="arm" ;;
	loongarch*) _carch="loongarch" ;;
	ppc*) _carch="powerpc" ;;
	riscv*) _carch="riscv" ;;
	s390x) _carch="s390" ;;
	x86) _carch="i386" ;;
	x86_64) _carch="x86_64" ;;
esac

prepare() {
	default_prepare
	cp "$srcdir/config-$_flavor.$CARCH" .config
}

build() {
	unset LDFLAGS
	make ARCH="$_carch" LLVM=1 \
		KBUILD_BUILD_VERSION="$((pkgrel + 1 ))-$_flavor"
}

package() {
	local _install
	case "$CARCH" in
		arm*|aarch64|riscv*) _install="zinstall dtbs_install" ;;
		*) _install="install" ;;
	esac

	make modules_install $_install \
		ARCH="$_carch" \
		LLVM=1 \
		INSTALL_PATH="$pkgdir"/boot/ \
		INSTALL_MOD_PATH="$pkgdir" \
		INSTALL_MOD_STRIP=1 \
		INSTALL_DTBS_PATH="$pkgdir"/boot/dtbs

	rm -f "$pkgdir"/lib/modules/*/build "$pkgdir"/lib/modules/*/source

	install -D "$builddir"/include/config/kernel.release \
		"$pkgdir"/usr/share/kernel/$_flavor/kernel.release
}

sha512sums="
bcc0f5c7239f973b9c41a4ea99bd10a3df70f34c78f3f22b60098f41cca16c872563b2764e239fa49ba7a9a67c4f2c52f37684239ed93d22f8d08d3affb3daea  patch-6.19.6.patch.xz
01b29c7f4e5bc0c9802794c2cd027fece825f90417be229a71e60eefce530010d5d301749c54ae744e9d4a483518e769e2bb7e6e9209687681ad7fff11c3ed86  linux-6.19.tar.xz
ba4821e5036df37212ae1a59929c9e6ac92d51ff1061eac241426860af0540b1816e8fd6e82bed0d7c127354fc8da5cbda82b1c726384e408b093300b123ece0  config-stable.aarch64
d41f0c73329959d1a69011001718266ab76d1b884c75a85ef3393831442e2c609e2476a324e26db75aa07ffd3c15ce1bc995b50ae47c452b46c7cf0e8864ec22  config-stable.armv7
2687ef98db28ea6509633121d3d701fbed68e0aea558745a4d2fcc6eb879808078f32f819b1f8bc43912194b0ab5ab74d0c75492461ab921a1684975b06f8b62  config-stable.loongarch64
6f1f2d52d3f3ae49221820c0ff47c806d016c8e6087405524f2ad39dd6df48793cd2e97cd2761571a8277ea32de793ebb71f9e6cfb910cb94987f7856033c40b  config-stable.ppc64le
e0871e821e13f1a066066d2f573f076c723d39026747cd1285ddc2d4ebe9aaf49b46d2ba4f3227cbc83cab0a648344f9bbfc0b500f75616b77077847127af686  config-stable.riscv64
2e737ca68db2bd68f3fa0564c48f638d93a8f630db5a618032a05911db85ee6e556443dab65e984e10ce090aeff6d237cec3eae0cc10b746a71d901adfec7e9b  config-stable.x86
639eb65bbe6520b390a6809aa1056825e381bee3495ea7acfb7e283b584280107c801333980a173e56fb46ecb74397211b4e35dc583836793bc102ba1ce957c3  config-stable.x86_64
"
