summaryrefslogtreecommitdiff
path: root/gnu/packages/texlive.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/texlive.scm')
-rw-r--r--gnu/packages/texlive.scm174
1 files changed, 19 insertions, 155 deletions
diff --git a/gnu/packages/texlive.scm b/gnu/packages/texlive.scm
index 6c3989ec0d..2495f34c9b 100644
--- a/gnu/packages/texlive.scm
+++ b/gnu/packages/texlive.scm
@@ -71,15 +71,6 @@
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg))
-;; The starting point for this file is
-;; commit ad457d01147b8d6fcb4ee64b2dc2d699caa1d1ee
-
-
-;; These variables specify the SVN tag and the matching SVN revision. They
-;; are taken from https://www.tug.org/svn/texlive/tags/
-(define %texlive-tag "texlive-2021.3")
-(define %texlive-revision 59745)
-
(define %texlive-date "20210325")
(define %texlive-version (string-take %texlive-date 4))
@@ -119,33 +110,21 @@
(snippet
;; TODO: Unbundle stuff in texk/dvisvgm/dvisvgm-src/libs too.
'(with-directory-excursion "libs"
- (let ((preserved-directories '("." ".." "lua53" "luajit" "pplib" "xpdf")))
+ (let ((preserved-directories
+ '("." ".." "lua53" "luajit" "pplib" "xpdf")))
;; Delete bundled software, except Lua which cannot easily be
;; used as an external dependency, pplib and xpdf which aren't
;; supported as system libraries (see m4/kpse-xpdf-flags.m4).
- (for-each delete-file-recursively
- (scandir "."
- (lambda (file)
- (and (not (member file preserved-directories))
- (eq? 'directory (stat:type (stat file))))))))))))
+ (for-each
+ delete-file-recursively
+ (scandir "."
+ (lambda (file)
+ (and (not (member file preserved-directories))
+ (eq? 'directory (stat:type (stat file))))))))))))
(build-system gnu-build-system)
(inputs
`(("texlive-extra-src" ,texlive-extra-src)
("config" ,config)
- ("texlive-scripts"
- ,(origin
- (method svn-fetch)
- (uri (svn-reference
- (url (string-append "svn://www.tug.org/texlive/tags/"
- %texlive-tag "/Master/texmf-dist/"
- "/scripts/texlive"))
- (revision %texlive-revision)))
- (file-name (string-append "texlive-scripts-"
- (number->string %texlive-revision)
- "-checkout"))
- (sha256
- (base32
- "1jrphfjhmw17rp1yqsl70shmvka3vg0g8841q6zx2lfn48p7vqf3"))))
("cairo" ,cairo)
("fontconfig" ,fontconfig)
("fontforge" ,fontforge)
@@ -268,71 +247,6 @@
(with-directory-excursion "texlive-extra"
(apply (assoc-ref %standard-phases 'unpack)
(list #:source (assoc-ref inputs "texlive-extra-src"))))))
- (add-after 'unpack-texlive-extra 'unpack-texlive-scripts
- (lambda* (#:key inputs #:allow-other-keys)
- (mkdir "texlive-scripts")
- (with-directory-excursion "texlive-scripts"
- (apply (assoc-ref %standard-phases 'unpack)
- (list #:source (assoc-ref inputs "texlive-scripts")))
- ;; Configure the version string for some scripts.
- ;; Normally this would be done by Subversion.
- ;; See <https://issues.guix.gnu.org/43442#15>.
- (for-each (lambda (file)
- (substitute* file
- (("\\$Id\\$")
- (format #f "$Id: ~a ~a ~a nobody $"
- file
- ,%texlive-revision
- ,%texlive-date))
- (("\\$Revision\\$")
- (format #f "$Revision: ~a $"
- ,%texlive-revision))
- (("\\$Date\\$")
- (format #f "$Date: ~a $"
- ,%texlive-date))))
- '("fmtutil.pl"
- "mktexlsr"
- "mktexlsr.pl"
- "mktexmf"
- "mktexpk"
- "mktextfm"
- "tlmgr.pl"
- "tlmgrgui.pl"
- "updmap.pl")))))
- (add-after 'unpack-texlive-scripts 'patch-scripts
- (lambda _
- (let* ((scripts (append (find-files "texk/kpathsea" "^mktex")
- (find-files "texk/texlive/linked_scripts"
- "\\.sh$")
- (find-files "texlive-scripts" "\\.sh$")))
- (commands '("awk" "basename" "cat" "grep" "mkdir" "rm"
- "sed" "sort" "uname"))
- (command-regexp (format #f "\\b(~a)\\b"
- (string-join commands "|")))
- (iso-8859-1-encoded-scripts
- '("texk/texlive/linked_scripts/texlive-extra/rubibtex.sh"
- "texk/texlive/linked_scripts/texlive-extra/rumakeindex.sh")))
-
- (define (substitute-commands scripts)
- (substitute* scripts
- ((command-regexp dummy command)
- (which command))))
-
- (substitute-commands (lset-difference string= scripts
- iso-8859-1-encoded-scripts))
-
- (with-fluids ((%default-port-encoding "ISO-8859-1"))
- (substitute-commands iso-8859-1-encoded-scripts)))))
- ;; When ST_NLINK_TRICK is set, kpathsea attempts to avoid work when
- ;; searching files by assuming that a directory with exactly two
- ;; links has no subdirectories. This assumption does not hold in our
- ;; case, so some directories with symlinked subdirectories would not
- ;; be traversed.
- (add-after 'patch-scripts 'patch-directory-traversal
- (lambda _
- (substitute* "texk/kpathsea/config.h"
- (("#define ST_NLINK_TRICK") ""))))
-
,@(if (target-arm32?)
`((add-after 'unpack 'skip-faulty-test
(lambda _
@@ -344,39 +258,12 @@
(string-append "exit 77 # skip\n" all))))))
'())
- (add-after 'check 'customize-texmf.cnf
- ;; The default texmf.cnf is provided by this package, texlive-bin.
- ;; Every variable of interest is set relatively to the GUIX_TEXMF
- ;; environment variable defined via a search path specification
- ;; further below. The configuration file is patched after the test
- ;; suite has run, as it relies on the default configuration to find
- ;; its paths (and the GUIX_TEXMF variable isn't set yet).
- (lambda _
- ;; The current directory is build/ because of the out-of-tree
- ;; build.
- (let* ((source (first (scandir ".." (cut string-suffix?
- "source" <>))))
- (texmf.cnf (string-append "../" source
- "/texk/kpathsea/texmf.cnf")))
- (substitute* texmf.cnf
- (("^TEXMFROOT = .*")
- "TEXMFROOT = {$GUIX_TEXMF}/..\n")
- (("^TEXMF = .*")
- "TEXMF = {$GUIX_TEXMF}\n")
- (("^%TEXMFCNF = .*")
- "TEXMFCNF = {$GUIX_TEXMF}/web2c\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")))))
(add-after 'install 'post-install
(lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
(let* ((out (assoc-ref outputs "out"))
(patch-source-shebangs (assoc-ref %standard-phases
'patch-source-shebangs))
(share (string-append out "/share"))
- (scripts (string-append share
- "/texmf-dist/scripts/texlive"))
(source (string-append
"../" (first (scandir ".." (cut string-suffix?
"source" <>)))))
@@ -402,37 +289,17 @@
;; Install tlpkg.
(copy-recursively tlpkg-src (string-append share "/tlpkg"))
-
- ;; Install texlive-scripts.
- (copy-recursively (string-append
- source "/texlive-scripts/source/")
- scripts)
-
- ;; Patch them.
- (let ((dirs (map dirname (list (which "sed") (which "awk")))))
- (with-directory-excursion scripts
- (substitute* '("mktexpk" "mktexmf" "mktexlsr")
- (("^version=" m)
- (format #false "PATH=\"~{~a:~}$PATH\"; export PATH~%~a"
- dirs m)))))
-
- ;; Make sure that fmtutil can find its Perl modules.
- (substitute* (string-append scripts "/fmtutil.pl")
- (("\\$TEXMFROOT/")
- (string-append share "/")))
-
- ;; Likewise for updmap.pl.
- (substitute* (string-append scripts "/updmap.pl")
- (("\\$TEXMFROOT/tlpkg")
- (string-append share "/tlpkg")))
-
- ;; Likewise for the tlmgr.
- (substitute* (string-append scripts "/tlmgr.pl")
- ((".*\\$::installerdir = \\$Master.*" all)
- (format #f " $Master = ~s;~%~a" share all)))
-
- ;; Install the config.guess script, required by tlmgr.
(with-directory-excursion share
+ ;; Make sure tlmgr finds its Perl modules.
+ ;; tlmgr is a script in bin/ that runs tlmgr.pl in
+ ;; texmf-dist/; so although texmf-dist/ will be discarded in
+ ;; the texlive package in favour of the one from texlivetexmf,
+ ;; through the absolute path our modifications will be used
+ ;; by the script.
+ (substitute* "texmf-dist/scripts/texlive/tlmgr.pl"
+ ((".*\\$::installerdir = \\$Master.*" all)
+ (format #f " $Master = ~s;~%~a" share all)))
+ ;; Install the config.guess script, required by tlmgr.
(mkdir-p "tlpkg/installer/")
(symlink config.guess "tlpkg/installer/config.guess"))
@@ -442,10 +309,7 @@
(setenv "PATH" (string-append (getenv "PATH") ":" out "/bin"))
(with-directory-excursion out
(patch-source-shebangs))))))))
- (native-search-paths
- (list (search-path-specification
- (variable "GUIX_TEXMF")
- (files '("share/texmf-dist")))))
+
(synopsis "TeX Live, a package of the TeX typesetting system")
(description
"TeX Live provides a comprehensive TeX document production system.