summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gnu/packages/tex.scm58
1 files changed, 58 insertions, 0 deletions
diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm
index 85c72e006a..678e46ccd2 100644
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@ -75,6 +75,64 @@
#:use-module (ice-9 match)
#:use-module ((srfi srfi-1) #:hide (zip)))
+(define* (simple-texlive-package name locations hash
+ #:key trivial?)
+ "Return a template for a simple TeX Live package with the given NAME,
+downloading from a list of LOCATIONS in the TeX Live repository, and expecting
+the provided output HASH. If TRIVIAL? is provided, all files will simply be
+copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used."
+ (define with-documentation?
+ (and trivial?
+ (any (lambda (location)
+ (string-prefix? "/doc" location))
+ locations)))
+ (package
+ (name name)
+ (version (number->string %texlive-revision))
+ (source (texlive-origin name version
+ locations hash))
+ (outputs (if with-documentation?
+ '("out" "doc")
+ '("out")))
+ (build-system (if trivial?
+ gnu-build-system
+ texlive-build-system))
+ (arguments
+ (let ((copy-files
+ `(lambda* (#:key outputs inputs #:allow-other-keys)
+ (let (,@(if with-documentation?
+ `((doc (string-append (assoc-ref outputs "doc")
+ "/share/texmf-dist/")))
+ '())
+ (out (string-append (assoc-ref outputs "out")
+ "/share/texmf-dist/")))
+ ,@(if with-documentation?
+ '((mkdir-p doc)
+ (copy-recursively
+ (string-append (assoc-ref inputs "source") "/doc")
+ (string-append doc "/doc")))
+ '())
+ (mkdir-p out)
+ (copy-recursively (assoc-ref inputs "source") out)
+ ,@(if with-documentation?
+ '((delete-file-recursively (string-append out "/doc")))
+ '())
+ #t))))
+ (if trivial?
+ `(#:tests? #f
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'build (const #t))
+ (replace 'install ,copy-files)))
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'copy-files ,copy-files))))))
+ (home-page #f)
+ (synopsis #f)
+ (description #f)
+ (license #f)))
+
(define texlive-extra-src
(origin
(method url-fetch)