rsync icon indicating copy to clipboard operation
rsync copied to clipboard

Cygwin, failing `itemize` test

Open KillyMXI opened this issue 4 years ago • 1 comments

I'm following on my local machine with Cygwin the latest (atm) automated build: https://github.com/WayneD/rsync/runs/4392607951 (commit https://github.com/WayneD/rsync/commit/1f0e62f139565f39020e1f76700828b415b01bcf)

All goes fine except the itemize test:

test log
----- itemize log follows
Testing for symlinks using 'test -h'
        makepath /home/killy/rsync/testtmp/itemize/from/foo
        makepath /home/killy/rsync/testtmp/itemize/from/bar/baz
Running: "/home/killy/rsync/rsync.exe  -iplr '/home/killy/rsync/testtmp/itemize/from/' '/home/killy/rsync/testtmp/itemize/to/'"
created directory /home/killy/rsync/testtmp/itemize/to
cd+++++++++ ./
cd+++++++++ bar/
cd+++++++++ bar/baz/
>f+++++++++ bar/baz/rsync
cd+++++++++ foo/
>f+++++++++ foo/config1
>f+++++++++ foo/config2
>f+++++++++ foo/extra
cL+++++++++ foo/sym -> ../bar/baz/rsync
Running: "/home/killy/rsync/rsync.exe  -iplrH '/home/killy/rsync/testtmp/itemize/from/' '/home/killy/rsync/testtmp/itemize/to/'"
>f..T...... bar/baz/rsync
>f..T...... foo/config1
>f.sTp..... foo/config2
hf..T...... foo/extra => foo/config1
Running: "/home/killy/rsync/rsync.exe  -iplrtc '/home/killy/rsync/testtmp/itemize/from/' '/home/killy/rsync/testtmp/itemize/to/'"
.f..tp..... bar/baz/rsync
.d..t...... foo/
.f..t...... foo/config1
>fcstp..... foo/config2
cLc.t...... foo/sym -> ../bar/baz/rsync
Running: "/home/killy/rsync/rsync.exe  -vvplrH '/home/killy/rsync/testtmp/itemize/from/' '/home/killy/rsync/testtmp/itemize/to/'"
sending incremental file list
delta-transmission disabled for local transfer or --whole-file
bar/baz/rsync is uptodate
foo/config1 is uptodate
foo/extra is uptodate
foo/sym is uptodate
foo/config2
total: matches=0  hash_hits=0  false_alarms=0 data=45899

sent 46,208 bytes  received 242 bytes  30,966.67 bytes/sec
total size is 179,707  speedup is 3.87
Running: "/home/killy/rsync/rsync.exe  -ivvplrtH '/home/killy/rsync/testtmp/itemize/from/' '/home/killy/rsync/testtmp/itemize/to/'"
sending incremental file list
delta-transmission disabled for local transfer or --whole-file
.d          ./
.d          bar/
.d          bar/baz/
.f...p..... bar/baz/rsync
.d          foo/
.f          foo/config1
>f..t...... foo/config2
hf          foo/extra
.L          foo/sym -> ../bar/baz/rsync
total: matches=0  hash_hits=0  false_alarms=0 data=45899

sent 46,208 bytes  received 134 bytes  30,894.67 bytes/sec
total size is 179,707  speedup is 3.88
Running: "/home/killy/rsync/rsync.exe  -vplrtH '/home/killy/rsync/testtmp/itemize/from/' '/home/killy/rsync/testtmp/itemize/to/'"
sending incremental file list
foo/config2
foo/extra

sent 46,189 bytes  received 48 bytes  92,474.00 bytes/sec
total size is 179,707  speedup is 3.89
--- /home/killy/rsync/testtmp/itemize/rsync.chk 2021-12-02 15:06:38.531645800 +0300
+++ /home/killy/rsync/testtmp/itemize/rsync.out 2021-12-02 15:06:39.033307600 +0300
@@ -1 +1,2 @@
 foo/config2
+foo/extra
Failed: output differs
----- itemize log ends
FAIL    itemize

./configure output, just in case:

