# Contributor: Carlo Landmeter <clandmeter@alpinelinux.org>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=zfs
pkgver=2.3.2
pkgrel=0
pkgdesc="Advanced filesystem and volume manager"
url="https://openzfs.org"
arch="all"
license="CDDL-1.0"
provides="spl=$pkgver-r$pkgrel" # Mitigate upgrade conflicts
depends_dev="
	attr-dev
	e2fsprogs-dev
	glib-dev
	libtirpc-dev
	openssl-dev>3
	"
makedepends="
	$depends_dev
	linux-headers
	py3-cffi
	py3-distlib
	py3-setuptools
	python3-dev
	util-linux-dev
	"
options="!check" # need to be run on live system w/ ZFS loaded.
subpackages="
	$pkgname-bash-completion
	$pkgname-dev
	$pkgname-doc
	$pkgname-dracut::noarch
	$pkgname-libs
	$pkgname-openrc
	$pkgname-scripts
	$pkgname-udev
	$pkgname-utils-py:utils_py:noarch
	py3-pyzfs-pyc
	py3-pyzfs:pyzfs:noarch
	"
source="https://github.com/openzfs/zfs/releases/download/zfs-$pkgver/zfs-$pkgver.tar.gz
	tests-fix-S_IFMT-undeclared-at-statx.c.patch
	"

# secfixes:
#   2.2.1-r1:
#     - CVE-2023-49298

build() {
	export CFLAGS="$CFLAGS -fno-tree-vectorize"
	export CXXFLAGS="$CXXFLAGS -fno-tree-vectorize"
	export LIBS="$LIBS -lintl"
	./configure --prefix=/usr \
		--with-tirpc \
		--sysconfdir=/etc \
		--mandir=/usr/share/man \
		--infodir=/usr/share/info \
		--localstatedir=/var \
		--with-config=user \
		--with-udevdir=/usr/lib/udev \
		--disable-systemd \
		--disable-static \
		--with-python=3 \
		--enable-pyzfs
	make
}

package() {
	make DESTDIR="$pkgdir" install

	# no initramfs-tools
	rm -rf "$pkgdir"/usr/share/initramfs-tools

	# we use doas(1)
	rm -rf "$pkgdir"/etc/sudoers.d

	# zfs-mount-generator is a systemd.generator(7)
	rm "$pkgdir"/usr/share/man/man8/zfs-mount-generator*

	# Fix permissions of zfs OpenRC service configuration (#13840)
	chmod 644 "$pkgdir"/etc/conf.d/zfs
}

dracut() {
	pkgdesc="$pkgdesc (dracut)"
	install_if="$pkgname=$pkgver-r$pkgrel dracut-modules"

	amove usr/lib/dracut
}

udev() {
	pkgdesc="$pkgdesc (udev)"

	amove usr/lib/udev
}

scripts() {
	pkgdesc="$pkgdesc (scripts)"

	amove usr/share/zfs
}

utils_py() {
	pkgdesc="$pkgdesc (python utils)"
	depends="python3"

	amove usr/bin/arc_summary
	amove usr/bin/arcstat
	amove usr/bin/dbufstat
	amove usr/bin/zilstat
}

pyzfs() {
	pkgdesc="$pkgdesc (Python lib to interact with ZFS)"
	depends="python3 $pkgname"

	amove usr/lib/python3*
}

sha512sums="
94311f2eca1488be83aa0cb802b4a4541bbbd061a3e8e5cbda62cabbb0c8f9a705372ad192cb77703b3d7642c43be7f604f3c363b243cf03a6aceae2d7e5db81  zfs-2.3.2.tar.gz
3a6742c19b860577862558af722f362d321e83aa1f5445165b629f0482119f42ded9b9f823c801f504dccfd0191a78d7fb82b41c8bd0d6b0f1618f2239319efc  tests-fix-S_IFMT-undeclared-at-statx.c.patch
"
