Behaviour of kpsea re symlinks to directories

Karl Berry karl at
Sun Mar 27 23:00:29 CEST 2022

Hi Yann,

    I would not call strictly a bug because this is, iirc, a documented 


    So, is the performance tradeoff for doing so still occurring nowadays ? 

Well, (thankfully) nothing has changed about the relevant Unix
filesystem semantics. They still have st_nlink==2 if there are no

    symlinks were checked before deciding not to recur, since we list all 
    files in the folder anyway ?

All entries should not get stat-ed, when there are no subdirs.
(Normally.) Kpse would not recurse into the directory to look for
subdirs. That's the whole point.

Or did I break this when I put in the casefolding madness? To be honest,
I'm not sure.
    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 !!".

Yes, I understand the problem.

    ln -s /tmp/target ~/texmf/tex/latex/newfolder/link

I'm guessing the problem is only seen in TEXMFHOME? In other trees
(aside from the little-used/known TEXMFCONFIG and TEXMFVAR), !! is
specified so searches use ls-R, and the st_nlink trick does not apply --
and symlinks are not followed, or read, I think.

Now, since TEXMFHOME is generally small (relatively speaking), and the
other significant trees use !!, maybe we could turn off the check
without inducing noticeable pain.  People with very large TEXMFHOME's
might want to use !!, but they would probably already be doing that, if
they care.

I feel unsure. Can you try an analogous "symlink search" in TEXMFLOCAL?
Can you run a simple "symlink search" in TEXMFHOME under strace, and see
what stat() is called on?


More information about the tex-live mailing list.