From 11900d109a617d07e0085a25e747da76fcb12c2e Mon Sep 17 00:00:00 2001 From: Ricardo Wurmus Date: Fri, 5 Jul 2019 17:48:45 +0200 Subject: [PATCH] gnu: texlive-union: Build font maps. * gnu/packages/tex.scm (texlive-union)[arguments]: Execute updmap to generate missing font maps. [native-inputs]: Add coreutils, sed, and updmap.cfg. --- gnu/packages/tex.scm | 38 ++++++++++++++++++++++++++++++++++---- 1 file changed, 34 insertions(+), 4 deletions(-) diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index ec35315f22..85c72e006a 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -2387,16 +2387,18 @@ standard LaTeX packages." #:builder (begin (use-modules (ice-9 match) + (ice-9 popen) (srfi srfi-26) (guix build union) (guix build utils) (guix build texlive-build-system)) (let* ((out (assoc-ref %outputs "out")) (texmf.cnf (string-append out "/share/texmf-dist/web2c/texmf.cnf"))) - ;; Build a modifiable union of all inputs (but exclude bash) + ;; Build a modifiable union of all inputs (but exclude bash and + ;; the updmap.cfg file) (match (filter (match-lambda ((name . _) - (not (string=? "bash" name)))) + (not (member name '("bash" "updmap.cfg"))))) %build-inputs) (((names . directories) ...) (union-build (assoc-ref %outputs "out") @@ -2413,19 +2415,47 @@ standard LaTeX packages." (string-append "TEXMFROOT = " out "/share\n")) (("^TEXMF = .*") "TEXMF = $TEXMFROOT/share/texmf-dist\n")) - (setenv "PATH" (string-append (assoc-ref %build-inputs "bash") - "/bin")) + (setenv "PATH" (string-append + (assoc-ref %build-inputs "bash") "/bin:" + (assoc-ref %build-inputs "coreutils") "/bin:" + (string-append out "/bin"))) (for-each (cut wrap-program <> `("TEXMFCNF" ":" suffix (,(dirname texmf.cnf))) `("TEXMF" ":" suffix (,(string-append out "/share/texmf-dist")))) (find-files (string-append out "/bin") ".*")) + + ;; Remove invalid maps from config file. + (let ((port (open-pipe* OPEN_WRITE "updmap-sys" + "--syncwithtrees" + "--nohash" + (assoc-ref %build-inputs "updmap.cfg")))) + (display "Y\n" port) + (when (not (zero? (status:exit-val (close-pipe port)))) + (error "failed to filter updmap.cfg"))) + ;; Generate maps. + (invoke "updmap-sys" "--force" + (string-append out "/share/texmf-config/web2c/updmap.cfg")) #t)))) (inputs `(("bash" ,bash) ,@(map (lambda (package) (list (package-name package) package)) (append default-packages packages)))) + (native-inputs + `(("coreutils" ,coreutils) + ("sed" ,sed) + ("updmap.cfg" + ,(origin + (method url-fetch) + (uri (string-append "https://tug.org/svn/texlive/tags/" + %texlive-tag "/Master/texmf-dist/web2c/updmap.cfg" + "?revision=" (number->string %texlive-revision))) + (file-name (string-append "updmap.cfg-" + (number->string %texlive-revision))) + (sha256 + (base32 + "06mwpy5i218g5k3sf4gba0fmxgas82hkzx9fhwn67z5ik37d8apq")))))) (home-page (package-home-page texlive-bin)) (synopsis "Union of TeX Live packages") (description "This package provides a subset of the TeX Live -- 2.21.0