pkgsrc-Changes archive

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

CVS commit: pkgsrc/sysutils/gvfs



Module Name:    pkgsrc
Committed By:   vins
Date:           Sun May 10 17:38:15 UTC 2026

Modified Files:
        pkgsrc/sysutils/gvfs: Makefile PLIST distinfo options.mk
Added Files:
        pkgsrc/sysutils/gvfs: hacks.mk
        pkgsrc/sysutils/gvfs/patches: patch-client_gdaemonvfs.c
            patch-daemon_ParseFTPList.c patch-man_meson.build patch-meson.build
Removed Files:
        pkgsrc/sysutils/gvfs/patches: patch-aa patch-ac patch-ad patch-ae
            patch-ag patch-ai patch-metadata_metatree.c

Log Message:
sysutils/gvfs: Update to gvfs-1.60.0

Update prepared in wip by PHO, with some later contributions by me.

The change log is too long to paste here. See:
https://gitlab.gnome.org/GNOME/gvfs/-/blob/master/NEWS


To generate a diff of this commit:
cvs rdiff -u -r1.142 -r1.143 pkgsrc/sysutils/gvfs/Makefile
cvs rdiff -u -r1.17 -r1.18 pkgsrc/sysutils/gvfs/PLIST
cvs rdiff -u -r1.27 -r1.28 pkgsrc/sysutils/gvfs/distinfo
cvs rdiff -u -r0 -r1.1 pkgsrc/sysutils/gvfs/hacks.mk
cvs rdiff -u -r1.6 -r1.7 pkgsrc/sysutils/gvfs/options.mk
cvs rdiff -u -r1.9 -r0 pkgsrc/sysutils/gvfs/patches/patch-aa
cvs rdiff -u -r1.4 -r0 pkgsrc/sysutils/gvfs/patches/patch-ac
cvs rdiff -u -r1.2 -r0 pkgsrc/sysutils/gvfs/patches/patch-ad
cvs rdiff -u -r1.1 -r0 pkgsrc/sysutils/gvfs/patches/patch-ae \
    pkgsrc/sysutils/gvfs/patches/patch-ag \
    pkgsrc/sysutils/gvfs/patches/patch-ai \
    pkgsrc/sysutils/gvfs/patches/patch-metadata_metatree.c
cvs rdiff -u -r0 -r1.1 pkgsrc/sysutils/gvfs/patches/patch-client_gdaemonvfs.c \
    pkgsrc/sysutils/gvfs/patches/patch-daemon_ParseFTPList.c \
    pkgsrc/sysutils/gvfs/patches/patch-man_meson.build \
    pkgsrc/sysutils/gvfs/patches/patch-meson.build

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

Modified files:

Index: pkgsrc/sysutils/gvfs/Makefile
diff -u pkgsrc/sysutils/gvfs/Makefile:1.142 pkgsrc/sysutils/gvfs/Makefile:1.143
--- pkgsrc/sysutils/gvfs/Makefile:1.142 Fri Feb  6 10:05:54 2026
+++ pkgsrc/sysutils/gvfs/Makefile       Sun May 10 17:38:14 2026
@@ -1,43 +1,114 @@
-# $NetBSD: Makefile,v 1.142 2026/02/06 10:05:54 wiz Exp $
+# $NetBSD: Makefile,v 1.143 2026/05/10 17:38:14 vins Exp $
+#
 
-DISTNAME=      gvfs-1.6.7
-PKGREVISION=   78
-CATEGORIES=    sysutils
-MASTER_SITES=  ${MASTER_SITE_GNOME:=sources/gvfs/1.6/}
-EXTRACT_SUFX=  .tar.bz2
+DISTNAME=      gvfs-1.60.0
+CATEGORIES?=   sysutils
+MASTER_SITES=  ${MASTER_SITE_GNOME:=sources/gvfs/${PKGVERSION_NOREV:S/./ /g:[1..2]:ts.}/}
+EXTRACT_SUFX=  .tar.xz
 
 MAINTAINER=    pkgsrc-users%NetBSD.org@localhost
-HOMEPAGE=      https://www.gnome.org/
+HOMEPAGE=      https://wiki.gnome.org/Projects/gvfs
 COMMENT=       Userspace virtual filesystem
 LICENSE=       gnu-lgpl-v2
 
-GNU_CONFIGURE=         yes
-USE_LIBTOOL=           yes
-USE_TOOLS+=            intltool gmake pkg-config msgfmt
-CONFIGURE_ARGS+=       --enable-http
-CONFIGURE_ARGS+=       --disable-bash-completion
+USE_TOOLS+=    pkg-config
 
-BUILDLINK_TRANSFORM+=  rm:-DG_DISABLE_DEPRECATED
-
-CFLAGS+=       -Wno-incompatible-pointer-types
-CFLAGS+=       -Wno-implicit-function-declaration
+USE_PKGLOCALEDIR=      yes
 
 .include "../../mk/compiler.mk"
 
+CFLAGS.NetBSD+=        -DNETBSD_SOURCE # string.h
+
 .if !empty(PKGSRC_COMPILER:Mclang) || ${CC_VERSION:Mgcc-[6-9]*} || ${CC_VERSION:Mgcc-1[0-9].*}
-CFLAGS.SunOS+=         -D_XOPEN_SOURCE=600 -D__EXTENSIONS__
+CFLAGS.SunOS+= -D_XOPEN_SOURCE=600 -D__EXTENSIONS__
 .else
-CFLAGS.SunOS+=         -D_XOPEN_SOURCE=500 -D__EXTENSIONS__
+CFLAGS.SunOS+= -D_XOPEN_SOURCE=500 -D__EXTENSIONS__
 .endif
 
-.include "options.mk"
-BUILDLINK_API_DEPENDS.glib2+=  glib2>=2.23.4
-.include "../../devel/glib2/modules.mk"
-.include "../../sysutils/dbus/buildlink3.mk"
+LDFLAGS.SunOS+=        -lsocket        # if_indextoname()
+
+# Enforce some defaults to prevent PLIST issues witnessed in some environments.
+MESON_ARGS+=   --sysconfdir=${PKG_SYSCONFDIR} \
+               --localedir=${PKGLOCALEDIR}/locale
+
+# Disable some options which currently have no support on pkgsrc,
+# and are otherwise only available on Linux.
+MESON_ARGS+=   -Dlogind=false \
+               -Donedrive=false \
+               -Dudisks2=false
+
+# Disable systemd support by default, as we currently lack a way to check for
+# builtin systemd on Linux.
+MESON_ARGS+=   -Dsystemduserunitdir=no \
+               -Dtmpfilesdir=no
+
+# Generate man pages; requires docbook-xsl.
+TOOL_DEPENDS+=         docbook-xsl-[0-9]*:../../textproc/docbook-xsl
+DOCBOOK_MANPAGE_XSL=   ${PREFIX}/share/xsl/docbook/manpages/docbook.xsl
+MESON_ARGS+=           -Dman=true
+
+SUBST_CLASSES+=                man
+SUBST_STAGE.man=       pre-configure
+SUBST_FILES.man=       man/meson.build
+SUBST_VARS.man+=       DOCBOOK_MANPAGE_XSL
+
+.include "../../mk/bsd.fast.prefs.mk"
+
+# Turn on some settings by default.
+
+## afp://[user@]host[:port][/share]
+##   Apple Filing Protocol.
+MESON_ARGS+=   -Dafp=true
+
+## archive://{URL-ENCODED-URI}
+##   Access archive files.
+MESON_ARGS+=   -Darchive=true
 .include "../../archivers/libarchive/buildlink3.mk"
-.include "../../net/libsoup/buildlink3.mk"
+
+## burn://{DEVICE}
+##   Virtual filesystem for file managers to help them implement burning
+##   optical discs.
+MESON_ARGS+=   -Dburn=true
+
+## http://, https://
+##   HTTP protocol support.
+MESON_ARGS+=   -Dhttp=true
 .include "../../textproc/libxml2/buildlink3.mk"
