[luatex] Problem with package.searchers in TeXLive 2020

Eduardo Ochs eduardoochs at gmail.com
Thu Nov 5 09:14:26 CET 2020


I am getting a strange error with TeXLive 2020 here that I don't get
with TeXLive 2019. The error is:

  .../2020/texmf-dist/tex/luatex/lualibs/lualibs-basic-merged.lua:378:
    attempt to call a nil value (field 'cpath specification')
  stack traceback:
  .../2020/texmf-dist/tex/luatex/lualibs/lualibs-basic-merged.lua:378:
    in local 'lookup'
  .../2020/texmf-dist/tex/luatex/lualibs/lualibs-basic-merged.lua:402:
    in function
<.../2020/texmf-dist/tex/luatex/lualibs/lualibs-basic-merged.lua:392>
        [C]: in function 'require'
        dednat6/dednat6.lua:58: in main chunk
        [C]: in function 'dofile'
        dednat6load.lua:58: in main chunk
        [C]: in function 'dofile'
        [\directlua]:1: in main chunk.
  l.50 \directlua{dofile "dednat6load.lua"}

and what I understood after a few hours trying to debug this is that
the culprit on my side is this chunk of code:

  package.loaders = package.loaders or package.searchers
  local function lualoader(modulename) ... end
  table.insert(package.loaders, 2, lualoader)

in this file:

  http://angg.twu.net/dednat6/dednat6/lualoader.lua.html

it seems that my code confuses the part of the code in

  /usr/local/texlive/2020/texmf-dist/tex/luatex/lualibs/lualibs-basic-merged.lua

that comes from lualibs-package.lua... I tkdiff'ed the versions of
lualibs-package.lua from TeXLive 2019 and TeXLive 2020 by doing

  tkdiff \
    /usr/local/texlive/2019/texmf-dist/tex/luatex/lualibs/lualibs-package.lua \
    /usr/local/texlive/2020/texmf-dist/tex/luatex/lualibs/lualibs-package.lua

and I found that the function "helpers" contains this code,

  builtin    = {
      ["preload table"]       = searchers[1+offset], -- special case,
built-in libs
      ["path specification"]  = searchers[2+offset],
      ["cpath specification"] = searchers[3+offset],
      ["all in one fallback"] = searchers[4+offset], -- special case,
combined libs
  },

that supposes that users will not insert their own functions in the
middle of the table package.searchers... but there's a LOT in the code
in lualibs-package.lua that I don't understand - including the parts
that changed from 2019 to 2020.

What should I do? Should I change my code that adds a new searcher to
package.searchers? How? All the users of Dednat6 that I have conctact
with use Dednat6 both on recent TeXLives and on TeXLive 2016/2017 -
for Arxiv-related reasons - so I need to find a solution that works on
as many versions of TeXLive as possible...

  Thanks in advance!
    Eduardo Ochs
    http://angg.twu.net/dednat6.html
    http://angg.twu.net/math-b.html


More information about the luatex mailing list.