me
/
guix
Archived
1
0
Fork 0

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>
master
Paul A. Patience 2021-07-10 20:23:49 -04:00 committed by Guillaume Le Vaillant
parent e1f9a10fdc
commit 75922458af
No known key found for this signature in database
GPG Key ID: 6BE8208ADF21FE3F
1 changed files with 90 additions and 6 deletions

View File

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