-.include "../../devel/GConf/buildlink3.mk"
-.include "../../security/libgnome-keyring/buildlink3.mk"
+.include "../../net/libsoup3/buildlink3.mk"
+
+## libgcrypt support.
+MESON_ARGS+=    -Dgcrypt=true
+.include "../../security/libgcrypt/buildlink3.mk"
+
+## libusb interruption support: not available on DragonFly.
+.if ${OPSYS} != "DragonFly"
+.  include "../../devel/libusb1/buildlink3.mk"
+MESON_ARGS+=    -Dlibusb=true
+.else
+MESON_ARGS+=    -Dlibusb=false
+.endif
+
+## nfs://{HOST}/{SHARE}
+##   NFS v2 and v3 protocols.
+MESON_ARGS+=   -Dnfs=true
+.include "../../net/libnfs/buildlink3.mk"
+
+## sftp://[user@]host[:port], ssh://[user@]host[:port]
+##   SFTP protocol support.
+MESON_ARGS+=   -Dsftp=true
+
+## wsdd:///
+##   Access Web Service Discovery Daemon.
+MESON_ARGS+=   -Dwsdd=true
+
+.include "options.mk"
+
+.include "../../devel/glib2/modules.mk"
+.include "../../devel/gettext-lib/buildlink3.mk"
 .include "../../security/openssl/buildlink3.mk"
+.include "../../sysutils/dbus/buildlink3.mk"
+.include "../../sysutils/gsettings-desktop-schemas/buildlink3.mk"
+.include "../../textproc/libxslt/xsltproc-nonet.mk"
+
+.include "../../devel/meson/build.mk"
 .include "../../mk/bsd.pkg.mk"

Index: pkgsrc/sysutils/gvfs/PLIST
diff -u pkgsrc/sysutils/gvfs/PLIST:1.17 pkgsrc/sysutils/gvfs/PLIST:1.18
--- pkgsrc/sysutils/gvfs/PLIST:1.17     Sat Nov  4 12:30:38 2023
+++ pkgsrc/sysutils/gvfs/PLIST  Sun May 10 17:38:14 2026
@@ -1,68 +1,94 @@
-@comment $NetBSD: PLIST,v 1.17 2023/11/04 12:30:38 wiz Exp $
-bin/gvfs-cat
-bin/gvfs-copy
-bin/gvfs-info
-bin/gvfs-less
-bin/gvfs-ls
-bin/gvfs-mkdir
-bin/gvfs-monitor-dir
-bin/gvfs-monitor-file
-bin/gvfs-mount
-bin/gvfs-move
-bin/gvfs-open
-bin/gvfs-rename
-bin/gvfs-rm
-bin/gvfs-save
-bin/gvfs-set-attribute
-bin/gvfs-trash
-bin/gvfs-tree
-include/gvfs-client/gvfs/gvfsurimapper.h
-include/gvfs-client/gvfs/gvfsuriutils.h
-lib/gio/modules/libgiogconf.la
-lib/gio/modules/libgioremote-volume-monitor.la
-lib/gio/modules/libgvfsdbus.la
-${PLIST.avahi}lib/libgvfscommon-dnssd.la
-lib/libgvfscommon.la
-${PLIST.fuse}libexec/gvfs-fuse-daemon
+@comment $NetBSD: PLIST,v 1.18 2026/05/10 17:38:14 vins Exp $
+lib/gio/modules/libgioremote-volume-monitor.so
+lib/gio/modules/libgvfsdbus.so
+lib/gvfs/libgvfscommon.so
+lib/gvfs/libgvfsdaemon.so
+${PLIST.afc}libexec/gvfs-afc-volume-monitor
+${PLIST.gphoto}libexec/gvfs-gphoto2-volume-monitor
+${PLIST.mtp}libexec/gvfs-mtp-volume-monitor
 libexec/gvfsd
+${PLIST.polkit}libexec/gvfsd-admin
+${PLIST.afc}libexec/gvfsd-afc
+libexec/gvfsd-afp
+libexec/gvfsd-afp-browse
 libexec/gvfsd-archive
 libexec/gvfsd-burn
+${PLIST.cdda}libexec/gvfsd-cdda
 libexec/gvfsd-computer
 libexec/gvfsd-dav
-${PLIST.avahi}libexec/gvfsd-dnssd
+${PLIST.dnssd}libexec/gvfsd-dnssd
 libexec/gvfsd-ftp
+${PLIST.fuse}libexec/gvfsd-fuse
+${PLIST.gdata}libexec/gvfsd-google
+${PLIST.gphoto}libexec/gvfsd-gphoto2
 libexec/gvfsd-http
 libexec/gvfsd-localtest
 libexec/gvfsd-metadata
+${PLIST.mtp}libexec/gvfsd-mtp
 libexec/gvfsd-network
+libexec/gvfsd-nfs
+libexec/gvfsd-recent
 libexec/gvfsd-sftp
-${PLIST.samba}libexec/gvfsd-smb
-${PLIST.samba}libexec/gvfsd-smb-browse
+${PLIST.smb}libexec/gvfsd-smb
+${PLIST.smb}libexec/gvfsd-smb-browse
 libexec/gvfsd-trash
-share/dbus-1/services/gvfs-daemon.service
-share/dbus-1/services/gvfs-metadata.service
+libexec/gvfsd-wsdd
+man/man1/gvfsd-fuse.1
+man/man1/gvfsd-metadata.1
+man/man1/gvfsd.1
+man/man7/gvfs.7
+${PLIST.dnssd}share/GConf/gsettings/gvfs-dns-sd.convert
+${PLIST.smb}share/GConf/gsettings/gvfs-smb.convert
+${PLIST.afc}share/dbus-1/services/org.gtk.vfs.AfcVolumeMonitor.service
+share/dbus-1/services/org.gtk.vfs.Daemon.service
+${PLIST.gphoto}share/dbus-1/services/org.gtk.vfs.GPhoto2VolumeMonitor.service
+${PLIST.mtp}share/dbus-1/services/org.gtk.vfs.MTPVolumeMonitor.service
+share/dbus-1/services/org.gtk.vfs.Metadata.service
+${PLIST.dnssd}share/glib-2.0/schemas/org.gnome.system.dns_sd.gschema.xml
+share/glib-2.0/schemas/org.gnome.system.gvfs.enums.xml
+${PLIST.smb}share/glib-2.0/schemas/org.gnome.system.smb.gschema.xml
+share/glib-2.0/schemas/org.gnome.system.wsdd.gschema.xml
+${PLIST.polkit}share/gvfs/mounts/admin.mount
+${PLIST.afc}share/gvfs/mounts/afc.mount
+share/gvfs/mounts/afp-browse.mount
+share/gvfs/mounts/afp.mount
 share/gvfs/mounts/archive.mount
 share/gvfs/mounts/burn.mount
+${PLIST.cdda}share/gvfs/mounts/cdda.mount
 share/gvfs/mounts/computer.mount
-${PLIST.avahi}share/gvfs/mounts/dav+sd.mount
+share/gvfs/mounts/dav+sd.mount
 share/gvfs/mounts/dav.mount
-${PLIST.avahi}share/gvfs/mounts/dns-sd.mount
+${PLIST.dnssd}share/gvfs/mounts/dns-sd.mount
 share/gvfs/mounts/ftp.mount
+share/gvfs/mounts/ftpis.mount
+share/gvfs/mounts/ftps.mount
+${PLIST.gdata}share/gvfs/mounts/google.mount
+${PLIST.gphoto}share/gvfs/mounts/gphoto2.mount
 share/gvfs/mounts/http.mount
 share/gvfs/mounts/localtest.mount
+${PLIST.mtp}share/gvfs/mounts/mtp.mount
 share/gvfs/mounts/network.mount
+share/gvfs/mounts/nfs.mount
+share/gvfs/mounts/recent.mount
 share/gvfs/mounts/sftp.mount
-${PLIST.samba}share/gvfs/mounts/smb-browse.mount
-${PLIST.samba}share/gvfs/mounts/smb.mount
+${PLIST.smb}share/gvfs/mounts/smb-browse.mount
+${PLIST.smb}share/gvfs/mounts/smb.mount
 share/gvfs/mounts/trash.mount
