diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index 910be212ac..256fe7da90 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -3746,6 +3746,71 @@ (define-public texlive-luaotfload (define-deprecated-package texlive-luatex-luaotfload texlive-luaotfload) +;; FIXME: This package is a temporary workaround to provide ‘lualatex.fmt’ for +;; the LuaTeX engine. It is needed because it was discovered too late in the +;; core-updates-frozen cycle that texlive-latex-base only provides it for +;; LuaHBTeX. See https://issues.guix.gnu.org/51252. +(define-public texlive-latex-luatex + (package + (name "texlive-latex-luatex") + (version (number->string %texlive-revision)) + (source #f) + (build-system gnu-build-system) + (arguments + `(#:modules ((guix build gnu-build-system) + (guix build utils) + (ice-9 rdelim) + (ice-9 string-fun)) + #:phases + (modify-phases %standard-phases + (delete 'unpack) + (delete 'bootstrap) + (delete 'configure) + (delete 'check) + (replace 'build + (lambda* (#:key inputs #:allow-other-keys) + (mkdir "web2c") + (let ((fmtutil.cnf-in (open-file + (string-append + (assoc-ref inputs "texlive-kpathsea") + "/share/texmf-dist/web2c/fmtutil.cnf") + "r")) + (fmtutil.cnf-out (open-file "web2c/fmtutil.cnf" "w"))) + + ;; Copy ‘lualatex’ format lines to the new fmtutil.cnf, changing + ;; the engine from ‘luahbtex’ to ‘luatex’. + (do ((line "" (read-line fmtutil.cnf-in 'concat))) + ((eof-object? line)) + (when (string-prefix? "lualatex" line) + (display (string-replace-substring line "luahbtex" "luatex") + fmtutil.cnf-out))) + (close-port fmtutil.cnf-out) + (close-port fmtutil.cnf-in) + + (invoke "fmtutil" "--sys" "--all" "--fmtdir=web2c" + "--cnffile=web2c/fmtutil.cnf") + + ;; Don't risk this file interfering with anything else. + (delete-file "web2c/fmtutil.cnf")))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((web2c (string-append %output "/share/texmf-dist/web2c"))) + (mkdir-p web2c) + (copy-recursively "web2c" web2c))))))) + (native-inputs + `(("texlive-bin" ,texlive-bin) + ("texlive-babel" ,texlive-babel) + ("texlive-cm" ,texlive-cm) + ("texlive-fonts-latex" ,texlive-fonts-latex) + ("texlive-kpathsea" ,texlive-kpathsea) + ("texlive-latex-base" ,texlive-latex-base) + ("texlive-lm" ,texlive-lm) + ("texlive-tex-ini-files" ,texlive-tex-ini-files))) + (home-page (package-home-page texlive-latex-base)) + (synopsis "LuaLaTeX format files for LuaTeX") + (description "This package is necessary to use LaTeX with the LuaTeX engine.") + (license (package-license texlive-latex-base)))) + (define-public texlive-latex-amsmath (package (name "texlive-latex-amsmath")