mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2025-01-04 02:19:18 -05:00
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>
This commit is contained in:
parent
e1f9a10fdc
commit
75922458af
1 changed files with 90 additions and 6 deletions
|
@ -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 @@ (define-module (gnu packages lisp)
|
|||
#: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 @@ (define-public confusion-mdl
|
|||
(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 @@ (define-public txr
|
|||
(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 @@ (define-public txr
|
|||
#: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 @@ (define-public txr
|
|||
(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
|
||||
|
|
Loading…
Reference in a new issue