+share/gvfs/mounts/wsdd.mount
+${PLIST.afc}share/gvfs/remote-volume-monitors/afc.monitor
+${PLIST.gphoto}share/gvfs/remote-volume-monitors/gphoto2.monitor
+${PLIST.mtp}share/gvfs/remote-volume-monitors/mtp.monitor
+share/locale/ab/LC_MESSAGES/gvfs.mo
 share/locale/af/LC_MESSAGES/gvfs.mo
 share/locale/ar/LC_MESSAGES/gvfs.mo
 share/locale/as/LC_MESSAGES/gvfs.mo
 share/locale/ast/LC_MESSAGES/gvfs.mo
+share/locale/be/LC_MESSAGES/gvfs.mo
 share/locale/be@latin/LC_MESSAGES/gvfs.mo
 share/locale/bg/LC_MESSAGES/gvfs.mo
 share/locale/bn/LC_MESSAGES/gvfs.mo
 share/locale/bn_IN/LC_MESSAGES/gvfs.mo
+share/locale/bs/LC_MESSAGES/gvfs.mo
 share/locale/ca/LC_MESSAGES/gvfs.mo
 share/locale/ca@valencia/LC_MESSAGES/gvfs.mo
 share/locale/cs/LC_MESSAGES/gvfs.mo
@@ -71,20 +97,27 @@ share/locale/de/LC_MESSAGES/gvfs.mo
 share/locale/el/LC_MESSAGES/gvfs.mo
 share/locale/en@shaw/LC_MESSAGES/gvfs.mo
 share/locale/en_GB/LC_MESSAGES/gvfs.mo
+share/locale/eo/LC_MESSAGES/gvfs.mo
 share/locale/es/LC_MESSAGES/gvfs.mo
 share/locale/et/LC_MESSAGES/gvfs.mo
 share/locale/eu/LC_MESSAGES/gvfs.mo
+share/locale/fa/LC_MESSAGES/gvfs.mo
 share/locale/fi/LC_MESSAGES/gvfs.mo
 share/locale/fr/LC_MESSAGES/gvfs.mo
+share/locale/fur/LC_MESSAGES/gvfs.mo
 share/locale/ga/LC_MESSAGES/gvfs.mo
 share/locale/gl/LC_MESSAGES/gvfs.mo
 share/locale/gu/LC_MESSAGES/gvfs.mo
 share/locale/he/LC_MESSAGES/gvfs.mo
 share/locale/hi/LC_MESSAGES/gvfs.mo
+share/locale/hr/LC_MESSAGES/gvfs.mo
 share/locale/hu/LC_MESSAGES/gvfs.mo
 share/locale/id/LC_MESSAGES/gvfs.mo
+share/locale/ie/LC_MESSAGES/gvfs.mo
 share/locale/it/LC_MESSAGES/gvfs.mo
 share/locale/ja/LC_MESSAGES/gvfs.mo
+share/locale/ka/LC_MESSAGES/gvfs.mo
+share/locale/kab/LC_MESSAGES/gvfs.mo
 share/locale/kk/LC_MESSAGES/gvfs.mo
 share/locale/kn/LC_MESSAGES/gvfs.mo
 share/locale/ko/LC_MESSAGES/gvfs.mo
@@ -95,10 +128,13 @@ share/locale/mai/LC_MESSAGES/gvfs.mo
 share/locale/mk/LC_MESSAGES/gvfs.mo
 share/locale/ml/LC_MESSAGES/gvfs.mo
 share/locale/mr/LC_MESSAGES/gvfs.mo
+share/locale/ms/LC_MESSAGES/gvfs.mo
 share/locale/nb/LC_MESSAGES/gvfs.mo
 share/locale/nds/LC_MESSAGES/gvfs.mo
+share/locale/ne/LC_MESSAGES/gvfs.mo
 share/locale/nl/LC_MESSAGES/gvfs.mo
 share/locale/nn/LC_MESSAGES/gvfs.mo
+share/locale/oc/LC_MESSAGES/gvfs.mo
 share/locale/or/LC_MESSAGES/gvfs.mo
 share/locale/pa/LC_MESSAGES/gvfs.mo
 share/locale/pl/LC_MESSAGES/gvfs.mo
@@ -114,6 +150,7 @@ share/locale/sr@latin/LC_MESSAGES/gvfs.m
 share/locale/sv/LC_MESSAGES/gvfs.mo
 share/locale/ta/LC_MESSAGES/gvfs.mo
 share/locale/te/LC_MESSAGES/gvfs.mo
+share/locale/tg/LC_MESSAGES/gvfs.mo
 share/locale/th/LC_MESSAGES/gvfs.mo
 share/locale/tr/LC_MESSAGES/gvfs.mo
 share/locale/ug/LC_MESSAGES/gvfs.mo
@@ -122,3 +159,5 @@ share/locale/vi/LC_MESSAGES/gvfs.mo
 share/locale/zh_CN/LC_MESSAGES/gvfs.mo
 share/locale/zh_HK/LC_MESSAGES/gvfs.mo
 share/locale/zh_TW/LC_MESSAGES/gvfs.mo
+${PLIST.polkit}share/polkit-1/actions/org.gtk.vfs.file-operations.policy
+${PLIST.polkit}share/polkit-1/rules.d/org.gtk.vfs.file-operations.rules

Index: pkgsrc/sysutils/gvfs/distinfo
diff -u pkgsrc/sysutils/gvfs/distinfo:1.27 pkgsrc/sysutils/gvfs/distinfo:1.28
--- pkgsrc/sysutils/gvfs/distinfo:1.27  Tue Oct 26 11:19:40 2021
+++ pkgsrc/sysutils/gvfs/distinfo       Sun May 10 17:38:14 2026
@@ -1,12 +1,9 @@
-$NetBSD: distinfo,v 1.27 2021/10/26 11:19:40 nia Exp $
+$NetBSD: distinfo,v 1.28 2026/05/10 17:38:14 vins Exp $
 
-BLAKE2s (gvfs-1.6.7.tar.bz2) = 0a9d41a0c5974b4b66f705a4fa5b1fd11a15cfa79b1bad1a9c796c41cf26a5aa
-SHA512 (gvfs-1.6.7.tar.bz2) = 68fa29bb2c272e4167f17b1383d7758b5eb235e566df0e11a2413503e5b3052ed02e0101228f5f668631480ad2fd18fa682e3c1d38b7b65a34122b1271fd3218
-Size (gvfs-1.6.7.tar.bz2) = 1404372 bytes
-SHA1 (patch-aa) = 37691e13b1c2edbcf1af301bfae22c6b1943efdf
-SHA1 (patch-ac) = 2168ed0d5883747e9b4e1b938ee818e6aefb8e56
-SHA1 (patch-ad) = 45e7d172fe4839018b64babdca2f8c60c7eeec70
-SHA1 (patch-ae) = 07b631786e89f38f831a1cc926818c15520fcd3b
-SHA1 (patch-ag) = 8474aed53e07f2c3899bafc278d886c41ccd04a5
-SHA1 (patch-ai) = 2246232efe91c36be8c577c1db16e80ebb45a515
-SHA1 (patch-metadata_metatree.c) = 952352af28299c92403932ef38d281611427b654
+BLAKE2s (gvfs-1.60.0.tar.xz) = 7592f6c6545146f4eedb3cc2339ab36a9d1e47246ade9fa688409f228fd127c0
+SHA512 (gvfs-1.60.0.tar.xz) = 4897f8bcaa4e8d1eb73f797080e30bc6a442729d93f1ab958add719fe8cd7a30777a1ff26ef807f86fa62edd15529426fa974f01c0081bd3b72af8ae03c01385
+Size (gvfs-1.60.0.tar.xz) = 1297324 bytes
+SHA1 (patch-client_gdaemonvfs.c) = c4833ffcec2b6d1b93beb12b7405fdc3e171beb0
+SHA1 (patch-daemon_ParseFTPList.c) = 50c38494cabb67c4c5047a1dc5a34f487f7349cf
+SHA1 (patch-man_meson.build) = e49cca1e56248625ce111168807425df4fd2e9f9
+SHA1 (patch-meson.build) = f223d6dc97791da7ef96cf4cc099c1599c0e39b2

