summaryrefslogtreecommitdiff
path: root/filesystems/py-libzfs
diff options
context:
space:
mode:
Diffstat (limited to 'filesystems/py-libzfs')
-rw-r--r--filesystems/py-libzfs/Makefile35
-rw-r--r--filesystems/py-libzfs/distinfo3
-rw-r--r--filesystems/py-libzfs/files/extra-zpool-add.patch44
-rw-r--r--filesystems/py-libzfs/pkg-descr1
4 files changed, 83 insertions, 0 deletions
diff --git a/filesystems/py-libzfs/Makefile b/filesystems/py-libzfs/Makefile
new file mode 100644
index 000000000000..c4bc9fd0007b
--- /dev/null
+++ b/filesystems/py-libzfs/Makefile
@@ -0,0 +1,35 @@
+PORTNAME= libzfs
+PORTVERSION= 1.1.2023020700
+CATEGORIES= filesystems devel python
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= freqlabs@FreeBSD.org
+COMMENT= Python libzfs bindings
+WWW= https://github.com/freenas/py-libzfs
+
+LICENSE= BSD2CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+USE_GITHUB= yes
+GH_ACCOUNT= truenas
+GH_PROJECT= py-libzfs
+GH_TAGNAME= c1bd4a0
+
+HAS_CONFIGURE= yes
+USES= compiler:c11 python
+USE_PYTHON= autoplist distutils cython
+
+CONFIGURE_ENV= freebsd_src=${SRC_BASE}
+MAKE_ENV= freebsd_src=${SRC_BASE}
+
+.include <bsd.port.options.mk>
+
+.if ${OPSYS} == FreeBSD && (${OSVERSION} >= 1500018 || (${OSVERSION} >= 1401000 && ${OSVERSION} < 1500000))
+EXTRA_PATCHES+= ${FILESDIR}/extra-zpool-add.patch
+.endif
+
+.if !exists(${SRC_BASE}/sys/Makefile)
+IGNORE= requires kernel source files in ${SRC_BASE}
+.endif
+
+.include <bsd.port.mk>
diff --git a/filesystems/py-libzfs/distinfo b/filesystems/py-libzfs/distinfo
new file mode 100644
index 000000000000..3ae8f5fa9a4d
--- /dev/null
+++ b/filesystems/py-libzfs/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1675808317
+SHA256 (truenas-py-libzfs-1.1.2023020700-c1bd4a0_GH0.tar.gz) = 23b2d6e1b6ed78be2d12068f9b1b0b01270afaaf0f017817a5fb109d358aa818
+SIZE (truenas-py-libzfs-1.1.2023020700-c1bd4a0_GH0.tar.gz) = 99656
diff --git a/filesystems/py-libzfs/files/extra-zpool-add.patch b/filesystems/py-libzfs/files/extra-zpool-add.patch
new file mode 100644
index 000000000000..7d0688ca4f13
--- /dev/null
+++ b/filesystems/py-libzfs/files/extra-zpool-add.patch
@@ -0,0 +1,44 @@
+From b5ffe1f1d6097df6e2f5cc6dd3c968872ec60804 Mon Sep 17 00:00:00 2001
+From: Ameer Hamza <ahamza@ixsystems.com>
+Date: Tue, 2 Apr 2024 23:56:55 +0500
+Subject: [PATCH] zpool_add API changed in upstream zfs master
+
+---
+ libzfs.pyx | 5 +++--
+ pxd/libzfs.pxd | 2 +-
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/libzfs.pyx b/libzfs.pyx
+index a59fca8..71efa96 100644
+--- a/libzfs.pyx
++++ ./libzfs.pyx
+@@ -3175,13 +3175,14 @@ cdef class ZFSPool(object):
+ hopts = self.root.generate_history_opts(fsopts, '-o')
+ self.root.write_history('zfs create', hopts, name)
+
+- def attach_vdevs(self, vdevs_tree):
++ def attach_vdevs(self, vdevs_tree, check_ashift=0):
+ cdef const char *command = 'zpool add'
+ cdef ZFSVdev vd = self.root.make_vdev_tree(vdevs_tree, {'ashift': self.properties['ashift'].parsed})
+ cdef int ret
++ cdef boolean_t ashift = check_ashift
+
+ with nogil:
+- ret = libzfs.zpool_add(self.handle, vd.nvlist.handle)
++ ret = libzfs.zpool_add(self.handle, vd.nvlist.handle, ashift)
+
+ if ret != 0:
+ raise self.root.get_error()
+diff --git a/pxd/libzfs.pxd b/pxd/libzfs.pxd
+index 3ab9374..6afa275 100644
+--- a/pxd/libzfs.pxd
++++ ./pxd/libzfs.pxd
+@@ -228,7 +228,7 @@ cdef extern from "libzfs.h" nogil:
+ extern int zpool_create(libzfs_handle_t *, const char *, nvpair.nvlist_t *,
+ nvpair.nvlist_t *, nvpair.nvlist_t *)
+ extern int zpool_destroy(zpool_handle_t *, const char *)
+- extern int zpool_add(zpool_handle_t *, nvpair.nvlist_t *)
++ extern int zpool_add(zpool_handle_t *, nvpair.nvlist_t *, boolean_t)
+
+ IF HAVE_ZPOOL_SCAN == 3:
+ extern int zpool_scan(zpool_handle_t *, zfs.pool_scan_func_t, zfs.pool_scrub_cmd_t)
diff --git a/filesystems/py-libzfs/pkg-descr b/filesystems/py-libzfs/pkg-descr
new file mode 100644
index 000000000000..51a23404441a
--- /dev/null
+++ b/filesystems/py-libzfs/pkg-descr
@@ -0,0 +1 @@
+Python libzfs bindings using cython.