summary refs log tree commit diff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2023-05-17 16:57:16 +0200
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2023-07-18 18:12:27 +0200
commit8c0d071dfce6476f7db769be2c747813cca29d62 (patch)
treebe432b0af697a2f711d59f6c380ad013ec2b4bca
parentb741baa6ee671fde3d4835eb71baab25121eac89 (diff)
downloadguix-8c0d071dfce6476f7db769be2c747813cca29d62.tar.gz
gnu: texlive-latex-base: Refresh package definition.
* gnu/packages/tex.scm (texlive-latex-base): Remove SIMPLE-TEXLIVE-PACKAGE
call.
[build-system]: Use TEXLIVE-BUILD-SYSTEM.
[arguments]: Use G-expressions.
<#:phases>: Remove unnecessary phase.
[native-inputs]: Add TEXLIVE-ETEX, TEXLIVE-LUATEX. Remove
TEXLIVE-LUATEXCONFIG.  Remove labels.
-rw-r--r--gnu/packages/tex.scm417
1 files changed, 191 insertions, 226 deletions
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 381f7061c0..412d46dd3f 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -3311,235 +3311,200 @@ formats.")
     (license license:lppl)))
 
 (define-public texlive-latex-base
-  (let ((template (simple-texlive-package
-                   "texlive-latex-base"
-                   (list "/doc/latex/base/"
-                         "/source/latex/base/"
-                         ;; Almost all files in /tex/latex/base are generated, but
-                         ;; these are not:
-                         "/tex/latex/base/idx.tex"
-                         "/tex/latex/base/lablst.tex"
-                         "/tex/latex/base/ltnews.cls"
-                         "/tex/latex/base/ltxcheck.tex"
-                         "/tex/latex/base/ltxguide.cls"
-                         "/tex/latex/base/minimal.cls"
-                         "/tex/latex/base/sample2e.tex"
-                         "/tex/latex/base/small2e.tex"
-                         "/tex/latex/base/testpage.tex"
-                         "/tex/latex/base/texsys.cfg")
-                   (base32
-                    "0msyjz0937rc7hs77v6la152sdiwd73qj41z1mlyh0m3dns9qz4g")
-                   #:trivial? #t)))
-    (package
-      (inherit template)
-      (arguments
-       (substitute-keyword-arguments (package-arguments template)
-         ((#:modules modules '())
-          '((guix build gnu-build-system)
-            (guix build utils)
-            (ice-9 match)
-            (srfi srfi-26)))
-         ((#:phases phases)
-          `(modify-phases ,phases
-             ;; The literal tab in the dtx file is translated to the string
-             ;; "^^I" in the generated Lua file, which causes a syntax error.
-             (add-after 'unpack 'fix-lua-sources
-               (lambda _
-                 (substitute* "source/latex/base/ltluatex.dtx"
-                   (("	") "  "))))
-             (replace 'build
-               (lambda* (#:key inputs #:allow-other-keys)
-                 ;; Find required fonts
-                 (setenv "TFMFONTS"
+  (package
+    (name "texlive-latex-base")
+    (version (number->string %texlive-revision))
+    (source (texlive-origin
+             name version
+             (list "doc/latex/base/" "makeindex/latex/"
+                   "source/latex/base/" "tex/latex/base/")
+             (base32
+              "0k2b6qi281cl4zml6l537iyps1zwaq7pip81qq8vlkhb9h5ggpnw")))
+    (build-system texlive-build-system)
+    (outputs '("out" "doc"))
+    (arguments
+     (list
+      #:texlive-latex-base #f
+      #:modules '((guix build texlive-build-system)
+                  (guix build utils)
+                  (ice-9 match)
+                  (srfi srfi-26))
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; The literal tab in the dtx file is translated to the string "^^I"
+          ;; in the generated Lua file, which causes a syntax error.
+          (add-after 'unpack 'fix-lua-sources
+            (lambda _
+              (substitute* "source/latex/base/ltluatex.dtx"
+                (("\t") "  "))))
+          (replace 'build
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; Find required fonts
+              (setenv "TFMFONTS"
+                      (string-join
+                       (map (match-lambda
+                              ((pkg-name . dir)
+                               (string-append
+                                (assoc-ref inputs pkg-name)
+                                "/share/texmf-dist/fonts/tfm/public"
+                                dir)))
+                            '(("texlive-etex" . "/etex")
+                              ("texlive-cm" . "/cm")
+                              ("texlive-latex-fonts" . "/latex-fonts")
+                              ("texlive-knuth-lib" . "/knuth-lib")))
+                       ":"))
+              (let ((cwd (getcwd)))
+                (setenv "TEXINPUTS"
+                        (string-append
+                         cwd "//:"
+                         cwd "/source/latex/base//:"
+                         cwd "/build:"
                          (string-join
-                          (map (match-lambda
-                                 ((pkg-name . dir)
-                                  (string-append
-                                   (assoc-ref inputs pkg-name)
-                                   "/share/texmf-dist/fonts/tfm/public"
-                                   dir)))
-                               '(("texlive-etex" . "/etex")
-                                 ("texlive-cm" . "/cm")
-                                 ("texlive-latex-fonts" . "/latex-fonts")
-                                 ("texlive-knuth-lib" . "/knuth-lib")))
-                          ":"))
-                 (let ((cwd (getcwd)))
-                   (setenv "TEXINPUTS"
-                           (string-append
-                            cwd "//:"
-                            cwd "/source/latex/base//:"
-                            cwd "/build:"
-                            (string-join
-                             (map (match-lambda ((_ . dir) dir)) inputs)
-                             "//:")))
-                   (setenv "LUAINPUTS" (string-append cwd "/build:")))
-
-                 ;; This is the actual build step.
-                 (mkdir "build")
-                 (invoke "tex" "-ini" "-interaction=scrollmode"
-                         "-output-directory=build" "unpack.ins")
-
-                 ;; XXX: We can't build all formats at this point, nor are they
-                 ;; part of the LaTeX base, so we disable them.  Actually, we
-                 ;; should be running this all in a profile hook, so that only
-                 ;; selected formats and hyphenation patterns are included, but it
-                 ;; takes long and TeX Live isn't designed to be modular like
-                 ;; that.  Everything operates on a shared directory, which we
-                 ;; would only have at profile generation time.
-                 (let ((disabled-formats
-                        '("aleph aleph" "lamed aleph" "uptex uptex" "euptex euptex"
-                          "eptex eptex" "ptex ptex" "pdfxmltex pdftex" "platex eptex"
-                          "platex-dev eptex" "uplatex-dev euptex"
-                          "csplain pdftex" "mf mf-nowin" "mex pdftex" "pdfmex pdftex"
-                          "luacsplain luatex" "optex luatex"
-                          ;; LuaJIT is not ported to powerpc64le* or riscv64 yet and
-                          ;; building these fail on powerpc.
-                          ,@(if (or (target-powerpc?)
-                                    (target-riscv64?))
+                          (map (match-lambda ((_ . dir) dir)) inputs)
+                          "//:")))
+                (setenv "LUAINPUTS" (string-append cwd "/build:")))
+
+              ;; This is the actual build step.
+              (mkdir "build")
+              (invoke "tex" "-ini" "-interaction=scrollmode"
+                      "-output-directory=build" "unpack.ins")
+
+              ;; XXX: We can't build all formats at this point, nor are they
+              ;; part of the LaTeX base, so we disable them.  Actually, we
+              ;; should be running this all in a profile hook, so that only
+              ;; selected formats and hyphenation patterns are included, but it
+              ;; takes long and TeX Live isn't designed to be modular like
+              ;; that.  Everything operates on a shared directory, which we
+              ;; would only have at profile generation time.
+              (let ((disabled-formats
+                     '("aleph aleph" "lamed aleph" "uptex uptex" "euptex euptex"
+                       "eptex eptex" "ptex ptex" "pdfxmltex pdftex" "platex eptex"
+                       "platex-dev eptex" "uplatex-dev euptex"
+                       "csplain pdftex" "mf mf-nowin" "mex pdftex" "pdfmex pdftex"
+                       "luacsplain luatex" "optex luatex"
+                       ;; LuaJIT is not ported to powerpc64le* or riscv64 yet and
+                       ;; building these fail on powerpc.
+                       #$@(if (or (target-powerpc?)
+                                  (target-riscv64?))
                               '("luajittex" "luajithbtex" "mfluajit") '())
-                          "cont-en xetex" "cont-en pdftex" "pdfcsplain xetex"
-                          "pdfcsplain pdftex" "pdfcsplain luatex" "cslatex pdftex"
-                          "mptopdf pdftex" "uplatex euptex" "jadetex pdftex"
-                          "amstex pdftex" "pdfcslatex pdftex" "lollipop tex"
-                          "xmltex pdftex" "pdfjadetex pdftex" "eplain pdftex"
-                          "texsis pdftex" "mltex pdftex" "utf8mex pdftex")))
-                   (mkdir "web2c")
-                   (install-file (string-append
-                                  (assoc-ref inputs "texlive-kpathsea")
-                                  "/share/texmf-dist/web2c/fmtutil.cnf")
-                                 "web2c")
-                   (make-file-writable "web2c/fmtutil.cnf")
-                   (substitute* "web2c/fmtutil.cnf"
-                     (((string-append "^(" (string-join disabled-formats "|") ")") m)
-                      (string-append "#! " m))
-                     (("translate-file=cp227")
-                      (format #f "translate-file=~a/share/texmf-dist/web2c/cp227"
-                              (assoc-ref inputs "texlive-kpathsea")))))
-                 (invoke "fmtutil-sys" "--all"
-                         "--fmtdir=web2c"
-                         (string-append "--cnffile=web2c/fmtutil.cnf"))
-                 ;; We don't actually want to install it.
-                 (delete-file "web2c/fmtutil.cnf")))
-             (add-after 'install 'install-more
-               (lambda* (#:key inputs outputs #:allow-other-keys)
-                 (let* ((out (assoc-ref outputs "out"))
-                        (root (string-append out "/share/texmf-dist"))
-                        (target (string-append root "/tex/latex/base"))
-                        (web2c (string-append root "/web2c"))
-                        (makeindex (string-append root "/makeindex/latex")))
-                   (for-each delete-file (find-files "." "\\.(log|aux)$"))
-
-                   ;; The usedir directive in docstrip.ins is ignored, so these
-                   ;; two files end up in the wrong place.  Move them.
-                   (mkdir-p makeindex)
-                   (for-each (lambda (file)
-                               (install-file file makeindex)
-                               (delete-file file))
-                             '("build/gglo.ist"
-                               "build/gind.ist"))
-                   (for-each (cut install-file <> target)
-                             (find-files "build" ".*"))
-                   (for-each (cut install-file <> web2c)
-                             (find-files "web2c" ".*")))))))))
-      (native-inputs
-       `(("texlive-bin" ,texlive-bin)
-         ("texlive-tex-ini-files" ,texlive-tex-ini-files)
-         ("texlive-plain" ,texlive-plain)
-         ("texlive-kpathsea" ,texlive-kpathsea)
-         ("texlive-cm" ,texlive-cm)
-         ("texlive-latex-fonts" ,texlive-latex-fonts)
-         ("texlive-knuth-lib" ,texlive-knuth-lib)
-         ("texlive-luatexconfig"
-          ,(texlive-origin
-            "texlive-luatexconfig" (number->string %texlive-revision)
-            (list "/tex/generic/config/luatex-unicode-letters.tex"
-                  "/tex/generic/config/luatexiniconfig.tex"
-                  "/web2c/texmfcnf.lua")
-            (base32
-             "065j47i2785nbj2507pzxlscyrwr4ghv6nksc3a01rp62bq8kkjp")))))
-      (propagated-inputs
-       (list texlive-dehyph-exptl
-             texlive-etex
-             texlive-hyph-utf8
-             texlive-hyphen-base
-             texlive-hyphen-afrikaans
-             texlive-hyphen-ancientgreek
-             texlive-hyphen-armenian
-             texlive-hyphen-basque
-             texlive-hyphen-belarusian
-             texlive-hyphen-bulgarian
-             texlive-hyphen-catalan
-             texlive-hyphen-chinese
-             texlive-hyphen-churchslavonic
-             texlive-hyphen-coptic
-             texlive-hyphen-croatian
-             texlive-hyphen-czech
-             texlive-hyphen-danish
-             texlive-hyphen-dutch
-             texlive-hyphen-english
-             texlive-hyphen-esperanto
-             texlive-hyphen-estonian
-             texlive-hyphen-ethiopic
-             texlive-hyphen-finnish
-             texlive-hyphen-schoolfinnish
-             texlive-hyphen-french
-             texlive-hyphen-friulan
-             texlive-hyphen-galician
-             texlive-hyphen-georgian
-             texlive-hyphen-german
-             texlive-hyphen-greek
-             texlive-hyphen-hungarian
-             texlive-hyphen-icelandic
-             texlive-hyphen-indic
-             texlive-hyphen-indonesian
-             texlive-hyphen-interlingua
-             texlive-hyphen-irish
-             texlive-hyphen-italian
-             texlive-hyphen-kurmanji
-             texlive-hyphen-latin
-             texlive-hyphen-latvian
-             texlive-hyphen-lithuanian
-             texlive-hyphen-macedonian
-             texlive-hyphen-mongolian
-             texlive-hyphen-norwegian
-             texlive-hyphen-occitan
-             texlive-hyphen-pali
-             texlive-hyphen-piedmontese
-             texlive-hyphen-polish
-             texlive-hyphen-portuguese
-             texlive-hyphen-romanian
-             texlive-hyphen-romansh
-             texlive-hyphen-russian
-             texlive-hyphen-sanskrit
-             texlive-hyphen-serbian
-             texlive-hyphen-slovak
-             texlive-hyphen-slovenian
-             texlive-hyphen-spanish
-             texlive-hyphen-swedish
-             texlive-hyphen-thai
-             texlive-hyphen-turkish
-             texlive-hyphen-turkmen
-             texlive-hyphen-ukrainian
-             texlive-hyphen-uppersorbian
-             texlive-hyphen-welsh
-             texlive-unicode-data
-             texlive-ukrhyph
-             texlive-ruhyphen
-             texlive-l3kernel
-             texlive-l3backend
-             ;; TODO: This dependency isn't needed for LaTeX version 2021-06-01
-             ;; and later. See:
-             ;; https://tug.org/pipermail/tex-live/2021-June/047180.html
-             texlive-l3packages
-             texlive-latexconfig))
-      (home-page "https://www.ctan.org/pkg/latex-base")
-      (synopsis "Base sources of LaTeX")
-      (description
-       "This bundle comprises the source of LaTeX itself, together with several
-packages which are considered \"part of the kernel\".  This bundle, together
-with the required packages, constitutes what every LaTeX distribution should
+                       "cont-en xetex" "cont-en pdftex" "pdfcsplain xetex"
+                       "pdfcsplain pdftex" "pdfcsplain luatex" "cslatex pdftex"
+                       "mptopdf pdftex" "uplatex euptex" "jadetex pdftex"
+                       "amstex pdftex" "pdfcslatex pdftex" "lollipop tex"
+                       "xmltex pdftex" "pdfjadetex pdftex" "eplain pdftex"
+                       "texsis pdftex" "mltex pdftex" "utf8mex pdftex")))
+                (mkdir "web2c")
+                (install-file (string-append
+                               (assoc-ref inputs "texlive-kpathsea")
+                               "/share/texmf-dist/web2c/fmtutil.cnf")
+                              "web2c")
+                (make-file-writable "web2c/fmtutil.cnf")
+                (substitute* "web2c/fmtutil.cnf"
+                  (((string-append "^(" (string-join disabled-formats "|") ")") m)
+                   (string-append "#! " m))
+                  (("translate-file=cp227")
+                   (format #f "translate-file=~a/share/texmf-dist/web2c/cp227"
+                           (assoc-ref inputs "texlive-kpathsea")))))
+              (invoke "fmtutil-sys" "--all"
+                      "--fmtdir=web2c"
+                      (string-append "--cnffile=web2c/fmtutil.cnf"))
+              ;; We don't actually want to install it.
+              (delete-file "web2c/fmtutil.cnf")
+              ;; Also remove cruft.
+              (for-each delete-file (find-files "web2c" "\\.log$")))))))
+    (native-inputs
+     (list texlive-bin
+           texlive-cm
+           texlive-etex
+           texlive-knuth-lib
+           texlive-kpathsea
+           texlive-latex-fonts
+           texlive-luatex
+           texlive-plain
+           texlive-tex-ini-files))
+    (propagated-inputs
+     (list texlive-dehyph-exptl
+           texlive-etex
+           texlive-hyph-utf8
+           texlive-hyphen-afrikaans
+           texlive-hyphen-ancientgreek
+           texlive-hyphen-armenian
+           texlive-hyphen-base
+           texlive-hyphen-basque
+           texlive-hyphen-belarusian
+           texlive-hyphen-bulgarian
+           texlive-hyphen-catalan
+           texlive-hyphen-chinese
+           texlive-hyphen-churchslavonic
+           texlive-hyphen-coptic
+           texlive-hyphen-croatian
+           texlive-hyphen-czech
+           texlive-hyphen-danish
+           texlive-hyphen-dutch
+           texlive-hyphen-english
+           texlive-hyphen-esperanto
+           texlive-hyphen-estonian
+           texlive-hyphen-ethiopic
+           texlive-hyphen-finnish
+           texlive-hyphen-french
+           texlive-hyphen-friulan
+           texlive-hyphen-galician
+           texlive-hyphen-georgian
+           texlive-hyphen-german
+           texlive-hyphen-greek
+           texlive-hyphen-hungarian
+           texlive-hyphen-icelandic
+           texlive-hyphen-indic
+           texlive-hyphen-indonesian
+           texlive-hyphen-interlingua
+           texlive-hyphen-irish
+           texlive-hyphen-italian
+           texlive-hyphen-kurmanji
+           texlive-hyphen-latin
+           texlive-hyphen-latvian
+           texlive-hyphen-lithuanian
+           texlive-hyphen-macedonian
+           texlive-hyphen-mongolian
+           texlive-hyphen-norwegian
+           texlive-hyphen-occitan
+           texlive-hyphen-pali
+           texlive-hyphen-piedmontese
+           texlive-hyphen-polish
+           texlive-hyphen-portuguese
+           texlive-hyphen-romanian
+           texlive-hyphen-romansh
+           texlive-hyphen-russian
+           texlive-hyphen-sanskrit
+           texlive-hyphen-schoolfinnish
+           texlive-hyphen-serbian
+           texlive-hyphen-slovak
+           texlive-hyphen-slovenian
+           texlive-hyphen-spanish
+           texlive-hyphen-swedish
+           texlive-hyphen-thai
+           texlive-hyphen-turkish
+           texlive-hyphen-turkmen
+           texlive-hyphen-ukrainian
+           texlive-hyphen-uppersorbian
+           texlive-hyphen-welsh
+           texlive-l3backend
+           texlive-l3kernel
+           texlive-latexconfig
+           texlive-ruhyphen
+           texlive-ukrhyph
+           texlive-unicode-data
+           ;; TODO: This dependency isn't needed for LaTeX version 2021-06-01
+           ;; and later. See:
+           ;; <https://tug.org/pipermail/tex-live/2021-June/047180.html>
+           texlive-l3packages))
+    (home-page "https://www.ctan.org/pkg/latex-base")
+    (synopsis "Base sources of LaTeX")
+    (description
+     "This bundle comprises the source of LaTeX itself, together with several
+packages which are considered part of the kernel.  This bundle, together with
+the required packages, constitutes what every LaTeX distribution should
 contain.")
-      (license license:lppl1.3c+))))
+    (license license:lppl1.3c+)))
 
 (define-public texlive-atenddvi
   (package