Index: pkgsrc/sysutils/gvfs/options.mk
diff -u pkgsrc/sysutils/gvfs/options.mk:1.6 pkgsrc/sysutils/gvfs/options.mk:1.7
--- pkgsrc/sysutils/gvfs/options.mk:1.6 Sat Nov  4 12:27:36 2023
+++ pkgsrc/sysutils/gvfs/options.mk     Sun May 10 17:38:14 2026
@@ -1,10 +1,9 @@
-# $NetBSD: options.mk,v 1.6 2023/11/04 12:27:36 wiz Exp $
+# $NetBSD: options.mk,v 1.7 2026/05/10 17:38:14 vins Exp $
 
 PKG_OPTIONS_VAR=       PKG_OPTIONS.gvfs
-PKG_SUPPORTED_OPTIONS+=        avahi fuse samba
-PLIST_VARS+=           ${PKG_SUPPORTED_OPTIONS}
-
-.include "../../mk/bsd.fast.prefs.mk"
+PKG_SUPPORTED_OPTIONS= bluray cdda dnssd fuse goa gcr gphoto idevice libgdata \
+                       libmtp polkit samba secret udev
+PKG_SUGGESTED_OPTIONS= gcr dnssd secret
 
 .if ${OPSYS} == "Linux" || ${OPSYS} == "NetBSD"
 PKG_SUGGESTED_OPTIONS+=        samba
@@ -14,30 +13,206 @@ PKG_SUGGESTED_OPTIONS+=    samba
 PKG_SUGGESTED_OPTIONS+=        fuse
 .endif
 
+# Check for a working udev implementation.
+# If available, enable some options which depend on it.
+.include "../../mk/udev.buildlink3.mk"
+.if ${UDEV_TYPE} != "none"
+PKG_SUGGESTED_OPTIONS+=        udev
+PKG_SUGGESTED_OPTIONS+=        cdda libmtp
+.endif
+
+.if ${OPSYS} == "Linux"
+# polkit itself is cross-platform but gvfs also requires libcap, which is
+# only available on Linux.
+PKG_SUGGESTED_OPTIONS+=        polkit
+.endif
+
 .include "../../mk/bsd.options.mk"
 
-.if !empty(PKG_OPTIONS:Mavahi)
-.include "../../net/avahi/buildlink3.mk"
-CONFIGURE_ARGS+=       --enable-avahi
-PLIST.avahi=           yes
+# Some options expect gudev support:
+# use the GUDEV_REQUIRED variable to handle them.
+GUDEV_REQUIRED?=       # empty
+
+# Gnome Online Accounts support:
+# some users might have a reason not to want it by default.
+GOA_REQUIRED?=         # empty
+
+###
+### afc://{UUID}
+###  Apple File Conduit; allow to exchange files with iOS devices
+###
+PLIST_VARS+=   afc
+.if !empty(PKG_OPTIONS:Midevice)
+MESON_ARGS+=    -Dafc=true
+PLIST.afc=     yes
+.  include "../../comms/libimobiledevice/buildlink3.mk"
+.  include "../../textproc/libplist/buildlink3.mk"
 .else
-CONFIGURE_ARGS+=       --disable-avahi
+MESON_ARGS+=   -Dafc=false
 .endif
 
-.if !empty(PKG_OPTIONS:Msamba)
-CONFIGURE_ARGS+=       --with-samba-includes=${BUILDLINK_PREFIX.samba}/include
-CONFIGURE_ARGS+=       --with-samba-libs=${BUILDLINK_PREFIX.samba}/lib
-.include "../../net/samba4/buildlink3.mk"
-PLIST.samba=           yes
+###
+### admin:///
+###   Access local filesystem as a root user.
+###
+PLIST_VARS+=   polkit
+.if !empty(PKG_OPTIONS:Mpolkit)
+MESON_ARGS+=   -Dadmin=true
+PLIST.polkit=  yes
+.  include "../../sysutils/libcap/buildlink3.mk"
+.  include "../../security/polkit/buildlink3.mk"
+.else
+MESON_ARGS+=   -Dadmin=false
+.endif
+
+###
+#### Blu-Ray metadata support.
+###
+.if !empty(PKG_OPTIONS:Mbluray)
+MESON_ARGS+=    -Dbluray=true
+.  include "../../multimedia/libbluray/buildlink3.mk"
+.else
+MESON_ARGS+=    -Dbluray=false
+.endif
+
+###
+###  cdda://{DEVICE}
+###    Access audio discs.
+###
+PLIST_VARS+=    cdda
+.if !empty(PKG_OPTIONS:Mcdda)
+MESON_ARGS+=    -Dcdda=true
+GUDEV_REQUIRED= yes
+.  include "../../misc/libcdio-paranoia/buildlink3.mk"
+PLIST.cdda=     yes
+.else
+MESON_ARGS+=    -Dcdda=false
+.endif
+
+###
+### dns-sd://{DOMAIN}
+###   DNS-SD shares on the local network.
+###
+PLIST_VARS+=   dnssd
+.if !empty(PKG_OPTIONS:Mdnssd)
+MESON_ARGS+=   -Ddnssd=true
+PLIST.dnssd=   yes
+.  include "../../net/avahi/buildlink3.mk"
 .else
-CONFIGURE_ARGS+=       --disable-samba
+MESON_ARGS+=   -Ddnssd=false
 .endif
 
+###
+### FUSE support.
+###
+### NOTE: gvfsd-fuse is known not to work on NetBSD
+### This is because NetBSD refuse(3) doesn't support non-root mounting but
+### gvfsd(1) relies on this specific functionality. gvfsd(1) launches
+### gvfsd-fuse(1) as a regular user, and it exits with an error. We should
+### really implement fusermount(1) as a part of refuse(3).
+###
+PLIST_VARS+=   fuse
 .if !empty(PKG_OPTIONS:Mfuse)
-BUILDLINK_API_DEPENDS.fuse+=   fuse>=2.8
+USE_FUSE3=     yes
 .include "../../mk/fuse.buildlink3.mk"
-CONFIGURE_ARGS+=       --enable-fuse
-PLIST.fuse=            yes
+MESON_ARGS+=   -Dfuse=true
+PLIST.fuse=             yes
+.else
+MESON_ARGS+=   -Dfuse=false
+.endif
+
+###
+### GCR certificate support.
+###
+.if !empty(PKG_OPTIONS:Mgcr)
+MESON_ARGS+=    -Dgcr=true
+.  include "../../security/gcr4/buildlink3.mk"
+.else
+MESON_ARGS+=    -Dgcr=false
+.endif
+
+###
+### google-drive://{USER}@{HOST}
+###   Access Google Drive.
+###
+PLIST_VARS+=   gdata
+.if !empty(PKG_OPTIONS:Mlibgdata)
+GOA_REQUIRED=  yes
+MESON_ARGS+=   -Dgoogle=true
+PLIST.gdata=   yes
+.  include "../../net/libgdata/buildlink3.mk"
+.else
+MESON_ARGS+=   -Dgoogle=false
+.endif
+
+###
+### GOA (Gnome Online Accounts).
+### Required for Google Drive support.
+###
+.if !empty(PKG_OPTIONS:Mgoa) || ${GOA_REQUIRED:tl} == "yes"
+MESON_ARGS+=    -Dgoa=true
+.  include "../../net/gnome-online-accounts/buildlink3.mk"
+.else
+MESON_ARGS+=    -Dgoa=false
+.endif
+
+###
+### gphoto2://{ID_SERIAL}, gphoto2://[usb:bus,dev]
+###   Access digital cameras.
+###
+PLIST_VARS+=    gphoto
+.if !empty(PKG_OPTIONS:Mgphoto)
+MESON_ARGS+=    -Dgphoto2=true
+GUDEV_REQUIRED= yes
+PLIST.gphoto=  yes
+.  include "../../devel/libgphoto2/buildlink3.mk"
+.else
+MESON_ARGS+=    -Dgphoto2=false
+.endif
+
+###
+### mtp://{ID_SERIAL}, mtp://[usb:bus,dev]
+###   Access digital audio/media players.
+###
+PLIST_VARS+=    mtp
+.if !empty(PKG_OPTIONS:Mlibmtp)
+GUDEV_REQUIRED=        yes
+MESON_ARGS+=   -Dmtp=true
+.  include "../../devel/libmtp/buildlink3.mk"
+PLIST.mtp=     yes
+.else
+MESON_ARGS+=    -Dmtp=false
+.endif
+
+###
+### smb://[user@]host[:port][/share]
+###   SMB/CIFS protocol support.
+###
+PLIST_VARS+=   smb
+.if !empty(PKG_OPTIONS:Msamba)
+MESON_ARGS+=   -Dsmb=true
+PLIST.smb=     yes
+.  include "../../net/samba4/buildlink3.mk"
+.else
+MESON_ARGS+=   -Dsmb=false
+.endif
+
+###
+### GNOME Keyring support.
+###
+.if !empty(PKG_OPTIONS:Msecret)
+MESON_ARGS+=   -Dkeyring=true
+.  include "../../security/libsecret/buildlink3.mk"
+.else
+MESON_ARGS+=   -Dkeyring=false
+.endif
+
+###
+### GUdev device support.
+###
+.if !empty(PKG_OPTIONS:Mudev) || ${GUDEV_REQUIRED:tl} == "yes"
+MESON_ARGS+=    -Dgudev=true
+.  include "../../devel/libgudev/buildlink3.mk"
 .else
