pkgsrc-Changes archive

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

CVS commit: pkgsrc/net/rsync



Module Name:    pkgsrc
Committed By:   wiz
Date:           Fri Nov  6 11:52:40 UTC 2026

Modified Files:
        pkgsrc/net/rsync: Makefile distinfo
Added Files:
        pkgsrc/net/rsync/patches: patch-syscall.c
            patch-testsuite_symlink-receiver-perms__test.py

Log Message:
rsync: update to 3.5.2nb1.

add upstream patch fixing a problem with receiving symlinks.

Bump PKGREVISION.

Add test status.


To generate a diff of this commit:
cvs rdiff -u -r1.137 -r1.138 pkgsrc/net/rsync/Makefile
cvs rdiff -u -r1.70 -r1.71 pkgsrc/net/rsync/distinfo
cvs rdiff -u -r0 -r1.1 pkgsrc/net/rsync/patches/patch-syscall.c \
    pkgsrc/net/rsync/patches/patch-testsuite_symlink-receiver-perms__test.py

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

Modified files:

Index: pkgsrc/net/rsync/Makefile
diff -u pkgsrc/net/rsync/Makefile:1.137 pkgsrc/net/rsync/Makefile:1.138
--- pkgsrc/net/rsync/Makefile:1.137     Tue Sep 22 06:44:46 2026
+++ pkgsrc/net/rsync/Makefile   Fri Nov  6 11:52:39 2026
@@ -1,7 +1,9 @@
-# $NetBSD: Makefile,v 1.137 2026/09/22 06:44:46 adam Exp $
+# $NetBSD: Makefile,v 1.138 2026/11/06 11:52:39 wiz Exp $
 
 .include "Makefile.common"
 
+PKGREVISION=   1
+
 COMMENT=       Network file distribution/synchronisation utility
 
 USE_TOOLS+=            bash:run
@@ -24,9 +26,16 @@ SUBST_FILES.paths=   rsync.1 rsyncd.conf.5
 SUBST_SED.paths=       -e 's|/etc/rsyncd|${PKG_SYSCONFDIR}/rsyncd|g'
 SUBST_SED.paths+=      -e 's|/usr/bin/rsync|${PREFIX}/bin/rsync|g'
 
+# test status as of 3.5.2
+# 242 passed
+# 6 failed
+# 129 skipped
+
 .include "options.mk"
 
 .include "../../archivers/lz4/buildlink3.mk"
+# needed for testing
+#.include "../../lang/python/tool.mk"
 .include "../../converters/libiconv/buildlink3.mk"
 .include "../../devel/libidn2/buildlink3.mk"
 .include "../../devel/popt/buildlink3.mk"

Index: pkgsrc/net/rsync/distinfo
diff -u pkgsrc/net/rsync/distinfo:1.70 pkgsrc/net/rsync/distinfo:1.71
--- pkgsrc/net/rsync/distinfo:1.70      Wed Nov  4 16:56:24 2026
+++ pkgsrc/net/rsync/distinfo   Fri Nov  6 11:52:39 2026
@@ -1,7 +1,9 @@
-$NetBSD: distinfo,v 1.70 2026/11/04 16:56:24 wiz Exp $
+$NetBSD: distinfo,v 1.71 2026/11/06 11:52:39 wiz Exp $
 
 BLAKE2s (rsync-3.5.2.tar.gz) = 93505151c66ae1cc16324f5a944bc5ad888c3bbdc63217b62e91b959c23a4707
 SHA512 (rsync-3.5.2.tar.gz) = 751bf76d759d101d2b3a8f800d7512df1973753e0438885e75d4bdbda842e9f2cf265616aaebd48a1a6740903444b29338e54c66c793c3f2c080eb08802f8c14
 Size (rsync-3.5.2.tar.gz) = 1977884 bytes
 SHA1 (patch-Makefile.in) = 701577726bdb3b91c97bba47c6be331505630a72
 SHA1 (patch-acls.c) = 9be60c0c1abedc961fa95bba2bb23d802a09bc62
+SHA1 (patch-syscall.c) = f7c7b513023a80cfb391540ad37c03c52f37ae79
+SHA1 (patch-testsuite_symlink-receiver-perms__test.py) = 16cb062c288b778443970e564323b5a4ad79b3d8

