gnu: Add groff-minimal.

* gnu/packages/groff.scm (groff-minimal): New variable.
This commit is contained in:
Ludovic Courtès 2017-12-01 10:46:53 +01:00
parent 63b31b567e
commit 3c97322a6e
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5

View File

@ -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")