>From f8a4aabcdf2ec156f42a87708078c065ad4fe43f Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Fri, 15 Jan 2016 16:00:47 +0100 Subject: [PATCH 1/2] gnu: Add texlive-minimal. * gnu/packages/texlive.scm (texlive-texmf-minimal, texlive-minimal): New variables. --- gnu/packages/texlive.scm | 122 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 121 insertions(+), 1 deletion(-) diff --git a/gnu/packages/texlive.scm b/gnu/packages/texlive.scm index 0b2dec4..319a52e 100644 --- a/gnu/packages/texlive.scm +++ b/gnu/packages/texlive.scm @@ -24,6 +24,7 @@ #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (guix build-system trivial) + #:use-module (guix utils) #:use-module (gnu packages) #:use-module (gnu packages bash) #:use-module (gnu packages compression) @@ -45,7 +46,9 @@ #:use-module (gnu packages xorg) #:use-module (gnu packages xdisorg) #:use-module (gnu packages zip) - #:autoload (gnu packages texinfo) (texinfo)) + #:autoload (gnu packages texinfo) (texinfo) + #:use-module (ice-9 ftw) + #:use-module (srfi srfi-1)) (define texlive-extra-src (origin @@ -284,6 +287,123 @@ This package contains the complete TeX Live distribution.") (license (license:fsf-free "http://tug.org/texlive/copying.html")) (home-page "http://www.tug.org/texlive/"))) + +;; texlive-texmf-minimal is a pruned, small version of the texlive tree, +;; in particular dropping documentation and fonts. +(define-public texlive-texmf-minimal + (package (inherit texlive-texmf) + (name "texlive-texmf-minimal") + (arguments + (substitute-keyword-arguments + (package-arguments texlive-texmf) + ((#:modules modules) + `((ice-9 ftw) + (srfi srfi-1) + ,@modules)) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'prune + (lambda _ + (with-directory-excursion "texmf-dist" + (for-each delete-file-recursively + '("doc" "source" "tex4ht")) + ;; Delete all subdirectories of "fonts", except for those + ;; named "cm", that is, "afm/public/amsfonts/cm", + ;; "map/dvips/cm", "pk/ljfour/public/cm" (which is effectively + ;; all of "pk"), "source/public/cm", "tfm/public/cm" and + ;; "type1/public/amsfonts/cm". + ;; Inside "tfm", apparently more subdirectories are needed for + ;; successful bootstrapping of the formats, so we keep + ;; "tfm/public". + (with-directory-excursion "fonts" + (for-each delete-file-recursively + (lset-difference equal? + (scandir ".") + '("." ".." "afm" "map" "pk" + "source" "tfm" "type1"))) + (with-directory-excursion "afm" + (for-each delete-file-recursively + (lset-difference equal? + (scandir ".") + '("." ".." "public"))) + (with-directory-excursion "public" + (for-each delete-file-recursively + (lset-difference equal? + (scandir ".") + '("." ".." "amsfonts"))) + (with-directory-excursion "amsfonts" + (for-each delete-file-recursively + (lset-difference equal? + (scandir ".") + '("." ".." "cm")))))) + (with-directory-excursion "map" + (for-each delete-file-recursively + (lset-difference equal? + (scandir ".") + '("." ".." "dvips"))) + (with-directory-excursion "dvips" + (for-each delete-file-recursively + (lset-difference equal? + (scandir ".") + '("." ".." "cm"))))) + (with-directory-excursion "source" + (for-each delete-file-recursively + (lset-difference equal? + (scandir ".") + '("." ".." "public"))) + (with-directory-excursion "public" + (for-each delete-file-recursively + (lset-difference equal? + (scandir ".") + '("." ".." "cm"))))) + (with-directory-excursion "tfm" + (for-each delete-file-recursively + (lset-difference equal? + (scandir ".") + '("." ".." "public")))) + (with-directory-excursion "type1" + (for-each delete-file-recursively + (lset-difference equal? + (scandir ".") + '("." ".." "public"))) + (with-directory-excursion "public" + (for-each delete-file-recursively + (lset-difference equal? + (scandir ".") + '("." ".." "amsfonts"))) + (with-directory-excursion "amsfonts" + (for-each delete-file-recursively + (lset-difference equal? + (scandir ".") + '("." ".." "cm")))))))) + #t)))))) + (description + "TeX Live provides a comprehensive TeX document production system. +It includes all the major TeX-related programs, macro packages, and fonts +that are free software, including support for many languages around the +world. + +This package contains a small subset of the texmf-dist data."))) + + +;; texlive-minimal is the same as texlive, but using texlive-texmf-minimal +;; instead of the full texlive-texmf. It can be used, for instance, as a +;; native input to packages that need texlive to build their documentation. +(define-public texlive-minimal + (package (inherit texlive) + (name "texlive-minimal") + (inputs + `(("texlive-texmf" ,texlive-texmf-minimal) + ,@(alist-delete "texlive-texmf" (package-inputs texlive)))) + (description + "TeX Live provides a comprehensive TeX document production system. +It includes all the major TeX-related programs, macro packages, and fonts +that are free software, including support for many languages around the +world. + +This package contains a small working part of the TeX Live distribution."))) + + (define-public rubber (package (name "rubber") -- 2.6.3