diff --git a/devel/py-inotify-simple/Makefile b/devel/py-inotify-simple/Makefile index c1ea5c6694c2..cb40b5be476a 100644 --- a/devel/py-inotify-simple/Makefile +++ b/devel/py-inotify-simple/Makefile @@ -1,26 +1,31 @@ PORTNAME= inotify-simple PORTVERSION= 2.0.1 -PORTREVISION= 2 +PORTREVISION= 3 CATEGORIES= devel python MASTER_SITES= PYPI PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX} DISTNAME= ${PORTNAME:S/-/_/}-${PORTVERSION} MAINTAINER= grembo@FreeBSD.org COMMENT= Simple wrapper around inotify WWW= https://github.com/chrisjbillington/inotify_simple LICENSE= BSD2CLAUSE LICENSE_FILE= ${WRKSRC}/LICENSE BUILD_DEPENDS= ${PYTHON_PKGNAMEPREFIX}setuptools>=0:devel/py-setuptools@${PY_FLAVOR} \ ${PYTHON_PKGNAMEPREFIX}wheel>=0:devel/py-wheel@${PY_FLAVOR} -LIB_DEPENDS= libinotify.so:devel/libinotify - USES= python USE_PYTHON= autoplist pep517 NO_ARCH= yes +.include + +# Native inotify is in libc since FreeBSD 15 (OSVERSION 1500051); older releases need libinotify +.if ${OPSYS} == FreeBSD && ${OSVERSION} < 1500051 +LIB_DEPENDS= libinotify.so:devel/libinotify +.endif + .include diff --git a/devel/py-inotify-simple/files/patch-inotify__simple.py b/devel/py-inotify-simple/files/patch-inotify__simple.py index 776f877be4d8..69cbd635abbf 100644 --- a/devel/py-inotify-simple/files/patch-inotify__simple.py +++ b/devel/py-inotify-simple/files/patch-inotify__simple.py @@ -1,25 +1,32 @@ --- inotify_simple.py.orig 2025-08-25 06:27:48 UTC +++ inotify_simple.py -@@ -3,6 +3,7 @@ from enum import IntEnum +@@ -3,6 +3,7 @@ from select import poll from collections import namedtuple from struct import unpack_from, calcsize from select import poll +from select import POLLIN from time import sleep from ctypes import CDLL, get_errno, c_int from ctypes.util import find_library -@@ -76,12 +77,12 @@ class INotify(FileIO): +@@ -76,12 +77,19 @@ class INotify(FileIO): object is garbage collected or when `~inotify_simple.INotify.close` is called.""" - global _libc; _libc = _libc or CDLL(find_library('c'), use_errno=True) -+ global _libc; _libc = _libc or CDLL(find_library('inotify'), use_errno=True) ++ global _libc ++ if _libc is None: ++ _uname = os.uname() ++ if _uname.sysname == 'FreeBSD' and \ ++ int(_uname.release.split('.')[0]) < 15: ++ _libc = CDLL(find_library('inotify'), use_errno=True) ++ else: ++ _libc = CDLL(find_library('c'), use_errno=True) flags = (not inheritable) * os.O_CLOEXEC | bool(nonblocking) * os.O_NONBLOCK fd = _libc_call(_libc.inotify_init1, flags) super().__init__(fd, mode='rb', closefd=closefd) self._poller = poll() - self._poller.register(self.fileno()) + self._poller.register(self.fileno(), POLLIN) def add_watch(self, path, mask): """Wrapper around ``inotify_add_watch()``. Returns the watch