Added files:

Index: pkgsrc/net/rsync/patches/patch-syscall.c
diff -u /dev/null pkgsrc/net/rsync/patches/patch-syscall.c:1.1
--- /dev/null   Fri Nov  6 11:52:40 2026
+++ pkgsrc/net/rsync/patches/patch-syscall.c    Fri Nov  6 11:52:39 2026
@@ -0,0 +1,15 @@
+$NetBSD: patch-syscall.c,v 1.1 2026/11/06 11:52:39 wiz Exp $
+
+https://github.com/RsyncProject/rsync/commit/ea645201fefbba7f6b6b22b621856dba3c01cdd3
+
+--- syscall.c.orig     2026-10-26 11:16:36.000000000 +0000
++++ syscall.c
+@@ -1806,6 +1806,8 @@ int do_chmod(const char *path, mode_t mode)
+                               code = 1;
+ # elif defined AT_FDCWD && defined AT_SYMLINK_NOFOLLOW
+                       code = fchmodat(AT_FDCWD, path, mode & CHMOD_BITS, AT_SYMLINK_NOFOLLOW);
++                      if (code < 0 && (errno == ENOTSUP || errno == EOPNOTSUPP || errno == ENOSYS))
++                              code = 1;
+ # else
+                       code = 1;
+ # endif
Index: pkgsrc/net/rsync/patches/patch-testsuite_symlink-receiver-perms__test.py
diff -u /dev/null pkgsrc/net/rsync/patches/patch-testsuite_symlink-receiver-perms__test.py:1.1
--- /dev/null   Fri Nov  6 11:52:40 2026
+++ pkgsrc/net/rsync/patches/patch-testsuite_symlink-receiver-perms__test.py    Fri Nov  6 11:52:39 2026
@@ -0,0 +1,48 @@
+$NetBSD: patch-testsuite_symlink-receiver-perms__test.py,v 1.1 2026/11/06 11:52:39 wiz Exp $
+
+https://github.com/RsyncProject/rsync/commit/ea645201fefbba7f6b6b22b621856dba3c01cdd3
+
+--- testsuite/symlink-receiver-perms_test.py.orig      2026-11-06 11:47:24.607409717 +0000
++++ testsuite/symlink-receiver-perms_test.py
+@@ -0,0 +1,41 @@
++#!/usr/bin/env python3
++
++import os
++import stat
++import struct
++
++from rsyncfns import SCRATCHDIR, makepath, run_rsync, test_fail
++
++source = SCRATCHDIR / 'source'
++destination = SCRATCHDIR / 'destination'
++makepath(source)
++makepath(destination)
++target = destination / 'target'
++target.write_text('target contents\n')
++target.chmod(0o640)
++links = [('link', 'target'), ('dangling', 'missing')]
++for name, link in links:
++    os.symlink(link, source / name)
++
++batch = SCRATCHDIR / 'symlinks.batch'
++run_rsync('-rlp', '--checksum-seed=1', f'--only-write-batch={batch}',
++          f'{source}/', f'{destination}/')
++
++# Supply BSD-style link modes without relying on the source filesystem
++mode = stat.S_IMODE((source / 'link').lstat().st_mode)
++wanted = 0o400 if mode != 0o400 else 0o755
++encoded_mode = struct.pack('<I', 0o120000 | mode)
++data = batch.read_bytes()
++if data.count(encoded_mode) != 1:
++    test_fail('expected one shared symlink mode in the batch')
++batch.write_bytes(data.replace(encoded_mode, struct.pack('<I', 0o120000 | wanted)))
++
++for _ in range(2):
++    run_rsync('-rlp', f'--read-batch={batch}', f'{destination}/')
++    for name, link in links:
++        if not (destination / name).is_symlink() or os.readlink(destination / name) != link:
++            test_fail(f'{name}: symlink was not preserved')
++    if stat.S_IMODE(target.stat().st_mode) != 0o640 or target.read_text() != 'target contents\n':
++        test_fail('symlink chmod changed the target')
++    if (destination / 'missing').exists():
++        test_fail('dangling symlink target was created')



Home | Main Index | Thread Index | Old Index