andreas pushed a commit to branch tex-team
in repository guix.

commit 8028fa0612d8a83efc12222f2e0c6679d44ae4b2
Author: Nicolas Goaziou <m...@nicolasgoaziou.fr>
AuthorDate: Sat Mar 29 14:59:25 2025 +0100

    gnu: texlive-libkpathsea: Tweak "texmf.cnf" variables.
    
    * gnu/packages/tex.scm (texlive-libkpathsea): Use XDG variables instead of
    HOME for cache and user configuration.  Re-instate TEXMFLOCAL, which may be
    necessary for external TeX installations.
    (texlive-luatex): Re-instate TEXFLOCAL.
    * gnu/packages/algebra.scm (gap):
    * gnu/packages/assembly.scm (asl):
    (yaehmop):
    * gnu/packages/bioinformatics.scm (discrover):
    * gnu/packages/chez.scm (chez-scheme-for-racket):
    * gnu/packages/engineering.scm (fastcap):
    * gnu/packages/fsf.scm (book-faif):
    * gnu/packages/maths.scm (hypre):
    (stex-boostrap):
    (suitesparse-amd):
    (suitesparse-camd):
    (suitesparse-cholmod):
    (suitesparse-klu):
    (suitesparse-ldl):
    (suitesparse-mongoose):
    (suitesparse-spex):
    (suitesparse-spqr):
    (suitesparse-umfpack):
    * gnu/packages/ocaml.scm (ocaml-bibtex2html):
    (unison):
    * gnu/packages/python-xyz.scm (python-nbconvert):
    * gnu/packages/statistics.scm (r-with-tests)[arguments]: Set TEXMFVAR to
    a writable location.
    
    Change-Id: I3d2d069cf41a92214d9d6fb7f4d54fc81fe6db7a
---
 gnu/packages/algebra.scm        |  1 +
 gnu/packages/assembly.scm       |  2 ++
 gnu/packages/bioinformatics.scm |  4 ++++
 gnu/packages/chemistry.scm      |  1 +
 gnu/packages/chez.scm           |  5 ++++-
 gnu/packages/engineering.scm    |  2 +-
 gnu/packages/fsf.scm            |  3 +++
 gnu/packages/maths.scm          | 14 +++++++++++++-
 gnu/packages/ocaml.scm          |  7 +++++--
 gnu/packages/python-xyz.scm     |  5 +++--
 gnu/packages/statistics.scm     |  3 +++
 gnu/packages/tex.scm            | 18 +++++++++++-------
 12 files changed, 51 insertions(+), 14 deletions(-)

diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm
index ec78ab3018..f928e7943c 100644
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@ -1417,6 +1417,7 @@ xtensor provides:
            ;; removed packages. It needs to be done after 'build since
            ;; it requires the gap binary.
            (lambda _
+             (setenv "TEXMFVAR" "/tmp") ;required to generate fonts
              (with-directory-excursion "doc"
                (invoke "./make_doc"))))
          (add-after 'install 'install-packages
diff --git a/gnu/packages/assembly.scm b/gnu/packages/assembly.scm
index 97cd59c854..0c6d6d668b 100644
--- a/gnu/packages/assembly.scm
+++ b/gnu/packages/assembly.scm
@@ -103,6 +103,8 @@
                    #$output))))
             (add-after 'check 'build-doc
               (lambda* (#:key parallel-build? #:allow-other-keys)
+                ;; Generating font shapes require a writable TEXMFVAR.
+                (setenv "TEXMFVAR" "/tmp")
                 (invoke "make"
                         "-j" (if parallel-build?
                                  (number->string (parallel-job-count))
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index 7fa1043e2b..2c62dcd60b 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -7473,6 +7473,10 @@ data and settings.")
            ;; SOURCE_DATE_EPOCH
            (lambda _
              (setenv "FORCE_SOURCE_DATE" "1")))
+         (add-before 'build 'use-writable-texmfvar
+           ;; Use writable TEXMFVAR to generate fonts.
+           (lambda _
+             (setenv "TEXMFVAR" "/tmp")))
          (add-after 'unpack 'fix-latex-errors
            (lambda _
              (with-fluids ((%default-port-encoding #f))
diff --git a/gnu/packages/chemistry.scm b/gnu/packages/chemistry.scm
index 65e39b73fb..841849d942 100644
--- a/gnu/packages/chemistry.scm
+++ b/gnu/packages/chemistry.scm
@@ -886,6 +886,7 @@ emphasis on quality rather than speed.")
                   (("file=dihedral\\.eps")
                    "file=figs/dihedral.eps"))
                 (setenv "FORCE_SOURCE_DATE" "1")
+                (setenv "TEXMFVAR" "/tmp")
                 (invoke "latexmk" "-pdf" "bind_manual.tex"))))
           (add-after 'install 'install-eht-parms
             (lambda _
diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm
index e6aee9dde5..68cf421da8 100644
--- a/gnu/packages/chez.scm
+++ b/gnu/packages/chez.scm
@@ -402,7 +402,9 @@ will name the threaded machine type unless THREADS? is 
provided as #f."
           (add-after 'configure 'configure-environment-variables
             (lambda args
               ;; mats/6.ms needs HOME to be set:
-              (setenv "HOME" "/tmp")))
+              (setenv "HOME" "/tmp")
+              ;; Writable TEXMFVAR is required to generate font shapes.
+              (setenv "TEXMFVAR" "/tmp")))
           (replace 'build
             ;; need to override target for cross-compilation
             ;; https://racket.discourse.group/t/950/19
@@ -805,6 +807,7 @@ package @code{cs-bootstrap} to bootstrap its initial 
version of Chez Scheme.")
                         ;; the Makefile is referenced in the documentation
                         (copy-recursively "doc" doc-dir)
                         (install-file "ReadMe" doc-dir)
+                        (setenv "TEXMFVAR" "/tmp") ;for generating font shapes
                         (with-directory-excursion "doc"
                           (invoke "make")
                           (install-file "stex.html" doc-dir)
diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm
index f799782802..a90347749c 100644
--- a/gnu/packages/engineering.scm
+++ b/gnu/packages/engineering.scm
@@ -747,7 +747,7 @@ featuring various improvements and bug fixes.")))
              #t))
          (add-before 'install 'make-pdf
            (lambda _
-             (setenv "HOME" "/tmp")     ; FIXME: for texlive font cache
+             (setenv "TEXMFVAR" "/tmp")     ;For texlive font cache
              (with-directory-excursion "doc"
                (and
                 (for-each (lambda (file)
diff --git a/gnu/packages/fsf.scm b/gnu/packages/fsf.scm
index b8817d363e..33181e5927 100644
--- a/gnu/packages/fsf.scm
+++ b/gnu/packages/fsf.scm
@@ -50,6 +50,9 @@
       #:install-plan #~'(("faif-2.0.pdf" "share/doc/faif/"))
       #:phases
       #~(modify-phases %standard-phases
+          (add-after 'unpack 'writable-texmfvar
+            ;; Generating font shapes require a writable TEXMFVAR directory.
+            (lambda _ (setenv "TEXMFVAR" "/tmp")))
           (add-before 'install 'build
             (lambda _
               (invoke "pdflatex" "faif-2.0.tex"))))))
diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm
index eb43944cb2..f0beb5d33d 100644
--- a/gnu/packages/maths.scm
+++ b/gnu/packages/maths.scm
@@ -6283,6 +6283,8 @@ package contains a library with common configuration 
options.")
                                 "set(DUMMY\n")))))
           (add-after 'build 'build-doc
             (lambda _
+              ;; Generating font shapes require a writable TEXMFVAR directory.
+              (setenv "TEXMFVAR" "/tmp")
               (with-directory-excursion "../AMD/Doc"
                 (invoke "make"))))
           ;; Required for suitesparse-umfpack
@@ -6364,6 +6366,8 @@ matrix into block upper triangular form.")
                                 "set(DUMMY\n")))))
           (add-after 'build 'build-doc
             (lambda _
+              ;; Generating font shapes require a writable TEXMFVAR directory.
+              (setenv "TEXMFVAR" "/tmp")
               (with-directory-excursion "../CAMD/Doc"
                 (invoke "make"))))
           (add-after 'install 'install-doc
@@ -6555,6 +6559,7 @@ target_link_libraries(CHOLMOD_static PRIVATE 
${METIS_LIBRARY} ${GKLIB_LIBRARY})"
                 (("SuiteSparse_metis_METIS") "METIS"))))
           (add-after 'build 'build-doc
             (lambda _
+              (setenv "TEXMFVAR" "/tmp") ;for font shapes generation
               (with-directory-excursion "../CHOLMOD/Doc"
                 (invoke "make"))))
           (add-after 'install 'install-doc
@@ -6657,6 +6662,7 @@ direct methods on both real and complex matrices.")
               (substitute* "../KLU/Doc/Makefile"
                 (("\\.\\./\\.\\./BTF/Include/btf.h")
                  (string-append #$suitesparse-btf "/include/btf.h")))
+              (setenv "TEXMFVAR" "/tmp") ;for generating font shapes
               (with-directory-excursion "../KLU/Doc"
                 (invoke "make"))))
           (add-after 'install 'install-doc
@@ -6716,6 +6722,7 @@ for real and complex matrices.")
               (substitute* "../LDL/Doc/Makefile"
                 (("\\.\\./\\.\\./BTF/Include/btf.h")
                  (string-append #$suitesparse-btf "/include/btf.h")))
+              (setenv "TEXMFVAR" "/tmp") ;for font shape generation
               (with-directory-excursion "../LDL/Doc"
                 (invoke "make"))))
           (add-after 'install 'install-doc
@@ -6799,6 +6806,8 @@ for reading and writing sparse matrices in the 
Rutherford/Boeing format.")
                                 "set(DUMMY\n")))))
           (add-after 'build 'build-doc
             (lambda _
+              ;; A writable TEXMFVAR is required for building font shapes.
+              (setenv "TEXMFVAR" "/tmp")
               ;; XeLaTeX fails with .eps graphics
               (with-directory-excursion "../Mongoose/Doc"
                 (for-each
@@ -6880,6 +6889,7 @@ edge cuts using a coarsening and refinement framework.")
                   ")\nset(DUMMY\n")))))
           (add-after 'build 'build-doc
             (lambda _
+              (setenv "TEXMFVAR" "/tmp") ;for font shapes generation
               (with-directory-excursion "../SPEX/Doc"
                 (invoke "make"))))
           (add-after 'install 'install-doc
@@ -6949,6 +6959,7 @@ LU factorization for solving unsymmetric sparse linear 
systems.")
                   ")\nset(DUMMY\n")))))
           (add-after 'build 'build-doc
             (lambda _
+              (setenv "TEXMFVAR" "/tmp") ;for generating font shapes
               (with-directory-excursion "../SPQR/Doc"
                 (invoke "make"))))
           (add-after 'install 'install-doc
@@ -7010,6 +7021,7 @@ matrices.")
                   ")\nset(DUMMY\n")))))
           (add-after 'build 'build-doc
             (lambda _
+              (setenv "TEXMFVAR" "/tmp") ;for generating font shapes
               (with-directory-excursion "../UMFPACK/Doc"
                 (invoke "make"))))
           (add-after 'install 'install-doc
@@ -7801,7 +7813,7 @@ set.")
                                                 configure-flags)))))))
                (add-after 'build 'build-docs
                  (lambda _
-                   (setenv "HOME" (getcwd))
+                   (setenv "TEXMFVAR" "/tmp")
                    (invoke "make" "-C" "docs")))
                (replace 'check
                  (lambda* (#:key tests? #:allow-other-keys)
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 5e4c08667a..01aef23b2a 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -1457,6 +1457,9 @@ software engineering.")
     (arguments
      `(#:phases
          (modify-phases %standard-phases
+           (add-before 'build 'writable-texmfvar
+             ;; Generating font shapes requires a writable TEXMFVAR.
+             (lambda _ (setenv "TEXMFVAR" "/tmp")))
            (add-after 'install 'install-doc
              (lambda* (#:key outputs #:allow-other-keys)
                (let ((doc (string-append (assoc-ref outputs "out")
@@ -9459,8 +9462,8 @@ SHA384, SHA512, Blake2b, Blake2s and RIPEMD160.")
           (add-after 'unpack 'patch-/bin/sh
             (lambda _
               (substitute* "configure" (("/bin/sh") (which "bash")))
-              ;; mktexfmt needs writable home directory.
-              (setenv "HOME" (getcwd)))))))
+              ;; mktexfmt needs writable TEXMFVAR directory.
+              (setenv "TEXMFVAR" "/tmp"))))))
     (native-inputs
      (list (texlive-local-tree
             (list texlive-infwarerr
diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm
index 3f303f2e43..32a01d70a2 100644
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@ -19341,8 +19341,9 @@ time.")
                                      (getenv "JUPYTER_PATH")))
               ;; jupyter-core demands this
               (setenv "JUPYTER_PLATFORM_DIRS" "1")
-              ;; Tests need a writable HOME.
-              (setenv "HOME" "/tmp"))))))
+              ;; Tests need writable HOME and TEXMFVAR.
+              (setenv "HOME" "/tmp")
+              (setenv "TEXMFVAR" "/tmp"))))))
     (inputs
      (list inkscape/pinned pandoc))
     (native-inputs
diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm
index 3f6e6aacff..493bec1e6c 100644
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@ -374,6 +374,9 @@ as.POSIXct(if (\"\" != Sys.getenv(\"SOURCE_DATE_EPOCH\")) {\
           (add-before 'check 'set-home
             ;; Some tests require that HOME be set.
             (lambda _ (setenv "HOME" "/tmp")))
+          (add-before 'build 'use-writable-texmfvar
+           ;; Use writable TEXMFVAR to generate fonts.
+           (lambda _ (setenv "TEXMFVAR" "/tmp")))
           (add-after 'build 'make-info
             (lambda _ (invoke "make" "info")))
           (add-after 'build 'install-info
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 08c8b125be..9f20945925 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -340,14 +340,18 @@ should not be installed in a profile.")
               (substitute* "texk/kpathsea/texmf.cnf"
                 (("^TEXMFROOT = .*") "TEXMFROOT = {$GUIX_TEXMF}/..\n")
                 (("^TEXMFDIST = .*") "TEXMFDIST = {$GUIX_TEXMF}\n")
+                ;; Use XDG recommendations for local variables.  Also ignore
+                ;; system-wide cache, which is not writable; use local one
+                ;; instead, i.e., "$XDG_CACHE_HOME/.texliveYYYY/texmf-var/".
+                (("^TEXMFVAR = ~/") "TEXMFVAR = $XDG_CACHE_HOME/")
+                (("^TEXMFCONFIG = ~/") "TEXMFCONFIG = $XDG_CONFIG_HOME/")
+                (("^TEXMFCACHE = .*") "TEXMFCACHE = $TEXMFVAR\n")
                 ;; "ls-R" files are to be expected only in the TEXMFDIST
-                ;; directories.
+                ;; directories.  TEXMFLOCAL is not necessary for Guix, but
+                ;; could be required anyway by external TeX installations.
                 (("^TEXMF = .*")
-                 "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/".
-                (("^TEXMFCACHE = .*") "TEXMFCACHE = $TEXMFVAR\n")
+                 "TEXMF = 
{$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,!!TEXMFLOCAL,TEXMFSYSVAR,TEXMFSYSCONFIG,!!$TEXMFDIST}\n")
+                (("^TEXMFDBS = .*") "TEXMFDBS = 
{!!$TEXMFLOCAL,!!$TEXMFDIST}\n")
                 ;; Set TEXMFCNF.  Since earlier values of variables have
                 ;; precedence over later ones, insert the desired value first.
                 (("^TEXMFCNF =")
@@ -65882,7 +65886,7 @@ iterate, apply, etc., to the table.")
                 (("TEXMFSYSCONFIG *=.*")
                  "TEXMFSYSCONFIG = \"$TEXMFDIST/../texmf-config\",\n")
                 (("TEXMF *=.*")
-                 "TEXMF = 
\"{$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,$TEXMFSYSCONFIG,$TEXMFSYSVAR,$TEXMFDIST}\",\n")))))))
+                 "TEXMF = 
\"{$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,$TEXMFLOCAL,$TEXMFSYSCONFIG,$TEXMFSYSVAR,$TEXMFDIST}\",\n")))))))
     (native-inputs
      (list (if (target-64bit?) libfaketime datefudge)
            texlive-kpathsea))

Reply via email to