-CONFIGURE_ARGS+=       --disable-fuse
+MESON_ARGS+=    -Dgudev=false
 .endif

Added files:

Index: pkgsrc/sysutils/gvfs/hacks.mk
diff -u /dev/null pkgsrc/sysutils/gvfs/hacks.mk:1.1
--- /dev/null   Sun May 10 17:38:15 2026
+++ pkgsrc/sysutils/gvfs/hacks.mk       Sun May 10 17:38:14 2026
@@ -0,0 +1,24 @@
+# $NetBSD: hacks.mk,v 1.1 2026/05/10 17:38:14 vins Exp $
+
+.if !defined(GVFS_HACKS_MK)
+GVFS_HACKS_MK= defined
+
+### [Sat Nov 15 02:58:22 JST 2025 : pho]
+### gvfs' meson.build files uses install_rpath to embed rpath to
+### ${PREFIX}/lib/gvfs. Unpatched Meson handles this just fine but
+### alas... our Meson has a patch to kill the rpath fixup
+### (patches/patch-mesonbuild_scripts_depfixer.py) and it renders
+### install_rpath non-functioning. We can't simply get away with deleting
+### the patch, because depfixer.py cannot inject a DT_RPATH that is longer
+### than existing ones. (Have they considered using patchelf instead of
+### hand-rolling their own ELF patcher?) To overcome the limitation they
+### introduced on their own, Meson allocates a dummy rpath with the same
+### length of install_rpath with every character replaced with 'X', like
+### "-Wl,-rpath,XXXXXXXXXX", which doesn't begin with a '/' so our
+### cwrappers remove it! Meson and our cwrappers fight against each other
+### in a very indirect way, and the only way around is to do this silly
+### hack:
+PKG_HACKS+=    rpath-fixup
+LDFLAGS+=      ${COMPILER_RPATH_FLAG}${PREFIX}/lib/gvfs
+
+.endif # GVFS_HACKS_MK

