From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andreas Enge Subject: Small texlive variant Date: Fri, 15 Jan 2016 16:21:53 +0100 Message-ID: <20160115152153.GA9454@debian> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="sdtB3X0nJg68CQEu" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:49124) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aK6CR-0005NF-VK for guix-devel@gnu.org; Fri, 15 Jan 2016 10:22:05 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aK6CN-0000di-TN for guix-devel@gnu.org; Fri, 15 Jan 2016 10:22:03 -0500 Received: from mailrelay7.public.one.com ([91.198.169.215]:60568) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aK6CN-0000dR-IS for guix-devel@gnu.org; Fri, 15 Jan 2016 10:21:59 -0500 Content-Disposition: inline List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: guix-devel@gnu.org --sdtB3X0nJg68CQEu Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Hello, the first attached patch adds a small texlive variant. I spent quite some time determining things to delete from texlive-texmf so that the result would still be usable, but I am certain the result is not minimal in the strict sense of the word. So I wondered whether the package should not be called "texlive-small" instead, but we already have a certain convention of using the suffix "-minimal" internally. I export the variable, but as I see it, its main use will be as a native-input to build documentation in packages. In my case, I am interested in pari-gp, which is modified by the second patch to build its documentation. For testing, you may call `./pre-inst-env guix build texlive-minimal`/bin/xdvi `./pre-inst-env guix build pari-gp`/share/pari/doc/tutorial after applying the patches. >From texlive-texmf, I deleted the subdirectory "doc" (1753 MB) and "source" (250 MB), and large chunks of "fonts", bringing it down from 1591 MB to 116 MB. There are probably parts of the 267 MB of "tex" that could be deleted as well, but I do not feel motivated to investigate further. ./pre-inst-env guix size texlive /gnu/store/pjmxca0nww2bp6hkwz7cjlh4s26ymxs2-texlive-2015 4223.2 0.3 0.0% /gnu/store/0wkmf926dv9ck8y1pk5p2lxw95kf7z9d-texlive-texmf-2015 4222.9 3710.3 87.9% /gnu/store/0h4cs6krz1rsfjl17rpy5mjr3bfap5lp-texlive-bin-2015 507.2 49.5 1.2% ... ./pre-inst-env guix size texlive-minimal /gnu/store/9flmncm9plf7y3bs6yj0nnpr7zlwagi2-texlive-minimal-2015 937.5 0.3 0.0% /gnu/store/y8shfzsg82b37zlzx29bza686gcr5162-texlive-texmf-minimal-2015 937.1 428.4 45.7% /gnu/store/0h4cs6krz1rsfjl17rpy5mjr3bfap5lp-texlive-bin-2015 507.2 49.5 5.3% ... It should be possible to build texlive-minimal with a stripped-down variant of texlive-bin, but I do not feel it is worth the effort. The next thing to do would be to replace the occurrences of "texlive" in packages by "texlive-minimal" (and to make sure they are in native-inputs), to have the branch built by hydra and to check whether texlive-minimal is not too minimal for building all documentation. But before that, I am waiting for your comments. Andreas --sdtB3X0nJg68CQEu Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="0001-gnu-Add-texlive-minimal.patch" >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 --sdtB3X0nJg68CQEu Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="0002-gnu-pari-gp-Build-documentation.patch" >From b6c445622d5308c905b9fd7d799638335a627496 Mon Sep 17 00:00:00 2001 From: Andreas Enge Date: Fri, 15 Jan 2016 16:02:29 +0100 Subject: [PATCH 2/2] gnu: pari-gp: Build documentation. * gnu/packages/algebra.scm (pari-gp)[native-inputs]: Add texlive-minimal. [arguments]: Modify make-flags to build documentation. --- gnu/packages/algebra.scm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm index dd68381..0149db8 100644 --- a/gnu/packages/algebra.scm +++ b/gnu/packages/algebra.scm @@ -26,6 +26,7 @@ #:use-module (gnu packages perl) #:use-module (gnu packages readline) #:use-module (gnu packages flex) + #:use-module (gnu packages texlive) #:use-module (gnu packages xorg) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) @@ -125,12 +126,13 @@ solve the shortest vector problem.") (base32 "0c8l83a0gjq73r9hndsrzkypwxvnnm4pxkkzbg6jm95m80nzwh11")))) (build-system gnu-build-system) + (native-inputs `(("texlive" ,texlive-minimal))) (inputs `(("gmp" ,gmp) ("libx11" ,libx11) ("perl" ,perl) ("readline" ,readline))) (arguments - '(#:make-flags '("gp") + '(#:make-flags '("all") ;; FIXME: building the documentation requires tex; once this is ;; available, replace "gp" by "all" #:test-target "dobench" -- 2.6.3 --sdtB3X0nJg68CQEu--