gnu: unison: Add "doc" output.
* gnu/packages/ocaml.scm (unison)[source]: Use svn-fetch with snippet. [outputs]: New field. [native-inputs]: Add ghostscript, texlive, hevea, and lynx. [arguments]: Add 'install-doc phase.
This commit is contained in:
parent
2309ed6862
commit
90907a22bc
|
@ -3,6 +3,7 @@
|
||||||
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
|
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
|
||||||
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
|
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
|
||||||
;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
|
;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
|
||||||
|
;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -23,6 +24,7 @@ (define-module (gnu packages ocaml)
|
||||||
#:use-module ((guix licenses) #:hide (zlib))
|
#:use-module ((guix licenses) #:hide (zlib))
|
||||||
#:use-module (guix packages)
|
#:use-module (guix packages)
|
||||||
#:use-module (guix download)
|
#:use-module (guix download)
|
||||||
|
#:use-module (guix svn-download)
|
||||||
#:use-module (guix utils)
|
#:use-module (guix utils)
|
||||||
#:use-module (guix build-system gnu)
|
#:use-module (guix build-system gnu)
|
||||||
#:use-module (gnu packages)
|
#:use-module (gnu packages)
|
||||||
|
@ -36,6 +38,8 @@ (define-module (gnu packages ocaml)
|
||||||
#:use-module (gnu packages compression)
|
#:use-module (gnu packages compression)
|
||||||
#:use-module (gnu packages xorg)
|
#:use-module (gnu packages xorg)
|
||||||
#:use-module (gnu packages texlive)
|
#:use-module (gnu packages texlive)
|
||||||
|
#:use-module (gnu packages ghostscript)
|
||||||
|
#:use-module (gnu packages lynx)
|
||||||
#:use-module (gnu packages perl)
|
#:use-module (gnu packages perl)
|
||||||
#:use-module (gnu packages python)
|
#:use-module (gnu packages python)
|
||||||
#:use-module (gnu packages ncurses)
|
#:use-module (gnu packages ncurses)
|
||||||
|
@ -496,16 +500,65 @@ (define-public unison
|
||||||
(version "2.48.3")
|
(version "2.48.3")
|
||||||
(source
|
(source
|
||||||
(origin
|
(origin
|
||||||
(method url-fetch)
|
(method svn-fetch)
|
||||||
(uri (string-append "https://www.seas.upenn.edu/~bcpierce/unison/"
|
(uri (svn-reference
|
||||||
"download/releases/stable/unison-" version
|
(url (string-append "https://webdav.seas.upenn.edu/svn/"
|
||||||
".tar.gz"))
|
"unison/branches/"
|
||||||
(sha256
|
(version-major+minor version)))
|
||||||
(base32
|
(revision 535)))
|
||||||
"10sln52rnnsj213jy3166m0q97qpwnrwl6mm529xfy10x3xkq3gl"))))
|
(file-name (string-append name "-" version "-checkout"))
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"0486s53wyayicj9f2raj2dvwvk4xyzar219rccc1iczdwixm4x05"))
|
||||||
|
(modules '((guix build utils)
|
||||||
|
(ice-9 rdelim)
|
||||||
|
(ice-9 regex)
|
||||||
|
(srfi srfi-1)))
|
||||||
|
(snippet
|
||||||
|
`(begin
|
||||||
|
;; The svn revision in the release tarball appears to be
|
||||||
|
;; artificially manipulated in order to set the desired point
|
||||||
|
;; version number. Because the point version is calculated during
|
||||||
|
;; the build, we can offset pointVersionOrigin by the desired
|
||||||
|
;; point version and write that into "Rev: %d". We do this rather
|
||||||
|
;; than hardcoding the necessary revision number, for
|
||||||
|
;; maintainability.
|
||||||
|
(with-atomic-file-replacement "src/mkProjectInfo.ml"
|
||||||
|
(lambda (in out)
|
||||||
|
(let ((pt-ver (string->number (third (string-split ,version #\.))))
|
||||||
|
(pt-rx (make-regexp "^let pointVersionOrigin = ([0-9]+)"))
|
||||||
|
(rev-rx (make-regexp "Rev: [0-9]+")))
|
||||||
|
(let loop ((pt-origin #f))
|
||||||
|
(let ((line (read-line in 'concat)))
|
||||||
|
(cond
|
||||||
|
((regexp-exec pt-rx line)
|
||||||
|
=> (lambda (m)
|
||||||
|
(display line out)
|
||||||
|
(loop (string->number (match:substring m 1)))))
|
||||||
|
((regexp-exec rev-rx line)
|
||||||
|
=> (lambda (m)
|
||||||
|
(format out "~aRev: ~d~a"
|
||||||
|
(match:prefix m)
|
||||||
|
(+ pt-origin pt-ver)
|
||||||
|
(match:suffix m))
|
||||||
|
(dump-port in out))) ;done
|
||||||
|
(else
|
||||||
|
(display line out)
|
||||||
|
(loop pt-origin))))))))
|
||||||
|
;; Without the '-fix' argument, the html file produced does not
|
||||||
|
;; have functioning internal hyperlinks.
|
||||||
|
(substitute* "doc/Makefile"
|
||||||
|
(("hevea unison") "hevea -fix unison"))))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
|
(outputs '("out"
|
||||||
|
"doc")) ; 1.9 MiB of documentation
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(("ocaml" ,ocaml)))
|
`(("ocaml" ,ocaml)
|
||||||
|
;; For documentation
|
||||||
|
("ghostscript" ,ghostscript)
|
||||||
|
("texlive" ,texlive)
|
||||||
|
("hevea" ,hevea)
|
||||||
|
("lynx" ,lynx)))
|
||||||
(arguments
|
(arguments
|
||||||
`(#:parallel-build? #f
|
`(#:parallel-build? #f
|
||||||
#:parallel-tests? #f
|
#:parallel-tests? #f
|
||||||
|
@ -522,7 +575,30 @@ (define-public unison
|
||||||
(bin (string-append out "/bin")))
|
(bin (string-append out "/bin")))
|
||||||
(mkdir-p bin)
|
(mkdir-p bin)
|
||||||
(setenv "HOME" out) ; forces correct INSTALLDIR in Makefile
|
(setenv "HOME" out) ; forces correct INSTALLDIR in Makefile
|
||||||
#t))))))
|
#t)))
|
||||||
|
(add-after 'install 'install-doc
|
||||||
|
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||||
|
(let ((doc (string-append (assoc-ref outputs "doc")
|
||||||
|
"/share/doc/unison")))
|
||||||
|
(mkdir-p doc)
|
||||||
|
;; This file needs write-permissions, because it's
|
||||||
|
;; overwritten by 'docs' during documentation generation.
|
||||||
|
(chmod "src/strings.ml" #o600)
|
||||||
|
(and (zero? (system* "make" "docs"
|
||||||
|
"TEXDIRECTIVES=\\\\draftfalse"))
|
||||||
|
(begin
|
||||||
|
(for-each (lambda (f)
|
||||||
|
(install-file f doc))
|
||||||
|
(map (lambda (ext)
|
||||||
|
(string-append
|
||||||
|
"doc/unison-manual." ext))
|
||||||
|
;; Install only html documentation,
|
||||||
|
;; since the build is currently
|
||||||
|
;; non-reproducible with the ps, pdf,
|
||||||
|
;; and dvi docs.
|
||||||
|
'(;;"ps" "pdf" "dvi"
|
||||||
|
"html")))
|
||||||
|
#t))))))))
|
||||||
(home-page "https://www.cis.upenn.edu/~bcpierce/unison/")
|
(home-page "https://www.cis.upenn.edu/~bcpierce/unison/")
|
||||||
(synopsis "File synchronizer")
|
(synopsis "File synchronizer")
|
||||||
(description
|
(description
|
||||||
|
|
Loading…
Reference in a new issue