Subject: Various TeX Live problems

From: Ricardo Wurmus <[email-masked]>
Date: Thu, 05 Sep 2019 23:17:44 +0200

Hi Guix,

on the “wip-texlive” branch I just fixed a serious problem with how
texlive-union generates font maps.  On the “master” branch it just
doesn’t.  On “wip-texlive” we run “updmap-sys” to first remove all
invalid font maps from the default configuration file (which contains
*all* maps, even when they are not installed), and then a second time to
generate maps for all fonts that are actually available (e.g. as inputs
of the texlive union).

This fixes one of the biggest and most confusing problems with TeX Live
in Guix where the various *tex executables would complain about not
being able to find or use certain fonts.  This should be fine now.

To demonstrate it I packaged Guile CV, which depends on a few LaTeX
packages and probes for them at configure time.  This will not work on
“master”, but it does work on “wip-texlive”.

Despite this step forward, we’re still right in the middle of
overhauling how we deal with TeX Live packages, because I keep running
out of steam :) Help in this area would be greatly appreciated.

Off the top of my head these are things that really ought to be changed
or fixed:

- the profile hook in (guix profiles) should use “texlive-union” from
  (gnu packages tex), because it’s rather complicated now, and we don’t
  want to repeat ourselves.  Currently, installing texlive-* packages
  into your profile won’t lead to a fully functional LaTeX installation,
  primarily because of screwed up font maps.

- many texlive-* packages still need to be compared to their expected
  outputs according to $(guix build
  texlive-bin)/share/tlpkg/texlive.tlpdb, especially those with names
  matching “texlive-{latex,generic}-*”.  Packages that have names of the
  newer “texlive-${name}” format (and those using
  “simple-texlive-package”) should be complete.

- the “simple-texlive-package” procedure in (gnu packages tex) could be
  more helpful for cases where custom build phases are required.  Right
  now many packages inherit from a template produced by
  “simple-texlive-package” and then verbosely add to the build phases
  with substitute-keyword-arguments.

- “simple-texlive-package” only installs “doc” files from the sources to
  a separate “doc” output when the package is marked as “trivial”.  When
  texlive-build-system is used it doesn’t do this.

- “simple-texlive-package” requires an awkward custom chdir phase when
  texlive-build-system is supposed to be used.

- “simple-texlive-package” installs the “source” directory to the “out”
  output.  Maybe that’s not what we want.

- “texlive-build-system” causes files to be unpacked to just a single
  location, which can be wrong.  That’s why some packages have a
  “move-files” phase.  The reason is that the build system installs
  files to an output directory (called “build”) and then copies its
  contents to the location specified with the “tex-directory” keyword
  argument.

--
Ricardo