pkgsrc-WIP-changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

mfusepy: Add version 3.1.1



Module Name:	pkgsrc-wip
Committed By:	Greg Troxel <gdt%lexort.com@localhost>
Pushed By:	gdt
Date:		Wed Jun 3 08:34:44 2026 -0400
Changeset:	3eb0c1f61d102b41be9c687c068413474f52bdef

Added Files:
	py-mfusepy/DESCR
	py-mfusepy/Makefile
	py-mfusepy/PLIST
	py-mfusepy/TODO
	py-mfusepy/distinfo
	py-mfusepy/patches/patch-mfusepy.py

Log Message:
mfusepy: Add version 3.1.1

mfusepy is a Python module that provides a simple interface to FUSE
and macFUSE. It's just one file and is implemented using ctypes to use
libfuse.

mfusepy is a fork of fusepy (named py-fuse-bindings in pkgsrc).  The
main differences are support for the FUSE 3 API and efficiency
improvements.

To see a diff of this commit:
https://wip.pkgsrc.org/cgi-bin/gitweb.cgi?p=pkgsrc-wip.git;a=commitdiff;h=3eb0c1f61d102b41be9c687c068413474f52bdef

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

diffstat:
 py-mfusepy/DESCR                    |  7 +++++
 py-mfusepy/Makefile                 | 17 +++++++++++++
 py-mfusepy/PLIST                    |  9 +++++++
 py-mfusepy/TODO                     |  3 +++
 py-mfusepy/distinfo                 |  6 +++++
 py-mfusepy/patches/patch-mfusepy.py | 51 +++++++++++++++++++++++++++++++++++++
 6 files changed, 93 insertions(+)