Index: pkgsrc/sysutils/gvfs/patches/patch-client_gdaemonvfs.c
diff -u /dev/null pkgsrc/sysutils/gvfs/patches/patch-client_gdaemonvfs.c:1.1
--- /dev/null   Sun May 10 17:38:15 2026
+++ pkgsrc/sysutils/gvfs/patches/patch-client_gdaemonvfs.c      Sun May 10 17:38:14 2026
@@ -0,0 +1,16 @@
+$NetBSD: patch-client_gdaemonvfs.c,v 1.1 2026/05/10 17:38:14 vins Exp $
+
+Don't crash when creating volume monitors if the VFS was never
+initialized.
+
+--- client/gdaemonvfs.c.orig   2026-03-13 10:15:46.000000000 +0000
++++ client/gdaemonvfs.c
+@@ -1436,7 +1436,7 @@ g_daemon_vfs_deserialize_icon (GVfs     
+ GDBusConnection *
+ _g_daemon_vfs_get_async_bus (void)
+ {
+-  return the_vfs->async_bus;
++  return the_vfs ? the_vfs->async_bus : NULL;
+ }
+ 
+ static gboolean
Index: pkgsrc/sysutils/gvfs/patches/patch-daemon_ParseFTPList.c
diff -u /dev/null pkgsrc/sysutils/gvfs/patches/patch-daemon_ParseFTPList.c:1.1
--- /dev/null   Sun May 10 17:38:15 2026
+++ pkgsrc/sysutils/gvfs/patches/patch-daemon_ParseFTPList.c    Sun May 10 17:38:14 2026
@@ -0,0 +1,448 @@
+$NetBSD: patch-daemon_ParseFTPList.c,v 1.1 2026/05/10 17:38:14 vins Exp $
+
+Fix misuse of ctype(3) functions.
+
+--- daemon/ParseFTPList.c.orig 2025-11-14 15:53:26.627351338 +0000
++++ daemon/ParseFTPList.c
+@@ -127,9 +127,9 @@ int ParseFTPList(const char *line, struc
+             result->fe_type = 'f'; /* its a file */
+           else if (*p == 'm')
+           {
+-            if (isdigit(line[pos]))
++            if (isdigit((unsigned char)line[pos]))
+             {
+-              while (pos < linelen && isdigit(line[pos]))
++              while (pos < linelen && isdigit((unsigned char)line[pos]))
+                 pos++;
+               if (pos < linelen && line[pos] == ',')
+               {
+@@ -143,9 +143,9 @@ int ParseFTPList(const char *line, struc
+           }
+           else if (*p == 's')
+           {
+-            if (isdigit(line[pos]))
++            if (isdigit((unsigned char)line[pos]))
+             {
+-              while (pos < linelen && isdigit(line[pos]))
++              while (pos < linelen && isdigit((unsigned char)line[pos]))
+                 pos++;
+               if (pos < linelen && line[pos] == ',' &&
+                  ((&line[pos]) - (p+1)) < (int) (sizeof(result->fe_size)-1) )
+@@ -155,7 +155,7 @@ int ParseFTPList(const char *line, struc
+               }
+             }
+           }
+-          else if (isalpha(*p)) /* 'i'/'up' or unknown "fact" (property) */
++          else if (isalpha((unsigned char)*p)) /* 'i'/'up' or unknown "fact" (property) */
+           {
+             while (pos < linelen && *++p != ',')
+               pos++;
+@@ -233,9 +233,9 @@ int ParseFTPList(const char *line, struc
+                 break;
+             }
+             else if (p[pos] != '.' && p[pos] != '~' && 
+-                     !isdigit(p[pos]) && !isalpha(p[pos]))
++                     !isdigit((unsigned char)p[pos]) && !isalpha((unsigned char)p[pos]))
+               break;
+-            else if (isalpha(p[pos]) && p[pos] != toupper(p[pos]))
++            else if (isalpha((unsigned char)p[pos]) && p[pos] != toupper((unsigned char)p[pos]))
+               break;
+           }
+           if (pos > 0)
+@@ -251,9 +251,9 @@ int ParseFTPList(const char *line, struc
+           {
+             pos--;
+             if (p[pos] != '$' && p[pos] != '_' && p[pos] != '-' &&
+-                p[pos] != '~' && !isdigit(p[pos]) && !isalpha(p[pos]))
++                p[pos] != '~' && !isdigit((unsigned char)p[pos]) && !isalpha((unsigned char)p[pos]))
+               break;
+-            else if (isalpha(p[pos]) && p[pos] != toupper(p[pos]))
++            else if (isalpha((unsigned char)p[pos]) && p[pos] != toupper((unsigned char)p[pos]))
+               break;
+           }
+           if (pos == 0)
+@@ -289,9 +289,9 @@ int ParseFTPList(const char *line, struc
+          ((toklen[3]==10 || toklen[3]==11 ) &&
+                         (tokens[3][toklen[3]-3]) == '.' )
+         ) &&  /* time in [H]H:MM[:SS[.CC]] format */
+-                                    isdigit(*tokens[1]) && /* size */
+-                                    isdigit(*tokens[2]) && /* date */
+-                                    isdigit(*tokens[3])    /* time */
++                                    isdigit((unsigned char)*tokens[1]) && /* size */
++                                    isdigit((unsigned char)*tokens[2]) && /* date */
++                                    isdigit((unsigned char)*tokens[3])    /* time */
+                 )
+         {
+           lstyle = 'V';
+@@ -328,7 +328,7 @@ int ParseFTPList(const char *line, struc
+             while (lstyle && pos < toklen[0] && *p != ']')
+             {
+               if (*p != '$' && *p != '.' && *p != '_' && *p != '-' &&
+-                  *p != '~' && !isdigit(*p) && !isalpha(*p))              
++                  *p != '~' && !isdigit((unsigned char)*p) && !isalpha((unsigned char)*p))              
+                 lstyle = 0;
+               pos++;
+               p++;
+@@ -348,9 +348,9 @@ int ParseFTPList(const char *line, struc
+           while (lstyle && pos < toklen[0] && *p != ';')
+           {
+             if (*p != '$' && *p != '.' && *p != '_' && *p != '-' &&
+-                *p != '~' && !isdigit(*p) && !isalpha(*p))
++                *p != '~' && !isdigit((unsigned char)*p) && !isalpha((unsigned char)*p))
+               lstyle = 0;
+-            else if (isalpha(*p) && *p != toupper(*p))
++            else if (isalpha((unsigned char)*p) && *p != toupper((unsigned char)*p))
+               lstyle = 0;
+             p++;
+             pos++;
+@@ -361,7 +361,7 @@ int ParseFTPList(const char *line, struc
+               lstyle = 0;
+             for (pos++;lstyle && pos < toklen[0];pos++)
+             {
+-              if (!isdigit(tokens[0][pos]))
++              if (!isdigit((unsigned char)tokens[0][pos]))
+                 lstyle = 0;
+             }
+           }
+@@ -384,11 +384,11 @@ int ParseFTPList(const char *line, struc
+             state->carry_buf_len = pos;
+             return '?'; /* tell caller to treat as junk */
+           }
+-          else if (isdigit(*tokens[1])) /* not no-privs message */
++          else if (isdigit((unsigned char)*tokens[1])) /* not no-privs message */
+           {
+             for (pos = 0; lstyle && pos < (toklen[1]); pos++)
+             {
+-              if (!isdigit((tokens[1][pos])) && (tokens[1][pos]) != '/')
++              if (!isdigit((unsigned char)(tokens[1][pos])) && (tokens[1][pos]) != '/')
+                 lstyle = 0;
+             }
+             if (lstyle && numtoks > 4) /* Multinet or UCX but not CMU */
+@@ -409,7 +409,7 @@ int ParseFTPList(const char *line, struc
+         state->parsed_one = 1;
+         state->lstyle = lstyle;
+ 
+-        if (isdigit(*tokens[1]))  /* not permission denied etc */
++        if (isdigit((unsigned char)*tokens[1]))  /* not permission denied etc */
+         {
+           /* strip leading directory name */
+           if (*tokens[0] == '[') /* CMU server */
+@@ -503,8 +503,8 @@ int ParseFTPList(const char *line, struc
+           if (*p == '-')
+             p++;
+           tbuf[0] = p[0];
+-          tbuf[1] = tolower(p[1]);
+-          tbuf[2] = tolower(p[2]);
++          tbuf[1] = tolower((unsigned char)p[1]);
++          tbuf[2] = tolower((unsigned char)p[2]);
+           month_num = 0;
+           for (pos = 0; pos < (12*3); pos+=3)
+           {
+@@ -587,9 +587,9 @@ int ParseFTPList(const char *line, struc
+                 if ( (*tokens[pos+1] == '-' &&
+                       *tokens[pos+2] == '-' &&
+                       *tokens[pos+3] == '-')  ||
+-                      (isdigit(*tokens[pos+1]) &&
+-                       isdigit(*tokens[pos+2]) &&
+-                       isdigit(*tokens[pos+3])) )
++                      (isdigit((unsigned char)*tokens[pos+1]) &&
++                       isdigit((unsigned char)*tokens[pos+2]) &&
++                       isdigit((unsigned char)*tokens[pos+3])) )
+                 {
+                   lstyle = 'C';
+                   tokmarker = pos;
+@@ -605,7 +605,7 @@ int ParseFTPList(const char *line, struc
+       {
+         for (pos = 0, p = tokens[0]; lstyle && pos < toklen[0]; pos++, p++)
+         {  
+-          if (isalpha(*p) && toupper(*p) != *p)
++          if (isalpha((unsigned char)*p) && toupper((unsigned char)*p) != *p)
+             lstyle = 0;
+         } 
+         for (pos = tokmarker+1; pos <= tokmarker+3; pos++)
+@@ -614,7 +614,7 @@ int ParseFTPList(const char *line, struc
+           {
+             for (p = tokens[pos]; lstyle && p<(tokens[pos]+toklen[pos]); p++)
+             {
+-              if (!isdigit(*p))
++              if (!isdigit((unsigned char)*p))
+                 lstyle = 0;
+             }
+           }
+@@ -635,7 +635,7 @@ int ParseFTPList(const char *line, struc
+             else if (pos != 2 && pos != 5)
+               lstyle = 0;
+           }
+-          else if (*p != '-' && !isdigit(*p))
++          else if (*p != '-' && !isdigit((unsigned char)*p))
+             lstyle = 0;
+           else if (*p == '-' && pos != 4 && pos != 7)
+             lstyle = 0;
+@@ -643,7 +643,7 @@ int ParseFTPList(const char *line, struc
+         for (pos = 0, p = tokens[tokmarker+5]; 
+              lstyle && pos < toklen[tokmarker+5]; pos++, p++)
+         {
+-          if (*p != ':' && !isdigit(*p))
++          if (*p != ':' && !isdigit((unsigned char)*p))
+             lstyle = 0;
+           else if (*p == ':' && pos != (toklen[tokmarker+5]-3)
+                              && pos != (toklen[tokmarker+5]-6))
+@@ -730,16 +730,16 @@ int ParseFTPList(const char *line, struc
+        * "07-14-00  01:38PM              2250540 Valentineoffprank-HiRes.jpg"
+       */
+       if ((numtoks >= 4) && (toklen[0] == 8 || toklen[0] == 10) && toklen[1] == 7 && 
+-          (*tokens[2] == '<' || isdigit(*tokens[2])) )
++          (*tokens[2] == '<' || isdigit((unsigned char)*tokens[2])) )
+       {
+         p = tokens[0];
+-        if ( isdigit(p[0]) && isdigit(p[1]) && p[2]=='-' && 
+-             isdigit(p[3]) && isdigit(p[4]) && p[5]=='-' &&
+-             isdigit(p[6]) && isdigit(p[7]) )
++        if ( isdigit((unsigned char)p[0]) && isdigit((unsigned char)p[1]) && p[2]=='-' && 
++             isdigit((unsigned char)p[3]) && isdigit((unsigned char)p[4]) && p[5]=='-' &&
++             isdigit((unsigned char)p[6]) && isdigit((unsigned char)p[7]) )
+         {
+           p = tokens[1];
+-          if ( isdigit(p[0]) && isdigit(p[1]) && p[2]==':' && 
+-               isdigit(p[3]) && isdigit(p[4]) && 
++          if ( isdigit((unsigned char)p[0]) && isdigit((unsigned char)p[1]) && p[2]==':' && 
++               isdigit((unsigned char)p[3]) && isdigit((unsigned char)p[4]) && 
+                (p[5]=='A' || p[5]=='P') && p[6]=='M')
+           {
+             lstyle = 'W';
+@@ -751,7 +751,7 @@ int ParseFTPList(const char *line, struc
+               {
+                 for (pos = 1; (lstyle && pos < toklen[2]); pos++)
+                 {
+-                  if (!isdigit(*++p))
++                  if (!isdigit((unsigned char)*++p))
+                     lstyle = 0;
+                 }
+               }
+@@ -882,16 +882,16 @@ int ParseFTPList(const char *line, struc
+       */
+       p = &(line[toklen[0]]);
+       /* \s(\d\d-\d\d-\d\d)\s+(\d\d:\d\d)\s */
+-      if (numtoks >= 4 && toklen[0] <= 18 && isdigit(*tokens[0]) &&
++      if (numtoks >= 4 && toklen[0] <= 18 && isdigit((unsigned char)*tokens[0]) &&
+          (linelen - toklen[0]) >= (53-18)                        &&
+          p[18-18] == ' ' && p[34-18] == ' '                      &&
+          p[37-18] == '-' && p[40-18] == '-' && p[43-18] == ' '   &&
+          p[45-18] == ' ' && p[48-18] == ':' && p[51-18] == ' '   &&
+-         isdigit(p[35-18]) && isdigit(p[36-18])                  &&
+-         isdigit(p[38-18]) && isdigit(p[39-18])                  &&
+-         isdigit(p[41-18]) && isdigit(p[42-18])                  &&
+-         isdigit(p[46-18]) && isdigit(p[47-18])                  &&
+-         isdigit(p[49-18]) && isdigit(p[50-18])
++         isdigit((unsigned char)p[35-18]) && isdigit((unsigned char)p[36-18])                  &&
++         isdigit((unsigned char)p[38-18]) && isdigit((unsigned char)p[39-18])                  &&
++         isdigit((unsigned char)p[41-18]) && isdigit((unsigned char)p[42-18])                  &&
++         isdigit((unsigned char)p[46-18]) && isdigit((unsigned char)p[47-18])                  &&
++         isdigit((unsigned char)p[49-18]) && isdigit((unsigned char)p[50-18])
+       )
+       {
+         lstyle = 'O'; /* OS/2 */
+@@ -899,7 +899,7 @@ int ParseFTPList(const char *line, struc
+         {            
+           for (pos = 1; lstyle && pos < toklen[0]; pos++)
+           {
+-            if (!isdigit(tokens[0][pos]))
++            if (!isdigit((unsigned char)tokens[0][pos]))
+               lstyle = 0;
+           }
+         }
+@@ -1046,34 +1046,34 @@ int ParseFTPList(const char *line, struc
+            *  (\d\d\d\d|\d\:\d\d|\d\d\:\d\d|\d\:\d\d\:\d\d|\d\d\:\d\d\:\d\d)
+            *  \s+(.+)$
+           */
+-          if (isdigit(*tokens[pos]) /* size */
++          if (isdigit((unsigned char)*tokens[pos]) /* size */
+               /* (\w\w\w) */
+-           && toklen[pos+1] == 3 && isalpha(*tokens[pos+1]) &&
+-              isalpha(tokens[pos+1][1]) && isalpha(tokens[pos+1][2])
++           && toklen[pos+1] == 3 && isalpha((unsigned char)*tokens[pos+1]) &&
++              isalpha((unsigned char)tokens[pos+1][1]) && isalpha((unsigned char)tokens[pos+1][2])
+               /* (\d|\d\d) */
+-           && isdigit(*tokens[pos+2]) &&
++           && isdigit((unsigned char)*tokens[pos+2]) &&
+                 (toklen[pos+2] == 1 || 
+-                  (toklen[pos+2] == 2 && isdigit(tokens[pos+2][1])))
+-           && toklen[pos+3] >= 4 && isdigit(*tokens[pos+3]) 
++                  (toklen[pos+2] == 2 && isdigit((unsigned char)tokens[pos+2][1])))
++           && toklen[pos+3] >= 4 && isdigit((unsigned char)*tokens[pos+3]) 
+               /* (\d\:\d\d\:\d\d|\d\d\:\d\d\:\d\d) */
+            && (toklen[pos+3] <= 5 || (
+                (toklen[pos+3] == 7 || toklen[pos+3] == 8) &&
+                (tokens[pos+3][toklen[pos+3]-3]) == ':'))
+-           && isdigit(tokens[pos+3][toklen[pos+3]-2])
+-           && isdigit(tokens[pos+3][toklen[pos+3]-1])
++           && isdigit((unsigned char)tokens[pos+3][toklen[pos+3]-2])
++           && isdigit((unsigned char)tokens[pos+3][toklen[pos+3]-1])
+            && (
+               /* (\d\d\d\d) */
+                  ((toklen[pos+3] == 4 || toklen[pos+3] == 5) &&
+-                  isdigit(tokens[pos+3][1]) &&
+-                  isdigit(tokens[pos+3][2])  )
++                  isdigit((unsigned char)tokens[pos+3][1]) &&
++                  isdigit((unsigned char)tokens[pos+3][2])  )
+               /* (\d\:\d\d|\d\:\d\d\:\d\d) */
+               || ((toklen[pos+3] == 4 || toklen[pos+3] == 7) && 
+                   (tokens[pos+3][1]) == ':' &&
+-                  isdigit(tokens[pos+3][2]) && isdigit(tokens[pos+3][3]))
++                  isdigit((unsigned char)tokens[pos+3][2]) && isdigit((unsigned char)tokens[pos+3][3]))
+               /* (\d\d\:\d\d|\d\d\:\d\d\:\d\d) */
+               || ((toklen[pos+3] == 5 || toklen[pos+3] == 8) && 
+-                  isdigit(tokens[pos+3][1]) && (tokens[pos+3][2]) == ':' &&
+-                  isdigit(tokens[pos+3][3]) && isdigit(tokens[pos+3][4])) 
++                  isdigit((unsigned char)tokens[pos+3][1]) && ((unsigned char)tokens[pos+3][2]) == ':' &&
++                  isdigit((unsigned char)tokens[pos+3][3]) && isdigit((unsigned char)tokens[pos+3][4])) 
+               )
+            )
+           {
+@@ -1085,7 +1085,7 @@ int ParseFTPList(const char *line, struc
+             p = tokens[tokmarker];
+             for (i = 0; i < toklen[tokmarker]; i++)
+             {
+-              if (!isdigit(*p++))
++              if (!isdigit((unsigned char)*p++))
+               {
+                 lstyle = 0;
+                 break;
+@@ -1281,7 +1281,7 @@ int ParseFTPList(const char *line, struc
+       * CMT.CSV             0      Jul 06 1995 14:56   RHA
+       */
+       if (numtoks >= 4 && toklen[0] < 13 && 
+-          ((toklen[1] == 5 && *tokens[1] == '<') || isdigit(*tokens[1])) )
++          ((toklen[1] == 5 && *tokens[1] == '<') || isdigit((unsigned char)*tokens[1])) )
+       {
+         if (numtoks == 4
+          && (toklen[2] == 8 || toklen[2] == 9)
+@@ -1289,12 +1289,12 @@ int ParseFTPList(const char *line, struc
+              ((tokens[2][2]) == '-' && (tokens[2][5]) == '-'))
+          && (toklen[3] == 4 || toklen[3] == 5)
+          && (tokens[3][toklen[3]-3]) == ':'
+-         && isdigit(tokens[2][0]) && isdigit(tokens[2][1])
+-         && isdigit(tokens[2][3]) && isdigit(tokens[2][4])
+-         && isdigit(tokens[2][6]) && isdigit(tokens[2][7])
+-         && (toklen[2] < 9 || isdigit(tokens[2][8]))
+-         && isdigit(tokens[3][toklen[3]-1]) && isdigit(tokens[3][toklen[3]-2])
+-         && isdigit(tokens[3][toklen[3]-4]) && isdigit(*tokens[3]) 
++         && isdigit((unsigned char)tokens[2][0]) && isdigit((unsigned char)tokens[2][1])
++         && isdigit((unsigned char)tokens[2][3]) && isdigit((unsigned char)tokens[2][4])
++         && isdigit((unsigned char)tokens[2][6]) && isdigit((unsigned char)tokens[2][7])
++         && (toklen[2] < 9 || isdigit((unsigned char)tokens[2][8]))
++         && isdigit((unsigned char)tokens[3][toklen[3]-1]) && isdigit((unsigned char)tokens[3][toklen[3]-2])
++         && isdigit((unsigned char)tokens[3][toklen[3]-4]) && isdigit((unsigned char)*tokens[3]) 
+          )
+         {
+           lstyle = 'w';
+@@ -1303,13 +1303,13 @@ int ParseFTPList(const char *line, struc
+          && toklen[2] == 3 && toklen[3] == 2
+          && toklen[4] == 4 && toklen[5] == 5
+          && (tokens[5][2]) == ':'
+-         && isalpha(tokens[2][0]) && isalpha(tokens[2][1])
+-         &&                          isalpha(tokens[2][2])
+-         && isdigit(tokens[3][0]) && isdigit(tokens[3][1])
+-         && isdigit(tokens[4][0]) && isdigit(tokens[4][1])
+-         && isdigit(tokens[4][2]) && isdigit(tokens[4][3])
+-         && isdigit(tokens[5][0]) && isdigit(tokens[5][1])
+-         && isdigit(tokens[5][3]) && isdigit(tokens[5][4])
++         && isalpha((unsigned char)tokens[2][0]) && isalpha((unsigned char)tokens[2][1])
++         &&                          isalpha((unsigned char)tokens[2][2])
++         && isdigit((unsigned char)tokens[3][0]) && isdigit((unsigned char)tokens[3][1])
++         && isdigit((unsigned char)tokens[4][0]) && isdigit((unsigned char)tokens[4][1])
++         && isdigit((unsigned char)tokens[4][2]) && isdigit((unsigned char)tokens[4][3])
++         && isdigit((unsigned char)tokens[5][0]) && isdigit((unsigned char)tokens[5][1])
++         && isdigit((unsigned char)tokens[5][3]) && isdigit((unsigned char)tokens[5][4])
+          /* could also check that (&(tokens[5][5]) - tokens[2]) == 17 */
+         )
+         {
+@@ -1323,7 +1323,7 @@ int ParseFTPList(const char *line, struc
+           {
+             for (pos = 0; lstyle && pos < toklen[1]; pos++)
+             {
+-              if (!isdigit(*p++))
++              if (!isdigit((unsigned char)*p++))
+                 lstyle = 0;
+             }
+           } /* not <DIR> */
+@@ -1341,7 +1341,7 @@ int ParseFTPList(const char *line, struc
+         result->fe_type = 'd';
+ 
+         p = tokens[1];
+-        if (isdigit(*p))
++        if (isdigit((unsigned char)*p))
+         {
+           result->fe_type = 'f';
+           pos = toklen[1];
+@@ -1354,9 +1354,9 @@ int ParseFTPList(const char *line, struc
+         p = tokens[2];
+         if (toklen[2] == 3) /* Chameleon */
+         {
+-          tbuf[0] = toupper(p[0]);
+-          tbuf[1] = tolower(p[1]);
+-          tbuf[2] = tolower(p[2]);
++          tbuf[0] = toupper((unsigned char)p[0]);
++          tbuf[1] = tolower((unsigned char)p[1]);
++          tbuf[2] = tolower((unsigned char)p[2]);
+           for (pos = 0; pos < (12*3); pos+=3)
+           {
+             if (tbuf[0] == month_names[pos+0] &&
+@@ -1475,7 +1475,7 @@ int ParseFTPList(const char *line, struc
+         if (linelen > pos)
+         {
+           p = &line[pos];
+-          if ((*p == '-' || *p == '=' || isdigit(*p)) &&
++          if ((*p == '-' || *p == '=' || isdigit((unsigned char)*p)) &&
+               ((linelen == (pos+1)) || 
+                (linelen >= (pos+3) && p[1] == ' ' && p[2] == ' ')) )
+           {
+@@ -1502,7 +1502,7 @@ int ParseFTPList(const char *line, struc
+               {
+                 for (pos = 0; lstyle && pos < toklen[tokmarker]; pos++) 
+                 {
+-                  if (!isdigit(tokens[tokmarker][pos]))
++                  if (!isdigit((unsigned char)tokens[tokmarker][pos]))
+                     lstyle = 0; 
+                 }
+               }
+@@ -1559,7 +1559,7 @@ int ParseFTPList(const char *line, struc
+             result->fe_type  = 'd';
+           }
+         }
+-        else if (isdigit(*tokens[tokmarker]))
++        else if (isdigit((unsigned char)*tokens[tokmarker]))
+         {
+           pos = toklen[tokmarker];
+           if (pos > (sizeof(result->fe_size)-1))
+@@ -1577,24 +1577,24 @@ int ParseFTPList(const char *line, struc
+           pos = toklen[pos];
+ 
+           if ((pos == 4 || pos == 5)
+-          &&  isdigit(*p) && isdigit(p[pos-1]) && isdigit(p[pos-2])
++          &&  isdigit((unsigned char)*p) && isdigit((unsigned char)p[pos-1]) && isdigit((unsigned char)p[pos-2])
+           &&  ((pos == 5 && p[2] == ':') ||  
+-               (pos == 4 && (isdigit(p[1]) || p[1] == ':')))
++               (pos == 4 && (isdigit((unsigned char)p[1]) || p[1] == ':')))
+              )
+           {
+             month_num = tokmarker+1; /* assumed position of month field */
+             pos = tokmarker+2;       /* assumed position of mday field */
+-            if (isdigit(*tokens[month_num])) /* positions are reversed */
++            if (isdigit((unsigned char)*tokens[month_num])) /* positions are reversed */
+             {
+               month_num++;
+               pos--;
+             }
+             p = tokens[month_num];
+-            if (isdigit(*tokens[pos]) 
++            if (isdigit((unsigned char)*tokens[pos]) 
+             && (toklen[pos] == 1 || 
+-                  (toklen[pos] == 2 && isdigit(tokens[pos][1])))
++                  (toklen[pos] == 2 && isdigit((unsigned char)tokens[pos][1])))
+             && toklen[month_num] == 3
+-            && isalpha(*p) && isalpha(p[1]) && isalpha(p[2])  )
++            && isalpha((unsigned char)*p) && isalpha((unsigned char)p[1]) && isalpha((unsigned char)p[2])  )
+             {
+               pos = atoi(tokens[pos]);
+               if (pos > 0 && pos <= 31)
Index: pkgsrc/sysutils/gvfs/patches/patch-man_meson.build
diff -u /dev/null pkgsrc/sysutils/gvfs/patches/patch-man_meson.build:1.1
--- /dev/null   Sun May 10 17:38:15 2026
+++ pkgsrc/sysutils/gvfs/patches/patch-man_meson.build  Sun May 10 17:38:14 2026
@@ -0,0 +1,15 @@
+$NetBSD: patch-man_meson.build,v 1.1 2026/05/10 17:38:14 vins Exp $
+
+Fix detection of docbook.
+
+--- man/meson.build.orig       2026-05-03 13:29:08.697502288 +0000
++++ man/meson.build
+@@ -10,7 +10,7 @@ xsltproc_cmd = [
+   '--stringparam', 'man.th.extra1.suppress', '1',
+   '--stringparam', 'man.authors.section.enabled', '0',
+   '--stringparam', 'man.copyright.section.enabled', '0',
+-  'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl',
++  '@DOCBOOK_MANPAGE_XSL@',
+   '@INPUT@',
+ ]
+ 
Index: pkgsrc/sysutils/gvfs/patches/patch-meson.build
diff -u /dev/null pkgsrc/sysutils/gvfs/patches/patch-meson.build:1.1
--- /dev/null   Sun May 10 17:38:15 2026
+++ pkgsrc/sysutils/gvfs/patches/patch-meson.build      Sun May 10 17:38:14 2026
@@ -0,0 +1,18 @@
+$NetBSD: patch-meson.build,v 1.1 2026/05/10 17:38:14 vins Exp $
+
+Work around a build failure on NetBSD. Not sure if this is the right thing
+though. No software should use statfs(2) in the first place.
+
+--- meson.build.orig   2025-11-14 15:34:15.578508432 +0000
++++ meson.build
+@@ -122,6 +122,10 @@ if cc.compiles(statfs_code.format('statf
+   config_h.set('STATFS_ARGS', 2)
+ elif cc.compiles(statfs_code.format('statfs("/", &st, sizeof (st), 0)'))
+   config_h.set('STATFS_ARGS', 4)
++elif host_machine.system().contains('netbsd')
++  # NetBSD has statfs(2) as a compatibility symbol without a function
++  # declaration, which makes it impossible to determine its type.
++  config_h.set('STATFS_ARGS', 2)
+ else
+   error('unable to determine number of arguments to statfs()')
+ endif



Home | Main Index | Thread Index | Old Index