aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul A. Patience <paul@apatience.com>2021-07-10 20:23:49 -0400
committerGuillaume Le Vaillant <glv@posteo.net>2021-07-20 10:03:30 +0200
commit75922458af60081bf6964006d5b9c180ff9ec8ca (patch)
tree6a22e7ccf4fa46344e1b8026f2d6e035c3582aa4
parente1f9a10fdce697e50cce463c25f6c196c967a627 (diff)
downloadguix-75922458af60081bf6964006d5b9c180ff9ec8ca.tar.gz
guix-75922458af60081bf6964006d5b9c180ff9ec8ca.zip
gnu: txr: Build documentation.
* gnu/packages/lisp.scm (man-for-txr): New variable. (txr)[native-inputs]: New field. [inputs]: Move above the arguments field. [arguments]<#:phases>{inhibit-doc-syms-generation, build-doc, install-doc}: New phases. {fix-tests}: Add after the unpack phase rather than after the configure phase so that all file-modifying phases are performed after unpacking. Signed-off-by: Guillaume Le Vaillant <glv@posteo.net>
-rw-r--r--gnu/packages/lisp.scm96
1 files changed, 90 insertions, 6 deletions
diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
index 382f48beb1..e6d09ce353 100644
--- a/gnu/packages/lisp.scm
+++ b/gnu/packages/lisp.scm
@@ -18,6 +18,7 @@
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2020 Zhu Zihao <all_but_last@163.com>
;;; Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
+;;; Copyright © 2021 Paul A. Patience <paul@apatience.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -59,8 +60,10 @@
#:use-module (gnu packages fontutils)
#:use-module (gnu packages gcc)
#:use-module (gnu packages gettext)
+ #:use-module (gnu packages ghostscript)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
+ #:use-module (gnu packages groff)
#:use-module (gnu packages m4)
#:use-module (gnu packages maths)
#:use-module (gnu packages multiprecision)
@@ -846,6 +849,60 @@ enough to play the original mainframe Zork all the way through.")
(home-page "http://www.russotto.net/git/mrussotto/confusion/src/master/src/README")
(license license:gpl3+))))
+(define man-for-txr
+ (let ((commit "dfbf19b9a96474b8c1bacac85e43605e5691ceb2")
+ ;; Number of additional commits since the last tag (see the output of
+ ;; "git describe --tags").
+ (revision "41"))
+ (package
+ (name "man-for-txr")
+ (version (git-version "1.6g" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "http://www.kylheku.com/git/man/")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1zy0g8fj9nsfwzvg88hyaiy94r8j14xhs8vy2ln2niqdm6x2lvy2"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ; There are no tests.
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'fix-man2html-makefile
+ (lambda _
+ (substitute* "man2html/Makefile.in"
+ ;; It inadvertently ignores @bindir@.
+ (("^(bindir = \\$\\(DESTDIR\\)\\$\\(PREFIX\\)).*" _ prefix)
+ (string-append prefix "@bindir@\n")))
+ #t))
+ (add-after 'unpack 'delete-generated-files
+ (lambda _
+ (for-each delete-file
+ (append
+ (list "conf_script")
+ (map (lambda (d) (string-append d "/Makefile"))
+ '("." "man" "man2html" "src"))
+ (map (lambda (f) (string-append "src/" f))
+ '("makewhatis.in" "man.conf"
+ "paths.h" "version.h"))))
+ #t))
+ (replace 'configure
+ (lambda* (#:key outputs #:allow-other-keys)
+ (setenv "CC" ,(cc-for-target))
+ ;; Humor the manually written configure script.
+ (invoke "./configure" "+lang" "en" "+fhs"
+ (string-append "-prefix=" (assoc-ref outputs "out")))
+ #t)))))
+ (home-page "http://www.kylheku.com/cgit/man/")
+ (synopsis "Modifications to the man utilities, specifically man2html")
+ (description
+ "This is a fork of the man utilities intended specifically for building
+the HTML documentation of TXR.")
+ (license license:gpl2))))
+
(define-public txr
(package
(name "txr")
@@ -860,6 +917,13 @@ enough to play the original mainframe Zork all the way through.")
(sha256
(base32 "14zaziymnbr2ld79x4h7sf88bzzzj82w3xpavmcx7mhwannb2swh"))))
(build-system gnu-build-system)
+ (native-inputs
+ ;; Required to build the documentation.
+ `(("ghostscript" ,ghostscript)
+ ("groff" ,groff)
+ ("man2html" ,man-for-txr)))
+ (inputs
+ `(("libffi" ,libffi)))
(arguments
`(#:configure-flags
(list ,(string-append "cc=" (cc-for-target))
@@ -867,6 +931,22 @@ enough to play the original mainframe Zork all the way through.")
#:test-target "tests"
#:phases
(modify-phases %standard-phases
+ (add-after 'unpack 'inhibit-doc-syms-generation
+ (lambda _
+ (substitute* "genman.txr"
+ ;; Exit from genman.txr before it tries to write to
+ ;; stdlib/doc-syms.tl, which is anyway kept up to date with
+ ;; each release (and is already compiled to stdlib/doc-syms.tlo
+ ;; when genman.txr is run).
+ (("^@\\(output \"share/txr/stdlib/doc-syms\\.tl\"\\).*" line)
+ (string-append "@(do (exit))\n" line)))
+ #t))
+ (add-after 'unpack 'fix-tests
+ (lambda _
+ (substitute* (list "tests/017/realpath.tl"
+ "tests/017/realpath.expected")
+ (("/usr/bin") "/"))
+ #t))
(replace 'configure
;; ./configure is a hand-written script that can't handle standard
;; autotools arguments like CONFIG_SHELL.
@@ -874,14 +954,18 @@ enough to play the original mainframe Zork all the way through.")
(setenv "txr_shell" (which "bash"))
(apply invoke "./configure" configure-flags)
#t))
- (add-after 'configure 'fix-tests
+ (add-after 'build 'build-doc
(lambda _
- (substitute* (list "tests/017/realpath.tl"
- "tests/017/realpath.expected")
- (("/usr/bin") "/"))
+ (setenv "GS_GENERATE_UUIDS" "0")
+ (invoke "make" "txr-manpage.html" "txr-manpage.pdf")
+ #t))
+ (add-after 'install 'install-doc
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((doc (string-append (assoc-ref outputs "out")
+ "/share/doc/" ,name "-" ,version)))
+ (for-each (lambda (f) (install-file f doc))
+ '("txr-manpage.html" "txr-manpage.pdf")))
#t)))))
- (inputs
- `(("libffi" ,libffi)))
(synopsis "General-purpose, multi-paradigm programming language")
(description
"TXR is a general-purpose, multi-paradigm programming language. It