Subject: Re: bug#51252: [core-updates-frozen] lualatex needs additional setup

From: Thiago Jung Bauermann <[email-masked]>
Date: Mon, 22 Nov 2021 22:40:01 -0300

Hello,

I did some investigation about this problem today. Sorry for the trouble.

Em quarta-feira, 20 de outubro de 2021, às 18:45:35 -03, Ricardo Wurmus escreveu:
> “texlive-latex-base” provides that file.  We disable a whole bunch
> of formats that we cannot build that early in the process, and
> then we run fmtutil-sys on the patched file.
> The cause for trouble lies in texlive-kpathsea, which provides
> share/texmf-dist/web2c/fmtutil.cnf
> .  That file states how to build the various fmt files.
> 
> The file in the earlier version of Tex Live contains this line for the
> lualatex format:
> 
>     lualatex luatex language.dat,language.dat.lua lualatex.ini
> 
> the new file (on core-updates-frozen) says this:
> 
>     lualatex luahbtex language.dat,language.dat.lua lualatex.ini
> 
> i.e. it will try to build the lualatex fmt file with luahbtex
> instead of luatex.

Thank you for this analysis!

> I suppose at this point in the build we don’t
> actually have a working luahbtex, so fmtutil-sys doesn’t generate
> the correct lualatex.fmt.

Looking at the build log of ‘texlive-latex-base’ from the core-updates-
frozen branch, LuaHBTeX seems to be functional at the time it is used to 
generate ‘lualatex.fmt’. Comparing it to the build log of the same package 
on master, there are some differences though:

• core-updates-frozen shows the following messages:
  • “No file TS1lmr.fd.”
  • “No file latex2e-first-aid-for-external-files.ltx.”
• core-updates-frozen lists some fonts with strange names and sizes:
  • \font\c__fp_exp_intarray=cmr10 at 0.00002pt
  • \font\c__fp_trig_intarray=cmr10 at 0.00003pt
  • \font\g__regex_state_active_intarray=cmr10 at 0.00005pt
  • \font\g__regex_thread_info_intarray=cmr10 at 0.00006pt
  • \font\g__regex_submatch_prev_intarray=cmr10 at 0.00008pt
  • \font\g__regex_submatch_begin_intarray=cmr10 at 0.00009pt
  • \font\g__regex_submatch_end_intarray=cmr10 at 0.0001pt
  • \font\g__regex_balance_intarray=cmr10 at 0.00012pt
• master instals file at web2c/luatex/lualatex.fmt, while
  core-updates-frozen installs it at web2c/luahbtex/lualatex.fmt.

This last difference coupled with the following excerpt from the TexLive 
news section¹:

  “LuaTeX: Integration with HarfBuzz library, available as new engines 
   luahbtex (used for lualatex) and luajithbtex.”

suggests that the command ‘lualatex’ is supposed to invoke the LuaHBTeX
engine rather than the LuaTeX engine. Indeed, when using LuaHBTeX
explicitly, there’s no error about the format file. Unfortunately, there’s an
error about font loading:

--8<---------------cut here---------------start------------->8---
popigai ⸤env⸥: luahbtex '&lualatex' hello.tex
This is LuaHBTeX, Version 1.13.0 (TeX Live 2021/GNU Guix) 
 restricted system commands enabled.
(./hello.tex
LaTeX2e <2020-10-01> patch level 4
 L3 programming layer <2021-02-18> (/gnu/store/nx4jih5xnm6hzfgvi04w4wkp4pbma8bm-profile/share/texmf-dist/tex/latex/base/article.cls
Document Class: article 2020/04/10 v1.4m Standard LaTeX document class
(/gnu/store/nx4jih5xnm6hzfgvi04w4wkp4pbma8bm-profile/share/texmf-dist/tex/latex/base/size10.clo
luaotfload | db : Font names database not found, generating new one.
luaotfload | db : This can take several minutes; please be patient.
luaotfload | db : Reload initiated (formats: otf,ttf,ttc); reason: File not found: "lmroman10-regular".
! Font \TU/lmr/m/n/10=[lmroman10-regular]:+tlig; at 10pt not loadable: metric data not found or bad.
<to be read again> 
relax 
l.54 \normalsize
              
? 
--8<---------------cut here---------------end--------------->8---

I tried running `luaotfload-tool --update` as suggested on the interwebs
for a similar problem, but I ran into a separate issue with that tool:

--8<---------------cut here---------------start------------->8---
popigai ⸤env⸥: luaotfload-tool --update
...ih5xnm6hzfgvi04w4wkp4pbma8bm-profile/bin/luaotfload-tool:183: module 'alt_getopt' not found:
        no field package.preload['alt_getopt']
        [kpse lua searcher] file not found: 'alt_getopt'
        [kpse C searcher] file not found: 'alt_getopt'
popigai ⸤env⸥: 
--8<---------------cut here---------------end--------------->8---

-- 
Thanks,
Thiago

¹ https://tug.org/texlive/doc/texlive-en/texlive-en.html#news