andreas pushed a commit to branch tex-team in repository guix. commit 280479b8d3b81bda10ff96a4217d396165db9263 Author: Nicolas Goaziou <m...@nicolasgoaziou.fr> AuthorDate: Mon Feb 10 10:43:57 2025 +0100
gnu: texlive-libkpathsea: Enforce ls-R usage by default. Fixes: https://issues.guix.gnu.org/75893 * gnu/packages/tex.scm (texlive-libkpathsea): Set TEXMF so that ls-R database is mandatory and must contain the file looked after in the TeX Live tree. * guix/build/texlive-build-system.scm (configure-texmf): Relax requirements for "ls-R" database. Renamed from `set-texmfvar'. (%standard-phases): Apply phase renaming. * gnu/packages/python-xyz.scm (python-nbconvert)[native-inputs]: Add TeX Live packages required for tests to pass since propagated packages are no longer accessible during build. * gnu/packages/books.scm (book-sparc)[inputs]: Move TeX Live related inputs to... [native-inputs]: ... here, and wrap them within texlive-local-tree for the same reason as above. Change-Id: I3430bc84ce35f4aa8f0537b512f472ef88f8e5e9 --- gnu/packages/books.scm | 125 ++++++++++++++++++------------------ gnu/packages/python-xyz.scm | 23 ++++++- gnu/packages/tex.scm | 7 +- guix/build/texlive-build-system.scm | 19 ++++-- 4 files changed, 98 insertions(+), 76 deletions(-) diff --git a/gnu/packages/books.scm b/gnu/packages/books.scm index 9485e03725..0fd80f6985 100644 --- a/gnu/packages/books.scm +++ b/gnu/packages/books.scm @@ -63,70 +63,69 @@ lilypond perl python-pygments + (texlive-local-tree + (list texlive-acronym + texlive-adjustbox + texlive-biblatex + texlive-bibtex + texlive-bibtexperllibs + texlive-bigfoot + texlive-chngcntr + texlive-circuitikz + texlive-collection-langcyrillic + texlive-csquotes + texlive-fancyvrb + texlive-fontspec + texlive-glossaries + texlive-glossaries-english + texlive-glossaries-extra + texlive-koma-script + texlive-lilyglyphs + texlive-minted + texlive-multirow + texlive-pgf + texlive-pgfplots + texlive-subfiles + texlive-svg + texlive-t1utils + texlive-textpos + texlive-transparent + texlive-trimspaces + texlive-upquote + texlive-xetex)) which)) - (inputs - (list font-liberation - git - texlive-acronym - texlive-adjustbox - texlive-biblatex - texlive-bibtex - texlive-bibtexperllibs - texlive-bigfoot - texlive-chngcntr - texlive-circuitikz - texlive-collection-langcyrillic - texlive-csquotes - texlive-fancyvrb - texlive-fontspec - texlive-glossaries - texlive-glossaries-english - texlive-glossaries-extra - texlive-koma-script - texlive-lilyglyphs - texlive-minted - texlive-multirow - texlive-pgf - texlive-pgfplots - texlive-subfiles - texlive-svg - texlive-t1utils - texlive-textpos - texlive-transparent - texlive-trimspaces - texlive-upquote - texlive-xetex)) - (arguments - (list #:tests? #f ; no tests - #:modules (append %default-gnu-imported-modules - '((ice-9 regex) - (srfi srfi-1))) - #:phases #~(modify-phases %standard-phases - (add-before 'build 'configure-environment - (lambda* (#:key inputs make-flags parallel-build? - #:allow-other-keys) - (let* ((src (assoc-ref inputs "source")) - (rx (make-regexp "/gnu/store/(.*)-book-sparc-.*")) - (src-hash (match:substring (regexp-exec rx src) 1)) - (random-seed - (fold (lambda (ch prev) - (+ (char->integer ch) - prev)) - 0 - (string->list src-hash)))) - (setenv "RANDOMSEED" (number->string random-seed)) - (setenv "REPRODUCIBILITY" "yes")))) - (replace 'install - (lambda _ - (let ((doc-dir (string-append #$output - "/share/doc/sparc/"))) - (mkdir-p doc-dir) - (copy-file "sparc.ru.pdf" - (string-append doc-dir - "sparc.ru.pdf")) - (copy-file "sparc.en.pdf" - (string-append doc-dir - "sparc.en.pdf")))))))) + (inputs (list font-liberation git)) + (arguments + (list #:tests? #f ; no tests + #:modules (append %default-gnu-imported-modules + '((ice-9 regex) + (srfi srfi-1))) + #:phases #~(modify-phases %standard-phases + (add-before 'build 'configure-environment + (lambda* (#:key inputs make-flags parallel-build? + #:allow-other-keys) + (let* ((src (assoc-ref inputs "source")) + (rx (make-regexp "/gnu/store/(.*)-book-sparc-.*")) + (src-hash (match:substring (regexp-exec rx src) 1)) + (random-seed + (fold (lambda (ch prev) + (+ (char->integer ch) + prev)) + 0 + (string->list src-hash)))) + (setenv "RANDOMSEED" (number->string random-seed)) + (setenv "REPRODUCIBILITY" "yes")))) + (replace 'install + (lambda _ + (let ((doc-dir (string-append #$output + "/share/doc/sparc/"))) + (mkdir-p doc-dir) + (copy-file "sparc.ru.pdf" + (string-append doc-dir + "sparc.ru.pdf")) + (copy-file "sparc.en.pdf" + (string-append doc-dir + "sparc.en.pdf")))))))) (home-page "https://github.com/artyom-poptsov/SPARC") (synopsis "Book on combining art and technology") (description diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index c877bafd5d..112bb2aefd 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -19352,7 +19352,28 @@ time.") ;; Adding ipywidgets would create a cycle. ;;python-ipywidgets python-pytest - python-pytest-xdist)) + python-pytest-xdist + (texlive-local-tree + (list texlive-adjustbox + texlive-booktabs + texlive-caption + texlive-enumitem + texlive-eurosym + texlive-fancyvrb + texlive-float + texlive-fontspec + texlive-grffile + texlive-jknapltx + texlive-parskip + texlive-pdfcol + texlive-rsfs + texlive-soul + texlive-tcolorbox + texlive-titling + texlive-ulem + texlive-unicode-math + texlive-upquote + texlive-xetex)))) (propagated-inputs (list python-beautifulsoup4 python-bleach diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index 5aaac35e53..f0bea9f9a0 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -326,12 +326,9 @@ should not be installed in a profile.") (("^TEXMFROOT = .*") "TEXMFROOT = {$GUIX_TEXMF}/..\n") (("^TEXMFDIST = .*") "TEXMFDIST = {$GUIX_TEXMF}\n") ;; "ls-R" files are to be expected only in the TEXMFDIST - ;; directories. However, those are not always present, e.g., - ;; when building a package with `texlive-build-system' or when - ;; generating a profile. Since both situations need to be - ;; handled, drop the "!!" prefixes. + ;; directories. (("^TEXMF = .*") - "TEXMF = {$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,$TEXMFSYSCONFIG,$TEXMFSYSVAR,$TEXMFDIST}\n") + "TEXMF = {$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,$TEXMFSYSCONFIG,$TEXMFSYSVAR,!!$TEXMFDIST}\n") (("^TEXMFDBS = .*") "TEXMFDBS = {$TEXMFDIST}\n") ;; Ignore system-wide cache, which is not writable. Use local ;; one instead, i.e. "$HOME/.texliveYYYY/texmf-var/". diff --git a/guix/build/texlive-build-system.scm b/guix/build/texlive-build-system.scm index 25b64991f7..90936c178d 100644 --- a/guix/build/texlive-build-system.scm +++ b/guix/build/texlive-build-system.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2017 Ricardo Wurmus <rek...@elephly.net> ;;; Copyright © 2021 Maxim Cournoyer <maxim.courno...@gmail.com> ;;; Copyright © 2021 Thiago Jung Bauermann <bauerm...@kolabnow.com> -;;; Copyright © 2023, 2024 Nicolas Goaziou <m...@nicolasgoaziou.fr> +;;; Copyright © 2023-2025 Nicolas Goaziou <m...@nicolasgoaziou.fr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -91,11 +91,16 @@ runfile to replace. If a file has no matching runfile, it is ignored." ((command-regexp _ command) (which command)))))) -(define* (set-texmfvar #:rest _) - "Set TEXMFVAR to a writable location." - ;; Default value is relative to $HOME, which is not set during build. This - ;; location is used for generating font metrics or building documentation. - (setenv "TEXMFVAR" (string-append (getcwd) "/texmf-var"))) +(define* (configure-texmf #:rest _) + "Ensure TEXMFVAR is writable and \"ls-R\" database is not required." + ;; Default TEXMFVAR value is relative to $HOME, which is not set during + ;; build. This location is used for generating font metrics or building + ;; documentation. + (setenv "TEXMFVAR" (string-append (getcwd) "/texmf-var")) + ;; By default, a "ls-R" file must exist in TEXMFDIST. However, it isn't + ;; generated in the TeX Live tree used to build a package. Consequently, + ;; relax this requirement. + (setenv "TEXMF" "{$TEXMFSYSVAR,$TEXMFDIST}")) (define* (delete-drv-files #:rest _) "Delete pre-generated \".drv\" files in order to prevent build failures." @@ -297,7 +302,7 @@ runfile to replace. If a file has no matching runfile, it is ignored." (delete 'bootstrap) (delete 'configure) (add-after 'unpack 'patch-shell-scripts patch-shell-scripts) - (add-before 'build 'set-texmfvar set-texmfvar) + (add-before 'build 'configure-texmf configure-texmf) (add-before 'build 'delete-drv-files delete-drv-files) (add-after 'delete-drv-files 'generate-font-metrics generate-font-metrics) (replace 'build build)