~ruther/guix-local

91a81927345394c9f52bca6ecf743f48cd24d250 — Liliana Marie Prikler 1 year, 1 month ago f408a00
gnu: texlive-libkpathsea: Add definitions for XDG paths.

Without these paths set, if they are unset in the environment, jobs that need
to read from/write to TEXMFVAR or TEXMFCONFIG will fail.  If set, environment
variables take precedence.

* gnu/packages/tex.scm (texlive-libkpathsea): Add replacement, pointing to…
(texlive-libkpathsea/fixed): … this.  Add definitions for XDG_CACHE_HOME and
XDG_CONFIG_HOME.

Reviewed-by: Nicolas Goaziou <mail@nicolasgoaziou.fr>
1 files changed, 44 insertions(+), 0 deletions(-)

M gnu/packages/tex.scm
M gnu/packages/tex.scm => gnu/packages/tex.scm +44 -0
@@ 296,6 296,9 @@ should not be installed in a profile.")
(define-public texlive-libkpathsea
  (package
    (name "texlive-libkpathsea")
    ;; TODO: ungraft on tex-team or a dedicated branch,
    ;; integrating the missing definitions.
    (replacement texlive-libkpathsea/fixed)
    (version (package-version texlive-source))
    (source
     (origin


@@ 395,6 398,47 @@ should not be installed in a profile.")
of user-specified directories similar to how shells look up executables.")
    (license license:lgpl2.1)))

(define texlive-libkpathsea/fixed
  (package
    (inherit texlive-libkpathsea)
    (arguments
     (substitute-keyword-arguments (package-arguments texlive-libkpathsea)
       ((#:phases phases)
        #~(modify-phases #$phases
            (replace 'customize-texmf.cnf
              (lambda _
                (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 = ~/\\.")
                   (string-append "XDG_CACHE_HOME = ~/.cache\n"
                                  "TEXMFVAR = $XDG_CACHE_HOME/"))
                  (("^TEXMFCONFIG = ~/\\.")
                   (string-append "XDG_CONFIG_HOME = ~/.config\n"
                                  "TEXMFCONFIG = $XDG_CONFIG_HOME/"))
                  (("^TEXMFCACHE = .*") "TEXMFCACHE = $TEXMFVAR\n")
                  ;; "ls-R" files are to be expected only in the TEXMFDIST
                  ;; directories.  TEXMFLOCAL is not necessary for Guix, but
                  ;; could be required anyway by external TeX installations.
                  (("^TEXMF = .*")
                   "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 =")
                   (string-append
                    "TEXMFCNF = " #$output "/share/texmf-dist/web2c\n"
                    "TEXMFCNF ="))
                  ;; Help TeX finding fonts installed on the system.
                  (("^OSFONTDIR = .*") "OSFONTDIR = {$XDG_DATA_DIRS}\n")
                  ;; Don't truncate lines.
                  (("^error_line = .*$") "error_line = 254\n")
                  (("^half_error_line = .*$") "half_error_line = 238\n")
                  (("^max_print_line = .*$") "max_print_line = 1000\n"))))))))))

(define-public texlive-libptexenc
  (package
    (name "texlive-libptexenc")