# Contributor: Clayton Craft <clayton@craftyguy.net>
# Contributor: Hugo Osvaldo Barrera <hugo@whynothugo.nl>
# Maintainer: Struan Robertson <contact@struanrobertson.co.uk>
pkgname=systemd-boot
pkgver=257.6
pkgrel=0
pkgdesc="systemd's EFI boot manager."
url="https://systemd.io/"
# riscv64: I have no way to test this currently
arch="x86_64 x86 aarch64 armv7"
license="LGPL-2.1-or-later"
makedepends="
	bash
	coreutils
	gperf
	libcap-dev
	meson
	py3-elftools
	py3-jinja2
	util-linux-dev
"
source="
	systemd-$pkgver.tar.gz::https://github.com/systemd/systemd/archive/refs/tags/v$pkgver.tar.gz
	0001-patch-wchar_t-for-musl.patch
	ukify.hook
	ukify.conf
	"
# check: no tests
# archcheck: provides platform-specific EFI binary
options="!check !archcheck"
subpackages="
	ukify:ukify:noarch
	systemd-efistub:efistub
	ukify-kernel-hook:ukify_hook:noarch
	"
builddir="$srcdir/systemd-$pkgver"

build() {
	abuild-meson  \
		-Dsbat-distro="alpine" \
		-Dsbat-distro-summary="Alpine Linux" \
		-Dsbat-distro-pkgname="$pkgname" \
		-Dsbat-distro-version="$pkgver" \
		-Dsbat-distro-url="https://alpinelinux.org/" \
		-Dadm-group=false \
		-Danalyze=false \
		-Dbacklight=false \
		-Dbinfmt=false \
		-Dbootloader=enabled \
		-Dcompat-mutable-uid-boundaries=false \
		-Dcoredump=false \
		-Ddns-over-tls=false \
		-Defi=true \
		-Denvironment-d=false \
		-Dfexecve=false \
		-Dfirstboot=false \
		-Dfirst-boot-full-preset=false \
		-Dgshadow=false \
		-Dhibernate=false \
		-Dhomed=disabled \
		-Dhostnamed=false \
		-Dhwdb=false \
		-Didn=false \
		-Dima=false \
		-Dimportd=disabled \
		-Dinitrd=false \
		-Dkernel-install=false \
		-Dldconfig=false \
		-Dlocaled=false \
		-Dlogind=false \
		-Dmachined=false \
		-Dnetworkd=false \
		-Dnscd=false \
		-Dnss-myhostname=false \
		-Dnss-mymachines=disabled \
		-Dnss-resolve=disabled \
		-Dnss-systemd=false \
		-Doomd=false \
		-Dpolkit=disabled \
		-Dportabled=false \
		-Dpstore=false \
		-Dquotacheck=false \
		-Drandomseed=false \
		-Dremote=disabled \
		-Drepart=disabled \
		-Dresolve=false \
		-Drfkill=false \
		-Dsmack=false \
		-Dstoragetm=false \
		-Dsysext=false \
		-Dsysupdate=disabled \
		-Dsysusers=false \
		-Dtimedated=false \
		-Dtimesyncd=false \
		-Dtmpfiles=false \
		-Dtpm=false \
		-Dukify=disabled \
		-Durlify=false \
		-Duserdb=false \
		-Dutmp=false \
		-Dvconsole=false \
		-Dvmspawn=disabled \
		-Dwheel-group=false \
		-Dxdg-autostart=false \
		. output
	meson compile -C output systemd-boot
}

package() {
	mkdir -p "$pkgdir/usr/lib/systemd/boot/efi"

	find "$builddir/output/src/boot/" -name 'systemd*.efi' -exec \
		install -Dm 644 {} -t "$pkgdir/usr/lib/systemd/boot/efi" \;

	install -D -m755 "$srcdir"/ukify.hook "$pkgdir"/usr/share/kernel-hooks.d/ukify.hook
	install -D -m644 "$srcdir"/ukify.conf "$pkgdir"/etc/kernel-hooks.d/ukify.conf
}

ukify() {
	depends="binutils py3-pefile"
	pkgdesc="Create unified kernel images (UKIs)."

	install -Dm755 "$builddir/src/ukify/ukify.py" \
		"$subpkgdir/usr/sbin/ukify"
}

efistub() {
	pkgdesc="systemd's EFI boot stub"
	provides="efistub"
	provider_priority=100  # highest (other is stubbyboot-efistub)

	find "$builddir/output/src/boot/" -name '*.stub' -exec \
	 install -Dm 644 {} -t "$subpkgdir/usr/lib/systemd/boot/efi" \;
}

ukify_hook() {
	depends="ukify kernel-hooks cmd:sbsign"
	pkgdesc="Create unified kernel images (UKIs) (kernel hook)."
	install="$subpkgname.post-install $subpkgname.pre-deinstall"

	amove usr/share/kernel-hooks.d/ukify.hook
	amove etc/kernel-hooks.d/ukify.conf
}

sha512sums="
ceed65196d4235f53db00f5970eadff79149629d8c34f79593d0b326ece536ea0b4f97192458989b5fccbd9438bb2dbb0abda2a5e6c3449a709c9a0889e29d3d  systemd-257.6.tar.gz
81e6f311d567ef8b1f8957f25f019e7fa995f640659381757d1abdd7295434810b79a09367d274c5755f1ed1f6d37d7d98e9c93645578daca34acdeca0ba3965  0001-patch-wchar_t-for-musl.patch
537dd901f27003f3bb56e72769847a2411db2c5ac3091f2a7f990e3210eefe1bf4d36e3dc958a731720a7fba1b9bf3dcda48002c68f6e9bbcebdb8d0b37e88b1  ukify.hook
c119a4c5a472b82aca71c2e0c63c9420e92aaa83c9b5141e3bfbf332206697b6f6a5fd2a90e808d1e276fa896d9ee375dd1c8ffd174487cfccc7345da9ee11b4  ukify.conf
"
