Hitting nix recursion limit with TeX Live 2021

I am hitting a very annoying problem while trying to update TeX Live to 22 March, in preparation for the 2021 final release.

In short: after updating the package info (the file pkgs.nix), I hit error: infinite recursion encountered.

Is there a way to increase the recursion depth? I am fairly confident that there is no infinite recursion involved, just a very deep one caused by too many new packages (and technical debt in the texlive2nix infrastructure).

Or if it is indeed infinite recursion, is there a good way to debug this? Like printing the value causing the actual infinite recursion?

Cc @veprbl

In the past this was caused by functions relying on recursion to process large lists/arttsets in the implementation of the combine. Was fixed by changing them to use some of the builtins.


I have just learned how to use builtins.trace and I am afraid we are dealing with a circular dependency: ctex depends on xecjk which depends on ctex. If I remove ctex from xecjk, evaluation goes through.

We should really switch to proper dependency resolution (i.e. use genericClosure). But I don’t want to do it this close to 22.05!

I’ll remove ctex temporarily, at least we’ll have the fixed hashes in place until we can solve this properly.


Yes, we had that one before too. Might be worth it to notify the upstream.

1 Like

The dependency is indeed intentional, for reference: xecjk depends on ctex since v3.8.3 - tex-live mailing list - TeX Users Group

For the time being, I’ll override the xecjk dependency when pushing the TL2021 update (almost done!). I have some ideas about improving dependency resolution but we should probably do that after 22.05.

1 Like