| Newsgroups |
gmane.os.netbsd.devel.pkgsrc.bugs |
| Message-ID |
<[email protected]> |
>Number: 60498
>Category: pkg
>Synopsis: net/unfs3: udpate to 0.11.0
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: pkg-manager
>State: open
>Class: change-request
>Submitter-Id: net
>Arrival-Date: Fri Jul 24 18:30:01 +0000 2026
>Originator: Bartosz Kuzma
>Release: NetBSD 11.0_RC6, pkgsrc-2026Q2
>Organization:
>Environment:
>Description:
net/unfs3: update to 0.11.0
Changes since 0.9.22:
unsf3 0.11.0:
- fixes to make sure unfs3 works on macOS and Windows again
- 32-bit mode can now be enabled at any time, for compatibility with very old NFS clients
- starting unfsd now gives a reliable error code if it fails to start
- fix incorrect file mode when doing exclusive create
- fix to correctly update the time on symlinks, not what they point to
- Flex' libfl is no longer needed
unsf3 0.10.0
- switched to libtirpc as a base requirement
- contrib scripts now require Python 3 instead of Python 2
- fix stale handle when moving files or directories
unfs3 0.9.23
- include AFS support for better serving of files from AFS filesystems
- use svc_getreq_poll() when available
- fix serving files larger than 4GB from Windows
- better support for 64-bit systems
- fixes for macOS and Windows support
- fixes when cross compiling
- better support for exporting FAT filesystems
>How-To-Repeat:
Tested with NetBSD 11.0_RC6 and OpenBSD 7.9 mount_nfs
>Fix:
Index: Makefile
===================================================================
RCS file: /cvsroot/pkgsrc/net/unfs3/Makefile,v
retrieving revision 1.17
diff -u -r1.17 Makefile
--- Makefile 17 Nov 2025 11:01:17 -0000 1.17
+++ Makefile 24 Jul 2026 17:02:05 -0000
@@ -1,23 +1,38 @@
# $NetBSD: Makefile,v 1.17 2025/11/17 11:01:17 wiz Exp $
#
-DISTNAME= unfs3-0.9.22
-PKGREVISION= 2
+DISTNAME= unfs3-0.11.0
CATEGORIES= net
-MASTER_SITES= ${MASTER_SITE_SOURCEFORGE:=unfs3/}
+MASTER_SITES= ${MASTER_SITE_GITHUB:=unfs3/}
+GITHUB_PROJECT= unfs3
+GITHUB_TAG= refs/tags/${DISTNAME}
MAINTAINER= [email protected]
-HOMEPAGE= https://unfs3.sourceforge.net/
+HOMEPAGE= https://unfs3.github.io/
COMMENT= Userspace NFSv3 server
LICENSE= modified-bsd
-GNU_CONFIGURE= yes
-USE_TOOLS+= flex:run bison
+WRKSRC= ${WRKDIR}/${GITHUB_PROJECT}-${DISTNAME}
+
+USE_TOOLS+= flex:run bison autoconf automake pkg-config gmake
+USE_LANGUAGES= c
+
+HAS_CONFIGURE= yes
+CONFIGURE_ARGS+= --prefix=${PREFIX}
+CONFIGURE_ARGS+= --mandir=${PREFIX}/${PKGMANDIR}
+
+.include "../../devel/libtirpc/buildlink3.mk"
+.include "../../devel/libtirpc/builtin.mk"
+
+.if ${USE_BUILTIN.libtirpc:Uno} == "yes"
+CONFIGURE_ENV+= TIRPC_CFLAGS=-I/usr/include
+CONFIGURE_ENV+= TIRPC_LIBS=-lc
+.endif
.include "../../mk/bsd.prefs.mk"
CONF_FILES+= ${PREFIX}/share/examples/unfs3/exports \
- ${PKG_SYSCONFDIR}/exports
+ ${PKG_SYSCONFDIR}/exports
RCD_SCRIPTS= unfsd
INSTALLATION_DIRS+= share/examples/unfs3
@@ -28,11 +43,12 @@
SUBST_FILES.exports= daemon.c unfsd.8
SUBST_SED.exports= -e 's,/etc/exports,${PKG_SYSCONFDIR}/exports,g'
-pre-build:
- cd ${WRKSRC}/Config && ${MAKE_PROGRAM} clean
+pre-configure:
+ cd ${WRKSRC} && autoupdate
+ cd ${WRKSRC} && autoreconf -fiv
post-install:
${INSTALL_DATA} ${FILESDIR}/exports \
- ${DESTDIR}${PREFIX}/share/examples/unfs3
+ ${DESTDIR}${PREFIX}/share/examples/unfs3
.include "../../mk/bsd.pkg.mk"
Index: distinfo
===================================================================
RCS file: /cvsroot/pkgsrc/net/unfs3/distinfo,v
retrieving revision 1.7
diff -u -r1.7 distinfo
--- distinfo 26 Oct 2021 11:07:06 -0000 1.7
+++ distinfo 24 Jul 2026 17:02:05 -0000
@@ -1,6 +1,9 @@
$NetBSD: distinfo,v 1.7 2021/10/26 11:07:06 nia Exp $
-BLAKE2s (unfs3-0.9.22.tar.gz) = f960cf569c5c9ee56b54a6f8346651864497db2c6dc5f3d11c07bbc037bc0fcb
-SHA512 (unfs3-0.9.22.tar.gz) = b1e4b7f5b7b7de27bb5411c69363a6b40be0fcf1f772e283f0868a2155fa9ea4b9b8e7f05b1706e41cf09dd2ee4baab472a01bc4640ae47e3be2a19d8d3f5f9e
-Size (unfs3-0.9.22.tar.gz) = 168447 bytes
-SHA1 (patch-Makefile_in) = 68e86790c80db6d9cfb5698735ec54163adea68d
+BLAKE2s (unfs3-0.11.0.tar.gz) = a0d5c7c7136253df207c5294a4ffbce020384eaf0ec7a1a283e06eb1d52437ca
+SHA512 (unfs3-0.11.0.tar.gz) = be7298a82ab5680cf6719a8784621034c0e25ed15846fc8ed04bbdf0bae037c5d5985d44416aa932f36435131cafd5797d438fa967607113603c2dbb078f7645
+Size (unfs3-0.11.0.tar.gz) = 110613 bytes
+SHA1 (patch-configure.ac) = 86c07b31245edce7bc77c08d0364a7e342f05446
+SHA1 (patch-daemon.c) = 67dcfb852b395887ad12ec2792dc833332391de1
+SHA1 (patch-nfs.c) = 8b66d408a2531e1e087f528b102d0c897451eb09
+SHA1 (patch-xdr.c) = 6899df775bd68a173db92e1b3484b02fe847407b
Index: patches/patch-Makefile_in
===================================================================
RCS file: patches/patch-Makefile_in
diff -N patches/patch-Makefile_in
--- patches/patch-Makefile_in 21 Dec 2011 17:13:48 -0000 1.1
+++ /dev/null 1 Jan 1970 00:00:00 -0000
@@ -1,13 +0,0 @@
-$NetBSD: patch-Makefile_in,v 1.1 2011/12/21 17:13:48 dholland Exp $
-
---- Makefile.in~ 2007-12-05 19:11:28.000000000 +0000
-+++ Makefile.in
-@@ -25,7 +25,7 @@ SUBDIRS = Config @SUBDIRS@
-
- DESTDIR =
-
--all: subdirs unfsd$(EXEEXT)
-+all: subdirs .WAIT unfsd$(EXEEXT)
-
- unfsd$(EXEEXT): $(OBJS) $(CONFOBJ) $(EXTRAOBJ)
- $(CC) -o $@ $(OBJS) $(CONFOBJ) $(EXTRAOBJ) $(LDFLAGS)
Index: patches/patch-configure.ac
===================================================================
RCS file: patches/patch-configure.ac
diff -N patches/patch-configure.ac
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-configure.ac 24 Jul 2026 17:02:05 -0000
@@ -0,0 +1,15 @@
+$NetBSD$
+
+Portability
+
+--- configure.ac.orig 2026-07-24 05:24:37.161821367 +0000
++++ configure.ac
+@@ -8,7 +8,7 @@ AC_PROG_INSTALL
+ AC_PROG_CC([gcc egcs kgcc cc])
+ AC_CHECK_TOOL([AR], [ar])
+ AC_PROG_LEX([noyywrap])
+-AS_IF([test "x$LEX" == "x:"], [
++AS_IF([test "x$LEX" = "x:"], [
+ AC_MSG_ERROR([flex or lex missing.])
+ ])
+ AC_PROG_YACC
Index: patches/patch-daemon.c
===================================================================
RCS file: patches/patch-daemon.c
diff -N patches/patch-daemon.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-daemon.c 24 Jul 2026 17:02:05 -0000
@@ -0,0 +1,23 @@
+$NetBSD$
+
+Use getsockname for NetBSD
+
+--- daemon.c.orig 2025-03-28 08:56:00.000000000 +0000
++++ daemon.c
+@@ -707,7 +707,15 @@ static void mountprog_3(struct svc_req *
+ static int
+ _socket_getdomain(int socket)
+ {
+-#ifdef SO_DOMAIN
++#if defined(__NetBSD__)
++ struct sockaddr name;
++ socklen_t namelen = sizeof(name);
++
++ if (getsockname(socket, &name, &namelen) == -1)
++ return -1;
++
++ return name.sa_family;
++#elif defined(SO_DOMAIN)
+ int ret, domain;
+ socklen_t len;
+ len = sizeof(domain);
Index: patches/patch-nfs.c
===================================================================
RCS file: patches/patch-nfs.c
diff -N patches/patch-nfs.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-nfs.c 24 Jul 2026 17:02:05 -0000
@@ -0,0 +1,24 @@
+$NetBSD$
+
+Portability
+
+--- nfs.c.orig 2026-07-24 15:19:36.054976780 +0000
++++ nfs.c
+@@ -334,7 +334,7 @@ READ3res *nfsproc3_read_3_svc(READ3args
+ fd = fd_open(path, argp->file, UNFS3_FD_READ, TRUE);
+ if (fd != -1) {
+ /* read one more to check for eof */
+- res = backend_pread(fd, buf, argp->count + 1, (off64_t)argp->offset);
++ res = backend_pread(fd, buf, argp->count + 1, (off_t)argp->offset);
+
+ /* eof if we could not read one more */
+ result.READ3res_u.resok.eof = (res <= (int64) argp->count);
+@@ -395,7 +395,7 @@ WRITE3res *nfsproc3_write_3_svc(WRITE3ar
+ if (fd != -1) {
+ res =
+ backend_pwrite(fd, argp->data.data_val, argp->data.data_len,
+- (off64_t)argp->offset);
++ (off_t)argp->offset);
+
+ /* close for real if not UNSTABLE write */
+ if (argp->stable == UNSTABLE)
Index: patches/patch-xdr.c
===================================================================
RCS file: patches/patch-xdr.c
diff -N patches/patch-xdr.c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-xdr.c 24 Jul 2026 17:02:05 -0000
@@ -0,0 +1,187 @@
+$NetBSD$
+
+Portability - libtirpc uses rpc/xdr.h from NetBSD
+
+--- xdr.c.orig 2026-07-24 15:34:36.125979939 +0000
++++ xdr.c
+@@ -160,14 +160,14 @@ bool_t xdr_nfspath3(XDR * xdrs, nfspath3
+
+ bool_t xdr_fileid3(XDR * xdrs, fileid3 * objp)
+ {
+- if (!xdr_uint64_t(xdrs, objp))
++ if (!xdr_u_int64_t(xdrs, objp))
+ return FALSE;
+ return TRUE;
+ }
+
+ bool_t xdr_cookie3(XDR * xdrs, cookie3 * objp)
+ {
+- if (!xdr_uint64_t(xdrs, objp))
++ if (!xdr_u_int64_t(xdrs, objp))
+ return FALSE;
+ return TRUE;
+ }
+@@ -195,42 +195,42 @@ bool_t xdr_writeverf3(XDR * xdrs, writev
+
+ bool_t xdr_uid3(XDR * xdrs, uid3 * objp)
+ {
+- if (!xdr_uint32_t(xdrs, objp))
++ if (!xdr_u_int32_t(xdrs, objp))
+ return FALSE;
+ return TRUE;
+ }
+
+ bool_t xdr_gid3(XDR * xdrs, gid3 * objp)
+ {
+- if (!xdr_uint32_t(xdrs, objp))
++ if (!xdr_u_int32_t(xdrs, objp))
+ return FALSE;
+ return TRUE;
+ }
+
+ bool_t xdr_size3(XDR * xdrs, size3 * objp)
+ {
+- if (!xdr_uint64_t(xdrs, objp))
++ if (!xdr_u_int64_t(xdrs, objp))
+ return FALSE;
+ return TRUE;
+ }
+
+ bool_t xdr_offset3(XDR * xdrs, offset3 * objp)
+ {
+- if (!xdr_uint64_t(xdrs, objp))
++ if (!xdr_u_int64_t(xdrs, objp))
+ return FALSE;
+ return TRUE;
+ }
+
+ bool_t xdr_mode3(XDR * xdrs, mode3 * objp)
+ {
+- if (!xdr_uint32_t(xdrs, objp))
++ if (!xdr_u_int32_t(xdrs, objp))
+ return FALSE;
+ return TRUE;
+ }
+
+ bool_t xdr_count3(XDR * xdrs, count3 * objp)
+ {
+- if (!xdr_uint32_t(xdrs, objp))
++ if (!xdr_u_int32_t(xdrs, objp))
+ return FALSE;
+ return TRUE;
+ }
+@@ -251,9 +251,9 @@ bool_t xdr_ftype3(XDR * xdrs, ftype3 * o
+
+ bool_t xdr_specdata3(XDR * xdrs, specdata3 * objp)
+ {
+- if (!xdr_uint32_t(xdrs, &objp->specdata1))
++ if (!xdr_u_int32_t(xdrs, &objp->specdata1))
+ return FALSE;
+- if (!xdr_uint32_t(xdrs, &objp->specdata2))
++ if (!xdr_u_int32_t(xdrs, &objp->specdata2))
+ return FALSE;
+ return TRUE;
+ }
+@@ -269,9 +269,9 @@ bool_t xdr_nfs_fh3(XDR * xdrs, nfs_fh3 *
+
+ bool_t xdr_nfstime3(XDR * xdrs, nfstime3 * objp)
+ {
+- if (!xdr_uint32_t(xdrs, &objp->seconds))
++ if (!xdr_u_int32_t(xdrs, &objp->seconds))
+ return FALSE;
+- if (!xdr_uint32_t(xdrs, &objp->nseconds))
++ if (!xdr_u_int32_t(xdrs, &objp->nseconds))
+ return FALSE;
+ return TRUE;
+ }
+@@ -282,7 +282,7 @@ bool_t xdr_fattr3(XDR * xdrs, fattr3 * o
+ return FALSE;
+ if (!xdr_mode3(xdrs, &objp->mode))
+ return FALSE;
+- if (!xdr_uint32_t(xdrs, &objp->nlink))
++ if (!xdr_u_int32_t(xdrs, &objp->nlink))
+ return FALSE;
+ if (!xdr_uid3(xdrs, &objp->uid))
+ return FALSE;
+@@ -294,7 +294,7 @@ bool_t xdr_fattr3(XDR * xdrs, fattr3 * o
+ return FALSE;
+ if (!xdr_specdata3(xdrs, &objp->rdev))
+ return FALSE;
+- if (!xdr_uint64_t(xdrs, &objp->fsid))
++ if (!xdr_u_int64_t(xdrs, &objp->fsid))
+ return FALSE;
+ if (!xdr_fileid3(xdrs, &objp->fileid))
+ return FALSE;
+@@ -635,7 +635,7 @@ bool_t xdr_ACCESS3args(XDR * xdrs, ACCES
+ {
+ if (!xdr_nfs_fh3(xdrs, &objp->object))
+ return FALSE;
+- if (!xdr_uint32_t(xdrs, &objp->access))
++ if (!xdr_u_int32_t(xdrs, &objp->access))
+ return FALSE;
+ return TRUE;
+ }
+@@ -644,7 +644,7 @@ bool_t xdr_ACCESS3resok(XDR * xdrs, ACCE
+ {
+ if (!xdr_post_op_attr(xdrs, &objp->obj_attributes))
+ return FALSE;
+- if (!xdr_uint32_t(xdrs, &objp->access))
++ if (!xdr_u_int32_t(xdrs, &objp->access))
+ return FALSE;
+ return TRUE;
+ }
+@@ -1408,7 +1408,7 @@ bool_t xdr_FSSTAT3resok(XDR * xdrs, FSST
+ return FALSE;
+ if (!xdr_size3(xdrs, &objp->afiles))
+ return FALSE;
+- if (!xdr_uint32_t(xdrs, &objp->invarsec))
++ if (!xdr_u_int32_t(xdrs, &objp->invarsec))
+ return FALSE;
+ return TRUE;
+ }
+@@ -1448,25 +1448,25 @@ bool_t xdr_FSINFO3resok(XDR * xdrs, FSIN
+ {
+ if (!xdr_post_op_attr(xdrs, &objp->obj_attributes))
+ return FALSE;
+- if (!xdr_uint32_t(xdrs, &objp->rtmax))
++ if (!xdr_u_int32_t(xdrs, &objp->rtmax))
+ return FALSE;
+- if (!xdr_uint32_t(xdrs, &objp->rtpref))
++ if (!xdr_u_int32_t(xdrs, &objp->rtpref))
+ return FALSE;
+- if (!xdr_uint32_t(xdrs, &objp->rtmult))
++ if (!xdr_u_int32_t(xdrs, &objp->rtmult))
+ return FALSE;
+- if (!xdr_uint32_t(xdrs, &objp->wtmax))
++ if (!xdr_u_int32_t(xdrs, &objp->wtmax))
+ return FALSE;
+- if (!xdr_uint32_t(xdrs, &objp->wtpref))
++ if (!xdr_u_int32_t(xdrs, &objp->wtpref))
+ return FALSE;
+- if (!xdr_uint32_t(xdrs, &objp->wtmult))
++ if (!xdr_u_int32_t(xdrs, &objp->wtmult))
+ return FALSE;
+- if (!xdr_uint32_t(xdrs, &objp->dtpref))
++ if (!xdr_u_int32_t(xdrs, &objp->dtpref))
+ return FALSE;
+ if (!xdr_size3(xdrs, &objp->maxfilesize))
+ return FALSE;
+ if (!xdr_nfstime3(xdrs, &objp->time_delta))
+ return FALSE;
+- if (!xdr_uint32_t(xdrs, &objp->properties))
++ if (!xdr_u_int32_t(xdrs, &objp->properties))
+ return FALSE;
+ return TRUE;
+ }
+@@ -1506,9 +1506,9 @@ bool_t xdr_PATHCONF3resok(XDR * xdrs, PA
+ {
+ if (!xdr_post_op_attr(xdrs, &objp->obj_attributes))
+ return FALSE;
+- if (!xdr_uint32_t(xdrs, &objp->linkmax))
++ if (!xdr_u_int32_t(xdrs, &objp->linkmax))
+ return FALSE;
+- if (!xdr_uint32_t(xdrs, &objp->name_max))
++ if (!xdr_u_int32_t(xdrs, &objp->name_max))
+ return FALSE;
+ if (!xdr_bool(xdrs, &objp->no_trunc))
+ return FALSE;