# Maintainer: Jo Zzsi <jozzsicsataban@gmail.com>
pkgname=dracut
pkgver=107
pkgrel=0
pkgdesc="An event driven initramfs infrastructure"
url="https://github.com/dracut-ng/dracut/wiki"
arch="noarch !armhf" # checkdepends fails
license="GPL-2.0-or-later"
makedepends="asciidoc musl-fts-dev kmod-dev bash coreutils blkid findmnt eudev"
subpackages="$pkgname-modules-network $pkgname-tests $pkgname-modules $pkgname-dev $pkgname-doc $pkgname-bash-completion $pkgname-core::all"
triggers="$pkgname.trigger=/usr/share/kernel/*"
source="$pkgname-$pkgver.tar.gz::https://github.com/dracut-ng/dracut/archive/refs/tags/$pkgver.tar.gz
	README.alpine
	"
provides="initramfs-generator"
provider_priority=100 # low, somewhat experimental
builddir="$srcdir/$pkgname-ng-$pkgver"
_coredepends="bash coreutils blkid findmnt grep"
_moduledepends="eudev util-linux-misc sed losetup"

checkdepends="
	$_coredepends
	$_moduledepends
	btrfs-progs
	cpio
	cryptsetup
	device-mapper
	elogind
	gpg
	jq
	kbd
	keyutils
	libcap-utils
	losetup
	lvm2
	mdadm
	nvme-cli
	parted
	plymouth-themes
	procps
	squashfs-tools
	util-linux-login
	xorriso
	e2fsprogs
	file
	kmod
	sfdisk
	qemu-img
	"

case $CARCH in
	x86_64|aarch64) checkdepends="$checkdepends qemu-system-$CARCH linux-virt";;
	*) checkdepends="$checkdepends linux-lts";;
esac

build() {
	./configure --sysconfdir="/etc" --configprofile=hostonly
	CFLAGS="$CFLAGS -D__GLIBC_PREREQ=" CWD="$(pwd)" make
}

package() {
	depends="$pkgname-core $pkgname-modules-network"

	DESTDIR="$pkgdir" make install
	rm -rf "$pkgdir"/usr/lib/dracut/test/container "$pkgdir"/usr/lib/dracut/test/TEST*SYSTEMD*

	install -Dm644 "$srcdir"/README.alpine -t "$pkgdir"/usr/share/doc/$pkgname/

	# Remove legacy module, depends on ISC dhclient which we don't package.
	rm -r "$pkgdir"/usr/lib/dracut/modules.d/35network-legacy
}

network() {
	pkgdesc="network dracut modules"
	depends="dracut-modules iputils"

	for f in \
		cifs \
		fcoe \
		fcoe-uefi \
		iscsi \
		kernel-network-modules \
		livenet \
		nbd \
		net-lib \
		network \
		nfs \
		qemu-net \
		ssh-client \
		url-lib; do
		amove usr/lib/dracut/modules.d/[0-9][0-9]$f
	done

	if [ "$CARCH" = "s390x" ]; then
		amove usr/lib/dracut/modules.d/[0-9][0-9]zfcp
		amove usr/lib/dracut/modules.d/[0-9][0-9]znet
	fi
}

modules() {
	pkgdesc="local dracut modules"
	depends="dracut-core $_moduledepends"

	rm -rf "$pkgdir"/usr/share/man/man8/*.service.*
	rm -rf "$pkgdir"/usr/lib/kernel

	if [ "$CARCH" != "s390x" ]; then
		for f in \
			cms \
			cio_ignore \
			cms \
			dasd* \
			dcssblk \
			zfcp \
			zipl \
			znet; do
			rm -rf "$pkgdir"/usr/lib/dracut/modules.d/[0-9][0-9]$f
		done
	else
		rm -rf "$pkgdir"/usr/lib/dracut/modules.d/[0-9][0-9]warpclock
	fi

	amove usr/lib/dracut/modules.d
}

core() {
	pkgdesc="core tools for dracut"
	depends="$_coredepends"

	amove etc usr
}

tests() {
	pkgdesc="dracut tests"
	depends="dracut-modules $makedepends $checkdepends"

	amove usr/lib/dracut/test usr/lib/dracut/dracut.conf.d/test*
	amove usr/lib/dracut/modules.d/[0-9][0-9]test*
}

check() {
	export dracutbasedir="$builddir"
	export DRACUT="$dracutbasedir"/dracut.sh
	export TESTS="81" # run only one test does not require qemu

	make check
}

sha512sums="
3f8e79fbfd40c0d384e856cbabe9257c5cbafbb4a3fe4b56da27832c36844dbbf9c59f12155d165d9343bc7341eda2b90c215148eb46ae873c219fbc93992944  dracut-107.tar.gz
fa1d65d8987d9b5846f5cd7989bc373ca4f9d787a3025284ce55e2d5439dce29f70bd75ff5e07bfa783548e080859ec8972b6887ec58993bc54a8dcc849066d6  README.alpine
"
