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.

2 Likes

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.

2 Likes

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