hadrian: Mitigate mktexfmt race
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).