diff options
-rw-r--r-- | gnu/packages/groff.scm | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/gnu/packages/groff.scm b/gnu/packages/groff.scm index 67dd1dbfa6..9b949f8ff3 100644 --- a/gnu/packages/groff.scm +++ b/gnu/packages/groff.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -65,6 +66,52 @@ is usually the formatter of \"man\" documentation pages.") (license gpl3+) (home-page "https://www.gnu.org/software/groff/"))) +(define-public groff-minimal + ;; Minimialist groff for use by man-db. Its closure size is less than half + ;; that of the full-blown groff. + (package + (inherit groff) + (name "groff-minimal") + (synopsis "Minimalist variant of Groff for use by man-db") + (outputs '("out")) + + ;; Omit the DVI, PS, PDF, and HTML backends. + (inputs '()) + (native-inputs `(("bison" ,bison) + ("perl" ,perl))) + + (arguments + `(#:disallowed-references (,perl) + + #:configure-flags '("--docdir=/tmp/trash/doc") + + #:phases (modify-phases %standard-phases + (add-after 'install 'remove-non-essential-programs + (lambda* (#:key outputs #:allow-other-keys) + ;; Keep only the programs that man-db needs at run time, + ;; and make sure we don't pull in Perl. + (let ((out (assoc-ref outputs "out")) + (kept '("eqn" "neqn" "pic" "tbl" "refer" + "nroff" "groff" "troff" "grotty"))) + (for-each (lambda (file) + (unless (member (basename file) kept) + (delete-file file))) + (find-files (string-append out "/bin"))) + + ;; Remove a bunch of unneeded Perl scripts. + (for-each delete-file (find-files out "\\.pl$")) + (for-each delete-file + (find-files out "BuildFoundries")) + + ;; Remove ~3 MiB from share/groff/X.Y/font/devBACKEND + ;; corresponding to the unused backends. + (for-each delete-file-recursively + (find-files out "^dev(dvi|ps|pdf|html|lj4)$" + #:directories? #t)) + #t)))) + + ,@(package-arguments groff))))) + ;; There are no releases, so we take the latest commit. (define-public roffit (let ((commit "e5228388e3faf2b7f1ae5bd048ad46ed565304c6") |