From df5ae55ff7e4bf43f0417a20bbb6fcf69d5813bd Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sun, 4 Jun 2023 10:31:37 +0200 Subject: [PATCH] gnu: texlive-latex-base: Simplify package. * gnu/packages/tex.scm (texlive-latex-base)[arguments]: Only build DVILUALATEX, LATEX, LUALATEX and PDFLATEX formats. [native-inputs]: Move them to propagated inputs. [propagated-inputs]: Remove all specific hyphenation packages. Replace them with TEXLIVE-HYPHEN-COMPLETE. Add TEXLIVE-BABEL, TEXLIVE-PDFTEX. --- gnu/packages/tex.scm | 172 +++---------------------------------------- 1 file changed, 12 insertions(+), 160 deletions(-) diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index 5ce84cb757..723c75f5cc 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -3282,173 +3282,25 @@ formats.") (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 ((_ . 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") - ;; Also remove cruft. - (for-each delete-file (find-files "web2c" "\\.log$"))))))) - (native-inputs - (list texlive-bin + #:tex-engine "tex" + #:tex-format #f + #:build-targets #~(list "unpack.ins") + #:create-formats #~(list "dvilualatex" "latex" "lualatex" "pdflatex"))) + (propagated-inputs + (list texlive-babel texlive-cm texlive-etex + texlive-hyphen-complete 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-latex-fonts texlive-latexconfig - texlive-ruhyphen - texlive-ukrhyph + texlive-luatex + texlive-pdftex + texlive-plain + texlive-tex-ini-files texlive-unicode-data ;; TODO: This dependency isn't needed for LaTeX version 2021-06-01 ;; and later. See: