Strange behaviour with winsymlinks:native
David Allsopp
David.Allsopp@cl.cam.ac.uk
Wed Oct 14 14:56:47 GMT 2020
I've been doing some working around the problems with Cygwin 3.1.5+ WSL
junction points in Docker and found three unexpected pieces of behaviour
with CYGWIN=winsymlinks:native
In all cases, these work as expected with the default symlink behaviour
(i.e. CYGWIN unset or without a winsymlinks option).
1. Relative paths get unnecessarily resolved
mkdir -p foo/bar
cd foo/bar
touch baz
CYGWIN='winsymlinks:native' ln -s ../bar/baz link
readlink link
Result is baz, not ../bar/baz
2a. Links in the magic mount directories (/usr/bin and /usr/lib) get extra
bits added (source is a default mount):
cd /usr/lib
CYGWIN='winsymlinks:native' ln -s ../share/terminfo terminfo2
readlink terminfo2
Result is ../usr/share/terminfo, which makes it valid from /lib (the "real"
directory) but not in the virtual one
2b. Same but where target is a default mount
cd /usr/libexec/p11-kit
CYGWIN='winsymlinks:native' ln -s ../../bin/update-ca-trust
trust-extract-compat2
readlink trust-extract-compat2
Result is ../../../bin/update-ca-trust, again it seems to be computing an
extra level back to the "real" lib directory
Are these behaviours expected? I can create those symbolic links manually
with mklink with no problem, so I'm wondering if it's an outright bug or an
unexpected consequence of something else.
Thanks!
David
More information about the Cygwin
mailing list