# Co-Maintainer: Achill Gilgenast <achill@achill.org>
maintainer="Aelin <aelin@postmarketos.org>"
pkgname=linux-postmarketos-stable
pkgver=6.19.2
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="
2c3435d27715dcb635c0b17b0d26a764749820f4b473c05306b68fd8d647b809ff57d469cbf6cbd5a95894bb7d0fad794145298f1c3d3ebe975c7ba487b47481  patch-6.19.2.patch.xz
01b29c7f4e5bc0c9802794c2cd027fece825f90417be229a71e60eefce530010d5d301749c54ae744e9d4a483518e769e2bb7e6e9209687681ad7fff11c3ed86  linux-6.19.tar.xz
2a4a9853c538e85d314dfacffd9508d233c347205747e89b09abba305e68060a86b623366b289ebcc88532e6efeff4e684b313088ab15c1ab27af6812ed868de  config-stable.aarch64
df83c308e86313bf021a370ec97546e603fc76fa1ac682a6ac2f19de14e0251d641435c497c09957ceb66212f89493bfd1fa7405bda08b536f11b0661db04424  config-stable.armv7
69ba8c71a60ea68c68f40f94657b14be32eaf4233066b1564e67fe015a5a4eb4e315c89c065ae967ba3bf8e3cc9a36eb54bbe22ad9760bee8130b37100837c67  config-stable.loongarch64
1b02c42432b11b5f043b06efb087c1a14e8b1cf572660b96029da111b2b95330844f897b6c00c3d2a1e39be6098467535d200753d8d83e5914366e329cfaa814  config-stable.ppc64le
73b0c90ded44d1a0e3ab8b485c4ca63dfbe0308ee355814dbf2c4dfb7361e8d8fa38cafc66544c13a747e31b4e853dff572f9eca27ec0c9ba6432f808a447124  config-stable.riscv64
67b3c078b74fcff766d724f365e24f79f2578ae1591b00a05e4bc9a71c8875cd73069e3f9aec13c0300ff6e193bc9a5073e15860143a0fc5a5427ae78ce7a1d0  config-stable.x86
9cc40ed16a3c14e900eb7d73841a90216035304510b6d0f37e6c85bfdf89e7fefb88cb1ecadc1babc2190f6f9d0e4304a1f49314bffcbc8364acc692d2a1f1d4  config-stable.x86_64
"
