Index | Thread | Search

From:
yaydn@protonmail.com
Subject:
Re: UPDATE: libnfs 7.0.0
To:
Brad Smith <brad@comstyle.com>, "ports@openbsd.org" <ports@openbsd.org>
Date:
Sun, 09 Aug 2026 18:26:39 +0000

Download raw body.

Thread
  • Brad Smith:

    UPDATE: libnfs 7.0.0

    • yaydn@protonmail.com:

      UPDATE: libnfs 7.0.0

På søndag 9. august 2026 kl. 03:48, skrev Brad Smith
<brad@comstyle.com>:

> Here is an update to libnfs 7.0.0.
>
> All depends build Ok.


$ cd /usr/ports/devel/libnfs/ && patch -l -p0 -E -C < /tmp/libnfs-7.0.0.diff | grep fail
$ cd /usr/ports/devel/libnfs/ && patch -l -p0 -E < /tmp/libnfs-7.0.0.diff

$ cd /usr/ports/devel/libnfs/ && make build package test ; make port-lib-depends-check check-shlib-syms clean

No regression tests for libnfs-7.0.0pl20260708
/usr/local/lib/libnfs.so.2.2 --> /usr/ports/pobj/libnfs-7.0.0pl20260708/fake-amd64/usr/local/lib/libnfs.so.3.0
Dynamic export changes:
added:
	_nfs_mount_async
	libnfs_zdr_getptr
	libnfs_zdr_getsize
	libnfs_zdr_vector
	mount_getexports_mountport
	nfs3_creat_async
	nfs3_preadv_async_internal
	nfs4_creat_async
	nfs4_preadv_async_internal
	nfs_get_evfd
	nfs_get_poll_timeout
	nfs_get_readdir_maxcount
	nfs_get_server_address
	nfs_get_tid
	nfs_preadv
	nfs_preadv_async
	nfs_readv
	nfs_readv_async
	nfs_set_auto_traverse_mounts
	nfs_set_error_locked
	nfs_set_hash_size
	nfs_set_mountport
	nfs_set_nfsport
	nfs_set_poll_timeout
	nfs_set_readdir_max_buffer_size
	nfs_set_readonly
	nfs_set_resolve_on_reconnect
	nfs_set_retrans
	nfs_set_security
	pdu_set_timeout
	rpc_add_iovector
	rpc_add_to_outqueue_head
	rpc_add_to_outqueue_highp
	rpc_add_to_outqueue_lowp
	rpc_advance_cursor
	rpc_cancel_pdu
	rpc_copy_deferred_call
	rpc_current_time_us
	rpc_disable_socket
	rpc_find_pdu
	rpc_free_cursor
	rpc_free_deferred_call
	rpc_free_iovector
	rpc_get_evfd
	rpc_get_mountport
	rpc_get_num_awaiting
	rpc_get_pdu
	rpc_get_pdu_stats
	rpc_get_poll_timeout
	rpc_get_stats
	rpc_get_udp_src_sockaddr
	rpc_memcpy_cursor
	rpc_mount1_dump_task
	rpc_mount1_export_task
	rpc_mount1_mnt_task
	rpc_mount1_null_task
	rpc_mount1_umnt_task
	rpc_mount1_umntall_task
	rpc_mount3_dump_task
	rpc_mount3_export_task
	rpc_mount3_mnt_task
	rpc_mount3_null_task
	rpc_mount3_umnt_task
	rpc_mount3_umntall_task
	rpc_nfs2_create_task
	rpc_nfs2_getattr_task
	rpc_nfs2_link_task
	rpc_nfs2_lookup_task
	rpc_nfs2_mkdir_task
	rpc_nfs2_null_task
	rpc_nfs2_read_task
	rpc_nfs2_readdir_task
	rpc_nfs2_readlink_task
	rpc_nfs2_remove_task
	rpc_nfs2_rename_task
	rpc_nfs2_rmdir_task
	rpc_nfs2_setattr_task
	rpc_nfs2_statfs_task
	rpc_nfs2_symlink_task
	rpc_nfs2_write_task
	rpc_nfs3_access_task
	rpc_nfs3_commit_task
	rpc_nfs3_create_task
	rpc_nfs3_fsinfo_task
	rpc_nfs3_fsstat_task
	rpc_nfs3_getattr_task
	rpc_nfs3_link_task
	rpc_nfs3_lookup_task
	rpc_nfs3_mkdir_task
	rpc_nfs3_mknod_task
	rpc_nfs3_null_task
	rpc_nfs3_pathconf_task
	rpc_nfs3_read_task
	rpc_nfs3_readdir_task
	rpc_nfs3_readdirplus_task
	rpc_nfs3_readlink_task
	rpc_nfs3_readv_task
	rpc_nfs3_remove_task
	rpc_nfs3_rename_task
	rpc_nfs3_rmdir_task
	rpc_nfs3_setattr_task
	rpc_nfs3_symlink_task
	rpc_nfs3_write_task
	rpc_nfs3_writev_task
	rpc_nfs4_compound_task
	rpc_nfs4_compound_task2
	rpc_nfs4_null_task
	rpc_nfs4_read_task
	rpc_nfs4_readv_task
	rpc_nfs4_write_task
	rpc_nfs4_writev_task
	rpc_nfsacl3_getacl_task
	rpc_nfsacl3_null_task
	rpc_nfsacl3_setacl_task
	rpc_nlm4_cancel_task
	rpc_nlm4_lock_task
	rpc_nlm4_null_task
	rpc_nlm4_share_task
	rpc_nlm4_test_task
	rpc_nlm4_unlock_task
	rpc_nlm4_unshare_task
	rpc_nsm1_mon_task
	rpc_nsm1_notify_task
	rpc_nsm1_null_task
	rpc_nsm1_simucrash_task
	rpc_nsm1_stat_task
	rpc_nsm1_unmon_task
	rpc_nsm1_unmonall_task
	rpc_null_task
	rpc_pdu_get_dispatch_usecs
	rpc_pdu_get_req_size
	rpc_pdu_get_resp_size
	rpc_pdu_is_retransmitted
	rpc_pmap2_callit_task
	rpc_pmap2_dump_task
	rpc_pmap2_getport_task
	rpc_pmap2_null_task
	rpc_pmap2_set_task
	rpc_pmap2_unset_task
	rpc_pmap3_callit_task
	rpc_pmap3_dump_task
	rpc_pmap3_getaddr_task
	rpc_pmap3_gettime_task
	rpc_pmap3_null_task
	rpc_pmap3_set_task
	rpc_pmap3_taddr2uaddr_task
	rpc_pmap3_uaddr2taddr_task
	rpc_pmap3_unset_task
	rpc_pmap4_bcast_task
	rpc_pmap4_dump_task
	rpc_pmap4_getaddr_task
	rpc_pmap4_getaddrlist_task
	rpc_pmap4_getstat_task
	rpc_pmap4_gettime_task
	rpc_pmap4_getversaddr_task
	rpc_pmap4_indirect_task
	rpc_pmap4_null_task
	rpc_pmap4_set_task
	rpc_pmap4_taddr2uaddr_task
	rpc_pmap4_uaddr2taddr_task
	rpc_pmap4_unset_task
	rpc_queue_pdu2
	rpc_remove_pdu_from_queue
	rpc_reset_cursor
	rpc_return_to_outqueue
	rpc_rquota1_getactivequota_task
	rpc_rquota1_getquota_task
	rpc_rquota1_null_task
	rpc_rquota2_getactivequota_task
	rpc_rquota2_getquota_task
	rpc_rquota2_null_task
	rpc_set_awaiting_limit
	rpc_set_error_locked
	rpc_set_hash_size
	rpc_set_log_cb
	rpc_set_mountport
	rpc_set_poll_timeout
	rpc_set_resiliency
	rpc_set_resolve_on_reconnect
	rpc_set_stats_cb
	rpc_set_username
	rpc_shrink_cursor
	rpc_wakeup_service_thread
	zdr_BIND_CONN_TO_SESSION4args
	zdr_BIND_CONN_TO_SESSION4res
	zdr_BIND_CONN_TO_SESSION4resok
	zdr_EXCHANGE_ID4args
	zdr_EXCHANGE_ID4res
	zdr_EXCHANGE_ID4resok
	zdr_MOUNT1DUMPres
	zdr_MOUNT1DUMPres_ptr
	zdr_MOUNT1EXPORTres
	zdr_MOUNT1EXPORTres_ptr
	zdr_MOUNT1MNTargs
	zdr_MOUNT1MNTres
	zdr_MOUNT1UMNTargs
	zdr_MOUNT3DUMPres
	zdr_MOUNT3DUMPres_ptr
	zdr_MOUNT3EXPORTres
	zdr_MOUNT3EXPORTres_ptr
	zdr_MOUNT3MNTargs
	zdr_MOUNT3MNTres
	zdr_MOUNT3UMNTargs
	zdr_NLM4_SHAREargs
	zdr_NLM4_SHAREres
	zdr_NLM4_UNSHAREargs
	zdr_NLM4_UNSHAREres
	zdr_PMAP3UADDR2TADDRargs
	zdr_PMAP4BCASTargs
	zdr_PMAP4BCASTres
	zdr_PMAP4DUMPres
	zdr_PMAP4GETADDRLISTargs
	zdr_PMAP4GETADDRLISTres
	zdr_PMAP4GETADDRargs
	zdr_PMAP4GETADDRres
	zdr_PMAP4GETSTATres
	zdr_PMAP4GETVERSADDRargs
	zdr_PMAP4GETVERSADDRres
	zdr_PMAP4INDIRECTargs
	zdr_PMAP4INDIRECTres
	zdr_PMAP4SETargs
	zdr_PMAP4TADDR2UADDRargs
	zdr_PMAP4TADDR2UADDRres
	zdr_PMAP4UADDR2TADDRargs
	zdr_PMAP4UADDR2TADDRres
	zdr_PMAP4UNSETargs
	zdr_READ3res_zero_copy
	zdr_READ3resok_zero_copy
	zdr_WRITE3args_zerocopy
	zdr_channel_dir_from_client4
	zdr_channel_dir_from_server4
	zdr_client_owner4
	zdr_gsshandle4_t
	zdr_nfs_impl_id4
	zdr_pmap4_bcast_args
	zdr_pmap4_dump_result
	zdr_pmap4_entry_list_ptr
	zdr_pmap4_indirect_args
	zdr_pmap4_mapping
	zdr_pmap4_mapping_list
	zdr_pmap4_netbuf
	zdr_pmap4_stat_byvers
	zdr_pmap4_string_result
	zdr_rpc_gss_cred_t
	zdr_rpc_gss_cred_vers_1_t
	zdr_rpc_gss_init_arg
	zdr_rpc_gss_init_res
	zdr_rpc_gss_integ_data
	zdr_rpc_gss_proc_t
	zdr_rpcb_entry
	zdr_rpcb_entry_list
	zdr_rpcb_rmtcallres
	zdr_rpcb_stat
	zdr_rpcbs_addrlist
	zdr_rpcbs_addrlist_ptr
	zdr_rpcbs_proc
	zdr_rpcbs_rmtcalllist
	zdr_rpcbs_rmtcalllist_ptr
	zdr_server_owner4
	zdr_ssv_prot_info4
	zdr_ssv_sp_parms4
	zdr_state_protect4_a
	zdr_state_protect4_r
	zdr_state_protect_how4
	zdr_state_protect_ops4
	zzdr_READ4resok
	zzdr_WRITE4args