diffs:
diff --git a/py-mfusepy/DESCR b/py-mfusepy/DESCR
new file mode 100644
index 0000000000..52fe39eff9
--- /dev/null
+++ b/py-mfusepy/DESCR
@@ -0,0 +1,7 @@
+mfusepy is a Python module that provides a simple interface to FUSE
+and macFUSE. It's just one file and is implemented using ctypes to use
+libfuse.
+
+mfusepy is a fork of fusepy (named py-fuse-bindings in pkgsrc).  The
+main differences are support for the FUSE 3 API and efficiency
+improvements.
diff --git a/py-mfusepy/Makefile b/py-mfusepy/Makefile
new file mode 100644
index 0000000000..ebd39a8e9e
--- /dev/null
+++ b/py-mfusepy/Makefile
@@ -0,0 +1,17 @@
+# $NetBSD$
+
+DISTNAME=	mfusepy-3.1.1
+PKGNAME=	${PYPKGPREFIX}-${DISTNAME}
+CATEGORIES=	filesystems python
+MASTER_SITES=	${MASTER_SITE_PYPI:=m/mfusepy/}
+
+MAINTAINER=	gdt%NetBSD.org@localhost
+HOMEPAGE=	https://pypi.org/project/mfusepy/
+COMMENT=	Python bindings for the FUSE[23] APIs
+LICENSE=	isc
+
+USE_LANGUAGES=	# none
+
+.include "../../lang/python/wheel.mk"
+.include "../../mk/fuse.buildlink3.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/py-mfusepy/PLIST b/py-mfusepy/PLIST
new file mode 100644
index 0000000000..c3c6e0b54a
--- /dev/null
+++ b/py-mfusepy/PLIST
@@ -0,0 +1,9 @@
+@comment $NetBSD$
+${PYSITELIB}/${WHEEL_INFODIR}/METADATA
+${PYSITELIB}/${WHEEL_INFODIR}/RECORD
+${PYSITELIB}/${WHEEL_INFODIR}/WHEEL
+${PYSITELIB}/${WHEEL_INFODIR}/licenses/LICENSE
+${PYSITELIB}/${WHEEL_INFODIR}/top_level.txt
+${PYSITELIB}/mfusepy.py
+${PYSITELIB}/mfusepy.pyc
+${PYSITELIB}/mfusepy.pyo
diff --git a/py-mfusepy/TODO b/py-mfusepy/TODO
new file mode 100644
index 0000000000..16158f56fe
--- /dev/null
+++ b/py-mfusepy/TODO
@@ -0,0 +1,3 @@
+  - prepare COMMIT_MSG
+  - resolve ioctl test failure
+  - test more
diff --git a/py-mfusepy/distinfo b/py-mfusepy/distinfo
new file mode 100644
index 0000000000..6447d6058d
--- /dev/null
+++ b/py-mfusepy/distinfo
@@ -0,0 +1,6 @@
+$NetBSD$
+
+BLAKE2s (mfusepy-3.1.1.tar.gz) = a72506eb624ee8750863452c0c8c493f9ce40ddb0c27f2a196270d6f7953eece
+SHA512 (mfusepy-3.1.1.tar.gz) = 3d2b2d7531998bccd2b218e31983efd0b1d0854c9f4af3a88922fb89a55cd5c4e6972fa50031cae29f553b599686ad9dd1cb84134989fb876a9fa3b34f64547f
+Size (mfusepy-3.1.1.tar.gz) = 34549 bytes
+SHA1 (patch-mfusepy.py) = 35cb85c125ea95264e8fbabf88409870e6901d3d
diff --git a/py-mfusepy/patches/patch-mfusepy.py b/py-mfusepy/patches/patch-mfusepy.py
new file mode 100644
index 0000000000..d4eb5fc980
--- /dev/null
+++ b/py-mfusepy/patches/patch-mfusepy.py
@@ -0,0 +1,51 @@
+$NetBSD$
+
+From upstream pending PR:
+
+  https://github.com/mxmlnkn/mfusepy/pull/42
+
+with additional debugging/kludging of the refuse path.  Hence this is in wip :-)
+
+--- mfusepy.py.orig	2026-03-13 00:36:12.000000000 +0000
++++ mfusepy.py
+@@ -99,6 +99,12 @@ if not _libfuse_path:
+         _libfuse_path = (
+             find_library('fuse4x') or find_library('osxfuse') or find_library('fuse') or find_library('fuse-t')
+         )
++    elif _system == 'NetBSD':
++        # On NetBSD 10+ librefuse implements FUSE 3, targetting 3.10 compatibility.
++        _libfuse_path = find_library('refuse')
++        print(f"_libfuse_path 001 is {_libfuse_path}")
++        _libfuse_path = 'librefuse.so.2'
++        print(f"_libfuse_path 002 is {_libfuse_path}")
+     elif _system == 'Windows':
+         # pytype: disable=module-attr
+         try:
+@@ -155,7 +161,7 @@ if fuse_version_major == 2 and fuse_vers
+         f"Found library {_libfuse_path} is too old: {fuse_version_major}.{fuse_version_minor}. "
+         "There have been several ABI breaks in each version. Libfuse < 2.6 is not supported!"
+     )
+-if fuse_version_major != 2 and not (fuse_version_major == 3 and _system == 'Linux'):
++if fuse_version_major != 2 and not (fuse_version_major == 3 and _system in ('Linux', 'NetBSD')):
+     raise AttributeError(
+         f"Found library {_libfuse_path} has wrong major version: {fuse_version_major}. Expected FUSE 2!"
+     )
+@@ -1379,7 +1385,8 @@ class FUSE:
+         }
+ 
+         argsb = [arg.encode(encoding, self.errors) for arg in args]
+-        argv = (ctypes.c_char_p * len(argsb))(*argsb)
++        argc = len(argsb)
++        argv = (ctypes.c_char_p * (argc + 1))(*argsb, None)  # Null terminate explicitly
+ 
+         alternative_callbacks = {
+             "readdir": ["readdir_with_offset"],
+@@ -1443,7 +1450,7 @@ class FUSE:
+         except ValueError:
+             old_handler = SIG_DFL
+ 
+-        err = fuse_main_real(len(argsb), argv, ctypes.pointer(fuse_ops), ctypes.sizeof(fuse_ops), None)
++        err = fuse_main_real(argc, argv, ctypes.pointer(fuse_ops), ctypes.sizeof(fuse_ops), None)
+ 
+         try:
+             signal(SIGINT, old_handler)


Home | Main Index | Thread Index | Old Index