# Contributor: Carlo Landmeter <clandmeter@alpinelinux.org>
maintainer="Carlo Landmeter <clandmeter@alpinelinux.org>"
pkgname=stalwart-mail
pkgver=0.11.6
pkgrel=0
pkgdesc="Secure & Modern All-in-One Mail Server"
url="https://github.com/stalwartlabs/mail-server"
arch="x86 x86_64 aarch64" # ftbfs on other arches
license="AGPL-3.0-or-later"
makedepends="
	cargo
	cargo-auditable
	protoc
	clang19-dev
	linux-headers
	"
install="$pkgname.pre-install"
pkgusers="stalwart"
pkggroups="stalwart"
subpackages="$pkgname-openrc stalwart-cli:cli"
source="
	https://github.com/stalwartlabs/mail-server/archive/v$pkgver/mail-server-$pkgver.tar.gz
	$pkgname.initd
	$pkgname.confd
	"
builddir="$srcdir/mail-server-$pkgver"

prepare() {
	default_prepare
	cargo fetch --target="$CTARGET" --locked
}

build() {
	case "$CARCH" in
		arm*) export JEMALLOC_SYS_WITH_LG_PAGE=16;;
	esac
	cargo auditable build --frozen --release -p mail-server -p stalwart-cli
}

check() {
	# https://github.com/RustCrypto/elliptic-curves/issues/1097
	export RUST_MIN_STACK="4194304"
	cargo test --frozen -p mail-server -p stalwart-cli
}

cli() {
	pkgdesc="$pkgdesc (cli tool)"
	install -Dm 755 "$builddir"/target/release/stalwart-cli \
		"$subpkgdir"/usr/bin/stalwart-cli
}

package() {
	install -Dm 755 "$srcdir"/$pkgname.initd \
		"$pkgdir"/etc/init.d/$pkgname
	install -Dm 644 "$srcdir"/$pkgname.confd \
		"$pkgdir"/etc/conf.d/$pkgname
	install -Dm 755 "$builddir"/target/release/stalwart-mail \
		"$pkgdir"/usr/bin/stalwart-mail
}

sha512sums="
c19e2e95c26576d64e010cf82458145d9d048f125114f0dc43c12955c1924bed7f6ceee4bcf03e438a0fb986b8601de5ae3035880176503c8115dfdf66a61c3d  mail-server-0.11.6.tar.gz
6e1285747073b12811c96cfe9bfdd45cce3ab5aa81d23524dc7a81e160efd0a9123f4ab187aa0fee7ab9f24bed01a0671a5560018c813bbf5fed2b96248ec3d7  stalwart-mail.initd
d61a79d874424c32916758d576861c00208233229b6c7e39302ed55d242a96571c41d8adccc9575dbe5524695bb9b18da46def16f6d57f2877470441d458498e  stalwart-mail.confd
"