removed:
	nfs3_create_async
	nfs4_create_async
	nfs_create
	nfs_create_async
	nfs_pagecache_get
	nfs_pagecache_init
	nfs_pagecache_invalidate
	nfs_pagecache_put
	nfs_set_pagecache
	nfs_set_pagecache_ttl
	nfs_set_readahead
	rpc_get_pdu_size
	rpc_get_recv_sockaddr
	rpc_mount1_dump_async
	rpc_mount1_export_async
	rpc_mount1_mnt_async
	rpc_mount1_null_async
	rpc_mount1_umnt_async
	rpc_mount1_umntall_async
	rpc_mount3_dump_async
	rpc_mount3_export_async
	rpc_mount3_mnt_async
	rpc_mount3_null_async
	rpc_mount3_umnt_async
	rpc_mount3_umntall_async
	rpc_mount_dump_async
	rpc_mount_export_async
	rpc_mount_mnt_async
	rpc_mount_null_async
	rpc_mount_umnt_async
	rpc_mount_umntall_async
	rpc_nfs2_create_async
	rpc_nfs2_getattr_async
	rpc_nfs2_link_async
	rpc_nfs2_lookup_async
	rpc_nfs2_mkdir_async
	rpc_nfs2_null_async
	rpc_nfs2_read_async
	rpc_nfs2_readdir_async
	rpc_nfs2_readlink_async
	rpc_nfs2_remove_async
	rpc_nfs2_rename_async
	rpc_nfs2_rmdir_async
	rpc_nfs2_setattr_async
	rpc_nfs2_statfs_async
	rpc_nfs2_symlink_async
	rpc_nfs2_write_async
	rpc_nfs3_access_async
	rpc_nfs3_commit_async
	rpc_nfs3_create_async
	rpc_nfs3_fsinfo_async
	rpc_nfs3_fsstat_async
	rpc_nfs3_getattr_async
	rpc_nfs3_link_async
	rpc_nfs3_lookup_async
	rpc_nfs3_mkdir_async
	rpc_nfs3_mknod_async
	rpc_nfs3_null_async
	rpc_nfs3_pathconf_async
	rpc_nfs3_read_async
	rpc_nfs3_readdir_async
	rpc_nfs3_readdirplus_async
	rpc_nfs3_readlink_async
	rpc_nfs3_remove_async
	rpc_nfs3_rename_async
	rpc_nfs3_rmdir_async
	rpc_nfs3_setattr_async
	rpc_nfs3_symlink_async
	rpc_nfs3_write_async
	rpc_nfs4_compound_async
	rpc_nfs4_compound_async2
	rpc_nfs4_null_async
	rpc_nfs_access_async
	rpc_nfs_commit_async
	rpc_nfs_create_async
	rpc_nfs_fsinfo_async
	rpc_nfs_fsstat_async
	rpc_nfs_getattr_async
	rpc_nfs_link_async
	rpc_nfs_lookup_async
	rpc_nfs_mkdir_async
	rpc_nfs_mknod_async
	rpc_nfs_null_async
	rpc_nfs_pathconf_async
	rpc_nfs_read_async
	rpc_nfs_readdir_async
	rpc_nfs_readdirplus_async
	rpc_nfs_readlink_async
	rpc_nfs_remove_async
	rpc_nfs_rename_async
	rpc_nfs_rmdir_async
	rpc_nfs_setattr_async
	rpc_nfs_symlink_async
	rpc_nfs_write_async
	rpc_nfsacl_getacl_async
	rpc_nfsacl_null_async
	rpc_nfsacl_setacl_async
	rpc_nlm4_cancel_async
	rpc_nlm4_lock_async
	rpc_nlm4_null_async
	rpc_nlm4_test_async
	rpc_nlm4_unlock_async
	rpc_nsm1_mon_async
	rpc_nsm1_notify_async
	rpc_nsm1_null_async
	rpc_nsm1_simucrash_async
	rpc_nsm1_stat_async
	rpc_nsm1_unmon_async
	rpc_nsm1_unmonall_async
	rpc_null_async
	rpc_pmap2_callit_async
	rpc_pmap2_dump_async
	rpc_pmap2_getport_async
	rpc_pmap2_null_async
	rpc_pmap2_set_async
	rpc_pmap2_unset_async
	rpc_pmap3_callit_async
	rpc_pmap3_dump_async
	rpc_pmap3_getaddr_async
	rpc_pmap3_gettime_async
	rpc_pmap3_null_async
	rpc_pmap3_set_async
	rpc_pmap3_taddr2uaddr_async
	rpc_pmap3_uaddr2taddr_async
	rpc_pmap3_unset_async
	rpc_return_to_queue
	rpc_rquota1_getactivequota_async
	rpc_rquota1_getquota_async
	rpc_rquota1_null_async
	rpc_rquota2_getactivequota_async
	rpc_rquota2_getquota_async
	rpc_rquota2_null_async
	rpc_set_autoreconnect
	rpc_set_pagecache
	rpc_set_pagecache_ttl
	rpc_set_readahead
	zdr_pmap3_call_result

