Subject: [bug#49408] [PATCH core-updates 0/5] Update TeX Live to version 2021.3

From: Thiago Jung Bauermann <[email-masked]>
Date: Sun, 4 Jul 2021 20:44:49 -0300

Hello,

I verified the signatures of the
texlive-20210325-{source,extra,texmf}.tar.xz files. However, I don’t know
how I could verify the authenticity of the many texlive packages that are
obtained via svn checkout, so in those case I merely updated the expected
hash to match the one reported by Guix. It’s worth noting that the svn://
protocol is neither encrypted nor authenticated.

This is how I decided to organize the patch series, feel free to suggest a
different way:

• Patch 1 changes texlive-latex-l3kernel and texlive-latex-l3packages to be
  built with IniTeX so that they don’t create a dependency loop when the
  second patch is applied.

• Patch 2 updates all hashes for all packages except
  texlive-latex-pdftexcmds, which will be updated in the last patch. It also
  include the changes needed to make `guix pull` succeed.

• Patch 3 adds package texlive-latex-l3backend, which is a new dependency
  for texlive-latex-xkeyval.

• Patch 4 makes texlive-latex-xkeyval depend on texlive-latex-l3backend.

• Patch 5 updates the paths and hash for texlive-latex-pdftexcmds, which was
  moved to a new location since TeX Live 2020.

Between patches 2 and 5, texlive packages which don’t get built by
`guix pull` are broken. Please let me know if this is a problem.

I noticed that not all packages in the TeX Live repository are in Guix.
Since I don’t know what criteria are used to decide what to include, I’m not
adding any new package that became available since TeX Live 2020.

I tested that all packages matching “texlive*” build after this series is
applied using the following script:

--8<---------------cut here---------------start------------->8---
#!/bin/bash

set -e

LOG_FILE="$1"
ROUNDS=$2

function verify_package() {
    local package="$1"
    local log_file="$2"

    if ! guix build "$package"; then
        echo "failure while building $package" >> "$log_file"
        return
    fi

    echo "success while building $package" >> "$log_file"

    if [ "$ROUNDS" -eq 0 ]; then
        return
    fi

    if ! guix build --check --rounds=$ROUNDS "$package"; then
        echo "failure while checking $package" >> "$log_file"
        return
    fi

    echo "success while checking $package" >> "$log_file"

    return
}

guix describe >> "$LOG_FILE"
echo rounds = "$ROUNDS" >> "$LOG_FILE"
echo >> "$LOG_FILE"

for package in $(guix package --list-available='^texlive' | cut -f1)
do
    verify_package $package "$LOG_FILE"
done
--8<---------------cut here---------------end--------------->8---

This series is applied on top of the patch submitted for bug 48064¹.

It’s available in branch ‘texlive-2021-pdftex-by-default-patches’ at
https://gitlab.com/bauermann/guix.git

-- 
Thanks,
Thiago

¹ https://issues.guix.gnu.org/48064#15

Thiago Jung Bauermann (5):
  gnu: TeX Live: Use IniTeX to build a couple of packages
  gnu: TeX Live: Update to TeX Live 2021
  gnu: TeX Live: Add texlive-latex-l3backend
  gnu: TeX Live: Add new dependency to texlive-latex-xkeyval
  gnu: TeX Live: Update texlive-latex-pdftexcmds

 gnu/packages/tex.scm                | 292 +++++++++++++++++-----------
 guix/build-system/texlive.scm       |  13 +-
 guix/build/texlive-build-system.scm |  12 +-
 3 files changed, 195 insertions(+), 122 deletions(-)