# Contributor: Carlo Landmeter <clandmeter@alpinelinux.org>
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=zfs
pkgver=2.2.7
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
	alpine-bash-completion-dir.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="
6493faa8e31d9c042c4e8f748d32cb9243212fdf4e0341c19568b47bcf302e60beb89940b80374610b71e1dca1ca5813f3efaddbf1a2453ceabb38381165b271  zfs-2.2.7.tar.gz
91f30fe210288aa652b7cc2074d4bc994e0620f9af148c3007ef6d258e4de5ea9a9fa9813042b1c7a1e5ffb52d621f13b9c433f29ca950aef2d4dc21d9df4e20  alpine-bash-completion-dir.patch
"
