Let TeXFiles.py handle symbolic links.

Nix (https://nixos.org) is a Unix package manager, which can be used to
install LaTeX on macOS. A peculiarity of Nix is that all packages are
installed into separate directories and the actual directory tree is
then constructed via symlinks.

This interacts badly with the way LyX currently detects files in the
TeX setup, because TeXFiles.py does not follow symlinks. Therefore,
almost nothing is found when using LyX together with Nix’ LaTeX.

Patch from Michael Roitzsch.

(cherry picked from commit 642b4acca1)
This commit is contained in:
Jean-Marc Lasgouttes 2019-06-25 15:46:14 +02:00
parent a1a48472e7
commit b89749ae1d
4 changed files with 23 additions and 2 deletions

View File

@ -494,6 +494,9 @@
@bBernhard Roider
@iE-mail: bernhard.roider () sonnenkinder ! org
Various bug fixes
@bMichael Roitzsch
@iE-mail: reactorcontrol () icloud ! com
Fixes for the Nix package manager
@bJim Rotmalm
@iE-mail: jim.rotmalm () gmail ! com
Swedish translation

View File

@ -1655,6 +1655,14 @@ contributors = [
"29 January 2007",
u"Various bug fixes"),
contributor(u"Michael Roitzsch",
"reactorcontrol () icloud ! com",
"GPL",
"Re: TeXFiles.py compatibility with Nix on macOS",
"m=156146891826580",
"25 June 2019",
u"Fixes for the Nix package manager"),
contributor(u"Jim Rotmalm",
"jim.rotmalm () gmail ! com",
"GPL",

View File

@ -116,7 +116,17 @@ for type in types:
if not os.path.isdir(dir):
continue
# walk down the file hierarchy
for root,path,files in os.walk(dir):
visited = set()
for root,dirs,files in os.walk(dir, followlinks=True):
# prevent inifinite recursion
recurse = []
for dir in dirs:
st = os.stat(os.path.join(root, dir))
key = st.st_dev, st.st_ino
if key not in visited:
visited.add(key)
recurse.append(dir)
dirs[:] = recurse
# check file type
for file in files:
if len(file) > 4 and file[-4:] == file_ext:

View File

@ -75,7 +75,7 @@ Avoid using text mode for unicode symbols representable in math mode (bug 9616).
* INTERNALS
- Fix TeX file listing with the Nix package manager.