`./configure` output
aclocal -I m4
autoconf -o configure.sh
autoheader && touch config.h.in
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.exe
checking for suffix of executables... .exe
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking whether byte ordering is bigendian... no
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking whether time.h and sys/time.h may both be included... yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking sys/fcntl.h usability... yes
checking sys/fcntl.h presence... yes
checking for sys/fcntl.h... yes
checking sys/select.h usability... yes
checking sys/select.h presence... yes
checking for sys/select.h... yes
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking sys/unistd.h usability... yes
checking sys/unistd.h presence... yes
checking for sys/unistd.h... yes
checking for unistd.h... (cached) yes
checking utime.h usability... yes
checking utime.h presence... yes
checking for utime.h... yes
checking compat.h usability... no
checking compat.h presence... no
checking for compat.h... no
checking sys/param.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking ctype.h usability... yes
checking ctype.h presence... yes
checking for ctype.h... yes
checking for sys/wait.h... (cached) yes
checking for sys/stat.h... (cached) yes
checking sys/ioctl.h usability... yes
checking sys/ioctl.h presence... yes
checking for sys/ioctl.h... yes
checking sys/filio.h usability... no
checking sys/filio.h presence... no
checking for sys/filio.h... no
checking for string.h... (cached) yes
checking for stdlib.h... (cached) yes
checking sys/socket.h usability... yes
checking sys/socket.h presence... yes
checking for sys/socket.h... yes
checking sys/mode.h usability... no
checking sys/mode.h presence... no
checking for sys/mode.h... no
checking grp.h usability... yes
checking grp.h presence... yes
checking for grp.h... yes
checking sys/un.h usability... yes
checking sys/un.h presence... yes
checking for sys/un.h... yes
checking sys/attr.h usability... no
checking sys/attr.h presence... no
checking for sys/attr.h... no
checking arpa/inet.h usability... yes
checking arpa/inet.h presence... yes
checking for arpa/inet.h... yes
checking arpa/nameser.h usability... yes
checking arpa/nameser.h presence... yes
checking for arpa/nameser.h... yes
checking locale.h usability... yes
checking locale.h presence... yes
checking for locale.h... yes
checking for sys/types.h... (cached) yes
checking netdb.h usability... yes
checking netdb.h presence... yes
checking for netdb.h... yes
checking malloc.h usability... yes
checking malloc.h presence... yes
checking for malloc.h... yes
checking float.h usability... yes
checking float.h presence... yes
checking for float.h... yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking iconv.h usability... no
checking iconv.h presence... no
checking for iconv.h... no
checking libcharset.h usability... no
checking libcharset.h presence... no
checking for libcharset.h... no
checking langinfo.h usability... yes
checking langinfo.h presence... yes
checking for langinfo.h... yes
checking mcheck.h usability... no
checking mcheck.h presence... no
checking for mcheck.h... no
checking sys/acl.h usability... yes
checking sys/acl.h presence... yes
checking for sys/acl.h... yes
checking acl/libacl.h usability... yes
checking acl/libacl.h presence... yes
checking for acl/libacl.h... yes
checking attr/xattr.h usability... yes
checking attr/xattr.h presence... yes
checking for attr/xattr.h... yes
checking sys/xattr.h usability... yes
checking sys/xattr.h presence... yes
checking for sys/xattr.h... yes
checking sys/extattr.h usability... no
checking sys/extattr.h presence... no
checking for sys/extattr.h... no
checking dl.h usability... no
checking dl.h presence... no
checking for dl.h... no
checking popt.h usability... no
checking popt.h presence... no
checking for popt.h... no
checking popt/popt.h usability... no
checking popt/popt.h presence... no
checking for popt/popt.h... no
checking linux/falloc.h usability... no
checking linux/falloc.h presence... no
checking for linux/falloc.h... no
checking netinet/in_systm.h usability... yes
checking netinet/in_systm.h presence... yes
checking for netinet/in_systm.h... yes
checking netgroup.h usability... no
checking netgroup.h presence... no
checking for netgroup.h... no
checking zlib.h usability... no
checking zlib.h presence... no
checking for zlib.h... no
checking xxhash.h usability... yes
checking xxhash.h presence... yes
checking for xxhash.h... yes
checking openssl/md4.h usability... yes
checking openssl/md4.h presence... yes
checking for openssl/md4.h... yes
checking openssl/md5.h usability... yes
checking openssl/md5.h presence... yes
checking for openssl/md5.h... yes
checking zstd.h usability... yes
checking zstd.h presence... yes
checking for zstd.h... yes
checking lz4.h usability... yes
checking lz4.h presence... yes
checking for lz4.h... yes
checking sys/file.h usability... yes
checking sys/file.h presence... yes
checking for sys/file.h... yes
checking for netinet/ip.h... yes
checking whether sys/types.h defines makedev... yes
configure.sh: Configuring rsync 3.2.4dev
checking build system type... x86_64-pc-cygwin
checking host system type... x86_64-pc-cygwin
checking whether to include debugging symbols... yes
checking for gcc... (cached) gcc
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking how to run the C preprocessor... gcc -E
checking for g++... no
checking for c++... no
checking for gpp... no
checking for aCC... no
checking for CC... CC
checking whether we are using the GNU C++ compiler... no
checking whether CC accepts -g... no
checking for gawk... gawk
checking for egrep... (cached) /usr/bin/grep -E
checking for a BSD-compatible install... /usr/bin/install -c
checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
checking for gcc option to accept ISO C99... none needed
checking for gcc option to accept ISO Standard C... (cached) none needed
checking for perl... /usr/bin/perl
checking for python3... /usr/bin/python3
checking if md2man can create man pages... yes
checking if we require man-page building... required
checking for remsh... 0
checking for sh... /usr/bin/sh
checking for fakeroot... /usr/bin/fakeroot
checking the group for user "nobody"... nobody
checking whether to enable SIMD optimizations... no
checking if assembler accepts noexecstack... no
checking whether to enable ASM optimizations... no
checking for broken largefile support... no
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking whether to enable ipv6... yes
checking whether to call shutdown on all sockets... yes
checking whether to enable use of openssl crypto library... yes
checking for library containing MD5_Init... -lcrypto
checking whether to enable xxhash checksum support... yes
checking for library containing XXH64_createState... -lxxhash
checking whether to enable zstd compression... yes
checking for library containing ZSTD_minCLevel... -lzstd
checking whether to enable LZ4 compression... yes
checking for library containing LZ4_compress_default... -llz4
checking if makedev takes 3 args... no
checking size of int... 4
checking size of long... 8
checking size of long long... 8
checking size of short... 2
checking size of int16_t... 2
checking size of uint16_t... 2
checking size of int32_t... 4
checking size of uint32_t... 4
checking size of int64_t... 8
checking size of off_t... 8
checking size of off64_t... 0
checking size of time_t... 8
checking size of char*... 8
checking for inline... inline
checking for long double with more range or precision than double... yes
checking for uid_t in sys/types.h... yes
checking for mode_t... yes
checking for off_t... yes
checking for size_t... yes
checking for pid_t... yes
checking for id_t... yes
checking type of array argument to getgroups... gid_t
checking for struct stat.st_rdev... yes
checking for struct stat.st_mtimensec... no
checking for struct stat.st_mtimespec.tv_nsec... no
checking for struct stat.st_mtim.tv_nsec... yes
checking for socklen_t... yes
checking for errno in errno.h... yes
checking for connect... yes
checking for library containing inet_ntop... none required
checking for library containing iconv_open... no
checking for library containing libiconv_open... no
checking for iconv declaration...
         extern size_t iconv (iconv_t cd, const char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);
