# Co-Maintainer: Achill Gilgenast <achill@achill.org>
maintainer="Aelin <aelin@postmarketos.org>"
pkgname=linux-postmarketos-stable
pkgver=6.19.3
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="
42cf563be07254942e3873a91241f423753d4a4dc70e18bc8ac210519c0642aef45ea91fdd0e359b7e428a87c5e091e8be3e1199ebeaf679bfc7a09af5e1206e  patch-6.19.3.patch.xz
01b29c7f4e5bc0c9802794c2cd027fece825f90417be229a71e60eefce530010d5d301749c54ae744e9d4a483518e769e2bb7e6e9209687681ad7fff11c3ed86  linux-6.19.tar.xz
f22282b2f7a43915d83af77310345597c6ce1cfa02f1340efb30fa02191e67649c4aa2e96cac1f5022c046f3ffb7979bedefad66db7833a2b1a65d19ca32af4b  config-stable.aarch64
324458036ae7d5b0a27974f886b5ca1c24764cdbb9735e848d5203c26b672a383e39cafa3465e2eb935a772dba6276954b48f5d8042a451af05b272522be8faf  config-stable.armv7
0abed5421a1eaf1a2088ccda334ac66b6f034832fd9904e3f24796f5cc3020f48bcb734bb391d4dd7f11b0279299060f062e1aa5a838ce45a7dda5e9e41e3675  config-stable.loongarch64
6d96798e7171a36f0bf4219ad7f2685fd916fff70766cfc3623580c7d0de502562dc136df1cae88ef63d6f67535cd94ecc95adb460977a858153a75754877eb9  config-stable.ppc64le
685d0808d72f14944c18f95ddef9c7f7aed6d648d5c277e8ea92814cc8b8a15cd21896cb6be643cb34ffe9d1cd0c98f69e3f5394074a3a28c2f9957566f5a540  config-stable.riscv64
ac380e28ef198ee49964cbcb27dd875cf26b3d01f4b0f4cd6602a24cbdaae25a62ecf624897fde370fc6850bccba7e425fad61fccf8b3569ad4ccd6fc9fe5e49  config-stable.x86
01676831e44407e8b1bd088f66dba2ada1681d2c5892d002a631d21505d6c6d2c4bb251e3f376316d3f7fcae6da5cacdecd1bb3176342bacfad9786c651efdbc  config-stable.x86_64
"
