Rsync in Ubuntu 20.10 fails when /proc isn't mounted, while it worked before.
This happens because AC_CHECK_FUNC(lchmod) returns "yes" in 20.10, while it returned "no" before.
Steps to reproduce:
# Emulate /proc not being mounted
$ mount --bind / /mnt
$ chroot /mnt rsync -a /bin/ls .
rsync: [receiver] failed to set permissions on "/.ls.CDExhu": Operation not supported (95)
rsync error: some files/attrs were not transferred (see previous errors) (code 3) at main.c(1330) [sender=3.2.3]
```c
if test "$MACHDEP" != linux; then
AC_CHECK_FUNC(lchmod)
fi
```
So I'm not sure which package is causing the bug here. Should autoconf return false? Should libc implement lchown without the bug? Or should rsync skip lchmod under Linux, like python did?
Rsync in Ubuntu 20.10 fails when /proc isn't mounted, while it worked before. FUNC(lchmod) returns "yes" in 20.10, while it returned "no" before.
This happens because AC_CHECK_
Steps to reproduce:
# Emulate /proc not being mounted
$ mount --bind / /mnt
$ chroot /mnt rsync -a /bin/ls .
rsync: [receiver] failed to set permissions on "/.ls.CDExhu": Operation not supported (95)
rsync error: some files/attrs were not transferred (see previous errors) (code 3) at main.c(1330) [sender=3.2.3]
I reported this issue upstream in https:/ /github. com/WayneD/ rsync/issues/ 109 but the rsync developer says it's a problem in libc, and it might well be.
Simple C code to reproduce the problem without rsync:
printf("lchmod returned: %d\n", lchmod("/tmp/ls", 0755));
If /tmp/ls is e.g. mode=0123, and needs to be changed, lchmod fails when /proc isn't mounted, yet it succeeds if it is mounted.
Python had a similar issue, and they ended up avoiding AC_CHECK_ FUNC(lchmod) under Linux:
https:/ /bugs.python. org/issue34652 /github. com/python/ cpython/ commit/ 69e96910153219b 0b15a18323b917b d74336d229# diff-49473dca26 2eeab3b4a43002a db08b4db31020d1 90caaad1594b47f 1d5daa810R3140
https:/
```c FUNC(lchmod)
if test "$MACHDEP" != linux; then
AC_CHECK_
fi
```
So I'm not sure which package is causing the bug here. Should autoconf return false? Should libc implement lchown without the bug? Or should rsync skip lchmod under Linux, like python did?