Behaviour of kpsea re symlinks to directories
Yann Salmon
contact at yannsalmon.fr
Sun Mar 27 10:09:54 CEST 2022
Hello,
I would not call strictly a bug because this is, iirc, a documented
behaviour, but I would like to raise a question about how
dir_list_search_list (?) manages symlinks to directories.
Consider the following :
mkdir -p ~/texmf/tex/latex/newfolder
touch ~/texmf/tex/latex/newfolder/thing.sty
kpsewhich thing.sty returns our file.
If we do :
mkdir -p /tmp/target
touch /tmp/target/test.sty
ln -s /tmp/target ~/texmf/tex/latex/newfolder/link
Now our local texmf has a symlink to a folder /tmp/target, containing a
test.sty.
kpsewhich test.sty will not find that file, because, iiuc, arriving into
~/texmf/tex/latex/newfolder, it does not see any folder there and thus
does not make a recursive attempt to go beyond the files that are
present (ie. thing.sty).
If we add
mkdir -p ~/texmf/tex/latex/newfolder/dummy
then test.sty will be found as ~/texmf/tex/latex/newfolder/link/test.sty.
I read this was done so for performance reasons.
I can personally live with this, but it is quite a possible barrier for
people, because, unix-wise, creating a symlink to help tools find files
and folders is common and reasonable, but having to create a dummy
folder is not at all. I always feel ill-at-ease when I have to tell
colleagues this…
And this is very difficult to pin down as the source of "texlive does
not find my files despite them being accessible from local texmf !!".
So, is the performance tradeoff for doing so still occurring nowadays ?
Would the performance be significantly decreased if the presence of
symlinks were checked before deciding not to recur, since we list all
files in the folder anyway ?
Thanks in advance for any insight !
Yann Salmon
More information about the tex-live
mailing list.