checking for inet_ntop... yes
checking for inet_pton... yes
checking for struct addrinfo... yes
checking for struct sockaddr_storage... yes
checking whether defines needed by getaddrinfo exist... yes
checking for getaddrinfo... yes
checking for struct sockaddr.sa_len... no
checking for struct sockaddr_in.sin_len... no
checking for struct sockaddr_un.sun_len... no
checking for struct sockaddr_in6.sin6_scope_id... yes
checking for struct stat64... no
checking for strcasecmp... yes
checking for aclsort... yes
checking for utime.h... (cached) yes
checking whether utime accepts a null argument... yes
checking for size_t... (cached) yes
checking for working alloca.h... yes
checking for alloca... yes
checking for waitpid... yes
checking for wait4... yes
checking for getcwd... yes
checking for chown... yes
checking for chmod... yes
checking for lchmod... no
checking for mknod... yes
checking for mkfifo... yes
checking for fchmod... yes
checking for fstat... yes
checking for ftruncate... yes
checking for strchr... yes
checking for readlink... yes
checking for link... yes
checking for utime... yes
checking for utimes... yes
checking for lutimes... yes
checking for strftime... yes
checking for chflags... no
checking for getattrlist... no
checking for mktime... yes
checking for innetgr... no
checking for linkat... yes
checking for memmove... yes
checking for lchown... yes
checking for vsnprintf... yes
checking for snprintf... yes
checking for vasprintf... yes
checking for asprintf... yes
checking for setsid... yes
checking for strpbrk... yes
checking for strlcat... yes
checking for strlcpy... yes
checking for strtol... yes
checking for mallinfo... yes
checking for getgroups... yes
checking for setgroups... yes
checking for geteuid... yes
checking for getegid... yes
checking for setlocale... yes
checking for setmode... no
checking for open64... no
checking for lseek64... no
checking for mkstemp64... no
checking for mtrace... no
checking for va_copy... no
checking for __va_copy... no
checking for seteuid... yes
checking for strerror... yes
checking for putenv... yes
checking for iconv_open... no
checking for locale_charset... no
checking for nl_langinfo... yes
checking for getxattr... yes
checking for extattr_get_link... no
checking for sigaction... yes
checking for sigprocmask... yes
checking for setattrlist... no
checking for getgrouplist... yes
checking for initgroups... yes
checking for utimensat... yes
checking for posix_fallocate... yes
checking for attropen... no
checking for setvbuf... yes
checking for nanosleep... yes
checking for usleep... yes
checking for setenv... yes
checking for unsetenv... yes
checking for libiconv_open... no
checking for useable fallocate... no
checking for FALLOC_FL_PUNCH_HOLE... no
checking for FALLOC_FL_ZERO_RANGE... no
checking for SYS_fallocate... no
checking whether posix_fallocate is efficient... yes
checking for getpgrp... yes
checking for tcgetpgrp... yes
checking whether getpgrp requires zero arguments... yes
checking whether chown() modifies symlinks... no
checking whether link() can hard-link symlinks... yes
checking whether link() can hard-link special files... no
checking for working socketpair... yes
checking for getpass... yes
checking for poptGetContext in -lpopt... no
checking whether to use included libpopt... ./popt
checking whether to use included zlib... ./zlib
checking for unsigned char... yes
checking for broken readdir... no
checking for utimbuf... yes
checking if gettimeofday takes tz argument... yes
checking for C99 vsnprintf... yes
checking for secure mkstemp... yes
checking if mknod creates FIFOs... yes
checking if mknod creates sockets... (-1 22) no
checking whether -c -o works... yes
checking for _acl... no
checking for __acl... no
checking for _facl... no
checking for __facl... no
checking whether to support ACLs... running tests:
checking for acl_get_file in -lacl... yes
checking for ACL support... yes
checking ACL test results... Using posix ACLs
checking for acl_get_perm_np... no
checking whether to support extended attributes... Using Linux xattrs
checking for getxattr in -lattr... yes
checking whether gcc supports -Wno-unused-parameter... yes
configure.sh: creating ./config.status
config.status: creating Makefile
config.status: creating lib/dummy
config.status: creating zlib/dummy
config.status: creating popt/dummy
config.status: creating shconfig
config.status: creating config.h

    rsync 3.2.4dev configuration successful

Any guesses what might be wrong?

Update: I then tried to replace the binaries with the ones from the GitHub build artefact and the itemize test is still failing. So my build seems fine, rsync or the test seems to be sensitive to some environment difference. What that might be?

KillyMXI avatar Dec 02 '21 12:12 KillyMXI

This is succeeding on my local Windows/Cygwin host and on the Cygwin CI run, and I can't see any obvious reason why it would be weird for you. My only guess is that you're using a different filesystem that is not handling the hard-linked file in the same manner. You might look around (either in the testtmp subdirs or by running the failing commands manually) and see if the file gets hard-linked correctly. Maybe the hardlinking is causing the modified time to get updated?

WayneD avatar Jan 02 '22 23:01 WayneD