# Co-Maintainer: Achill Gilgenast <achill@achill.org>
maintainer="Aelin <aelin@postmarketos.org>"
pkgname=linux-postmarketos-stable
pkgver=6.19.5
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="
fb330f6b232285825a3b07660ac0ba483f41affec973ea026b17f5c25c307c0cc93fdd5d63a30e24556e28f0fbc38f2adb8757afdb2f0fd2b94cf83088e4cbb1  patch-6.19.5.patch.xz
01b29c7f4e5bc0c9802794c2cd027fece825f90417be229a71e60eefce530010d5d301749c54ae744e9d4a483518e769e2bb7e6e9209687681ad7fff11c3ed86  linux-6.19.tar.xz
4d0c803bd16cd9c48531c341f3efdfeb3cd4e202d6301e22b956670a289f416789110c181115a127b6b4796470b886196b66880aed7184daf1afdefce55902c2  config-stable.aarch64
b60e1607dc31bd15bc93f8dc08b36420c7c7300620a7f2659d9c4051955cef12caef1dba576569ec445346f693d614193c1547158abed16c0d85e0f4b56a7696  config-stable.armv7
3c42d8c4840cc41f03f1d13d7fd497f8fd016da9a4e0a09bb6f78eca584a9adbd1a72bfcebd0829d4696ba2f40145bf4b06fce3a9a9704fb5a630e7a9fe4cbe3  config-stable.loongarch64
1b3b71d8dee0ab74e8425f3c0ba22e2bbf573e8fd2c8dca7fe243015e59a8efcae3a6865ae69638b3c9f69f749b9c6fde70d84006676849cbc507445dfb7ba19  config-stable.ppc64le
5465d7ed10865d327c108af0876e080a43d06c9f9df2538852c8f9d6e6abe1a775f90d55590e755d52cd78a2ac46586e641f2a22c9734f38dbb720d686e3e738  config-stable.riscv64
d2ff1acbcf6816b4c860b6f3f045cbbbd848e6c6c5b7381b309dfb139aeb84ef247ea37dac1522ecf7c9ad353dd799b255049ccf1ba07e4da3b7ab515b3d26b9  config-stable.x86
8fd212996520c93086e5094c4f414d34402e0b2a3ff2c4fd33157bacf31227810814c2729f75d3394e388063e5f7358e8f256e6d738b6f7c5ec88e6f557fa850  config-stable.x86_64
"