data object sizes changes:
	_null_auth 24 --> 32

===>  Cleaning for libnfs-7.0.0pl20260708
--

# TRUSTED_PKG_PATH=/usr/ports/packages/amd64/all/ pkg_add -Dsnap -u libnfs
libnfs-5.0.2->7.0.0pl20260708: ok
--

Sorry for any noise.

Builds on current/amd64 with privsep.

Hope this helps. May you stay cool and hydrated.
--
yaydn

>
>
> * Sat Aug 08 2026 : Version 7.0.0
> - SONAME bumped to 17. struct rpc_stats grew, so this release is not
>   ABI compatible with 6.x and dependent packages must be rebuilt
> - Security: fix a remotely triggerable crash from a forged AUTH_GSS
>   reply verifier
> - Security: bound the ZDR array element count and string/opaque
>   padding so a short reply cannot drive a huge allocation or read
>   outside the receive buffer
> - Security: implement RPC record fragment reassembly
> - Security: fix several heap over-reads where a length delimited XDR
>   string was used as a NUL terminated C string
> - Security: fix a one byte overflow in nfs_readlink()
> - Security: fix an infinite readdir loop against a server that never
>   advances the cookie
> - Fix a PDU leak of ~14KB on every mount
> - New API: [p]readv[_async], nfs_readv, rpc_set_timeout is now public
> - New "readonly" URL argument, and mountport support in the URL
> - NFSv4: read rdev/nfs_dev, honour the server's readmax/writemax,
>   and fix O_EXCL handling on create
> - RPC: high/low priority send queue, eventfd based service thread
>   wakeups, PDU telemetry, and a 100MB maximum transfer size
> - TLS: fail mtls when credentials are unavailable rather than
>   silently downgrading, and support kernels without TLS_1_3_VERSION
> - New optional servers/ directory containing rpcbind, rpc.statd and
>   an NFSv3 server skeleton, all under the MIT license
> - portmapper v4 support, including GETADDRLIST
> - Many portability fixes for Windows/MSVC, macOS, PS2, arm32 and
>   riscv64, and the cmake build now builds the examples
>
> * Sat Dec 14 2024 : Version 6.0.2
> - Fix compile issue on 32 bit platforms
> - Fix windows build
>
> * Fri Dec 13 2024 : Version 6.0.1
> - Fix compile bug on MacOS
> - Add autotools support to enable tls
>
> * Wed Dec 11 2024 : Version 6.0.0
> - KRB5/i/p support
> - TLS support
> - READ3/4 Zero-Copy
> - New API that breaks some signatures. Check LIBNFS_API_V2
>
> * Sun Feb 11 2024 : Version 5.0.3
> - drop *BSD support from github workflows
> - workflow: indicate that the linux workflow also runs the tests
> - Add workflow to build PS2
> - Add workflow running make test
> - ps2 bonus: Remove old implementations
> - ps2: Fix linkage with a missing file
> - Fix ps2 warnings and remove read macros
> - update INSTALL build with cmake and debugging enable
> - Update waitpdu_len when a pdu times out.
> - ci: Build examples and run tests on Linux
> - Fix building examples/nfsclient-raw.c
> - Allow setting a limit on the number of commands in-flight.
> - Always close the socket.
> - Handle small reads for record marker field.
> - Reset state on reconnect.
> - Check return value from adjust_inbuf.
> - README: Document that new development has shifted to libnfs-next-gen branch
> - fix compiler warning
> - Patch to support NLM Share
> - rpc: re-add fragment handling when reading from socket.
> - change read_from_socket to use a state machine
> - Write multiple pdus at once.
> - Added NFS4.1 EXCHANGE_ID and BIND_CONN_TO_SESSION
> - Added poll_timeout parameter
> - Completed NFS 4.1 defintion of open_claim4
> - NFS3: we do not need to provide an alloc-hint to write3
> - Fix deprecation warnings on modern macOS
> - Restore Cygwin CI (official GH action from Cygwin maintainers).
> - Change Windows writev & readv polyfills to static inline.
> - Fix integer size for readdirs dircount/maxcount
> - Add OpenBSD back to the workflow
> - Add windows workflow and add missing readv/writev replacements to win32
> - Remove BSD from the github workflows.
> - Remove CYGWIN github workflow. The cygwin action is abandonware
> - Modify LD_PRELOAD toy doc
> - Add options to set dircount/maxcount for readdir()
> - compile fix for mac
> - write3: make sure we do not add too many iovectors
> - Change WRITE3 to become zero-copy usinf iovectors for the data.
> - Switch writing PDUs to the socket use iovectors.
> - Add CodeQL workflow for GitHub code scanning
> - github: switch openbsd to 7.0 and try again
> - github: switch OpenBSD workflow to use 7.2 instead of 6.9
> - multithreading.c: do not wake up immediately if there are no events to process
> - Reduced memory allocations.
> - Expose further configuration options
> - tests: disable test_8000 for now
> - rpm: fix building RPMs
> - rpc: fix use after free on init_context failure
> - tests: fix failure in 0201
> - rpc: only scan for tiemout out RPCs every second instead of every I/O
> - rpc: make it possible to tweak the number of lists we hash to for waitpdu
> - libnfs-sync: fail all pdus before returning error from wait_for_nfs_reply
> - cmake: update utils to be installed
> - socket: remove debugging printf
> - Deduplicate paths in CMakeLists.txt.
> - Add -no-undefined linker flag for shared library
> - Link shared library with ws2_32
>
>
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/devel/libnfs/Makefile,v
> retrieving revision 1.11
> diff -u -p -u -p -r1.11 Makefile
> --- Makefile	4 Mar 2026 09:46:42 -0000	1.11
> +++ Makefile	8 Aug 2026 23:40:43 -0000
> @@ -1,12 +1,12 @@
>  COMMENT=	client library for accessing NFS
>
> +DISTNAME=	libnfs-7.0.0pl20260708
>  GH_ACCOUNT=	sahlberg
>  GH_PROJECT=	libnfs
> -GH_TAGNAME=	libnfs-5.0.2
> -PKGNAME=	${GH_TAGNAME}
> +GH_COMMIT=	8d4c2f6057acb6a01a316fbb7eea1c05a06e34c6
>  CATEGORIES=	devel net
>
> -SHARED_LIBS=	nfs	2.2
> +SHARED_LIBS=	nfs	3.0
>
>  HOMEPAGE=	https://github.com/sahlberg/libnfs
>
> @@ -17,9 +17,11 @@ PERMIT_PACKAGE=	Yes
>
>  WANTLIB=	c
>
> -AUTOCONF_VERSION=	2.69
> -AUTOMAKE_VERSION=	1.16
> +MODULES=	devel/cmake
>
> -CONFIGURE_STYLE= autoreconf
> +CONFIGURE_ARGS+=-DENABLE_UTILS=ON \
> +		-DINSTALL_MAN_DIR="${PREFIX}/man"
> +
> +NO_TEST=	Yes
>
>  .include <bsd.port.mk>
> Index: distinfo
> ===================================================================
> RCS file: /cvs/ports/devel/libnfs/distinfo,v
> retrieving revision 1.6
> diff -u -p -u -p -r1.6 distinfo
> --- distinfo	4 Mar 2026 09:46:42 -0000	1.6
> +++ distinfo	8 Aug 2026 23:40:43 -0000
> @@ -1,2 +1,2 @@
> -SHA256 (libnfs-libnfs-5.0.2.tar.gz) = Y35WZDsZ2p+6mPBoR3iMTa0wi3IxVqZHSAQQNdzfm9M=
> -SIZE (libnfs-libnfs-5.0.2.tar.gz) = 281154
> +SHA256 (libnfs-7.0.0pl20260708-8d4c2f60.tar.gz) = ZUqmlJD4r0SdLOryavOtWOiQphUVgdlGxwQxk8Mil3A=
> +SIZE (libnfs-7.0.0pl20260708-8d4c2f60.tar.gz) = 389218
> Index: patches/patch-include_nfsc_libnfs_h
> ===================================================================
> RCS file: patches/patch-include_nfsc_libnfs_h
> diff -N patches/patch-include_nfsc_libnfs_h
> --- patches/patch-include_nfsc_libnfs_h	11 Mar 2022 18:50:37 -0000	1.5
> +++ /dev/null	1 Jan 1970 00:00:00 -0000
> @@ -1,13 +0,0 @@
> -Index: include/nfsc/libnfs.h
> ---- include/nfsc/libnfs.h.orig
> -+++ include/nfsc/libnfs.h
> -@@ -38,6 +38,9 @@
> - #ifdef __cplusplus
> - extern "C" {
> - #endif
> -+#if defined(__OpenBSD__)
> -+#include <sys/time.h> /* gettimeofday */
> -+#endif
> -
> - #define LIBNFS_FEATURE_READAHEAD
> - #define LIBNFS_FEATURE_PAGECACHE
> Index: pkg/PLIST
> ===================================================================
> RCS file: /cvs/ports/devel/libnfs/pkg/PLIST,v
> retrieving revision 1.4
> diff -u -p -u -p -r1.4 PLIST
> --- pkg/PLIST	11 Mar 2022 18:50:37 -0000	1.4
> +++ pkg/PLIST	8 Aug 2026 23:40:43 -0000
> @@ -13,8 +13,12 @@ include/nfsc/libnfs-raw-rquota.h
>  include/nfsc/libnfs-raw.h
>  include/nfsc/libnfs-zdr.h
>  include/nfsc/libnfs.h
> -@static-lib lib/libnfs.a
> -lib/libnfs.la
> +lib/cmake/
> +lib/cmake/libnfs/
> +lib/cmake/libnfs/FindNFS.cmake
> +lib/cmake/libnfs/libnfs-config${MODCMAKE_BUILD_SUFFIX}
> +lib/cmake/libnfs/libnfs-config-version.cmake
> +lib/cmake/libnfs/libnfs-config.cmake
>  @lib lib/libnfs.so.${LIBnfs_VERSION}
>  lib/pkgconfig/libnfs.pc
>  @man man/man1/nfs-cat.1
>
>