Skip to content

hadrian: Mitigate mktexfmt race

Ben Gamari requested to merge wip/T25564 into master

At least some versions of Texlive's mktexfmt utility cannot be invoked concurrently in their initial run since they fail to handle failure of mkdir due to racing. Specifically, we see

| Run Xelatex: users_guide.tex => /tmp/extra-dir-9616886274866
| Run Xelatex: Haddock.tex => /tmp/extra-dir-9616886274869
This is XeTeX, Version 3.14159265-2.6-0.999992 (TeX Live 2020) (preloaded format=xelatex)
 restricted \write18 enabled.
kpathsea: Running mktexfmt xelatex.fmt
mktexfmt: mktexfmt is using the following fmtutil.cnf files (in precedence order):
mktexfmt:   /usr/share/texlive/texmf-dist/web2c/fmtutil.cnf
mktexfmt: mktexfmt is using the following fmtutil.cnf file for writing changes:
mktexfmt:   /builds/ghc/ghc/tmp-home/.texlive2020/texmf-config/web2c/fmtutil.cnf
/usr/bin/mktexfmt: mkdir(/builds/ghc/ghc/tmp-home/.texlive2020/texmf-var/web2c/) failed for tree /builds/ghc/ghc/tmp-home/.texlive2020/texmf-var/web2c: File exists at /usr/share/texlive/tlpkg/TeXLive/TLUtils.pm line 937.
I can't find the format file `xelatex.fmt'!

That is two mktexfmt invocations (for the user's guide and haddock builds) attempted to create $HOME/texlive2020/texmf-var/web2c and raced. One of the two mkdir's consequently failed, bringing down the entire build.

We avoid this by ensuring that the first xelatex invocation is always performed serially.

Fixes #25564 (closed).

Merge request reports

Loading