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)

Reply via email to