unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* [PATCH] gnu: unison: Add "doc" output.
@ 2015-12-19  1:42 Eric Bavier
  2015-12-20 20:57 ` Leo Famulari
  2015-12-20 22:11 ` Ludovic Courtès
  0 siblings, 2 replies; 9+ messages in thread
From: Eric Bavier @ 2015-12-19  1:42 UTC (permalink / raw)
  To: guix-devel

* gnu/packages/ocaml.scm (unison-doc): New function.
  (unison)[source]: Use versioned URI.
  [inputs, outputs]: New fields.
  [arguments]: Add 'install-doc phase.
---
 gnu/packages/ocaml.scm | 37 +++++++++++++++++++++++++++++++++++--
 1 file changed, 35 insertions(+), 2 deletions(-)

diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 7f80fc8..241be85 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
+;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -490,6 +491,14 @@ libglade (and it an generate OCaml code
from .glade files), libpanel, librsvg and quartz.")
     (license lgpl2.1)))
 
+(define (unison-doc ext version hash)
+  (origin
+    (method url-fetch)
+    (uri (string-append "https://www.seas.upenn.edu/~bcpierce/unison/"
+                        "download/releases/unison-" version "/unison-"
+                        version "-manual." ext))
+    (sha256 (base32 hash))))
+
 (define-public unison
   (package
     (name "unison")
@@ -498,12 +507,24 @@ libpanel, librsvg and quartz.")
       (origin
         (method url-fetch)
           (uri (string-append "https://www.seas.upenn.edu/~bcpierce/unison/"
-                              "download/releases/stable/unison-" version
-                              ".tar.gz"))
+                              "download/releases/unison-" version "/unison-"
+                              version ".tar.gz"))
           (sha256
             (base32
               "10sln52rnnsj213jy3166m0q97qpwnrwl6mm529xfy10x3xkq3gl"))))
     (build-system gnu-build-system)
+    (outputs '("out"
+               "doc"))                  ; 1.5 MiB of documentation
+    (inputs
+     `(("doc-pdf"
+        ,(unison-doc "pdf" version
+                     "0y5mywjn352nw4wqli94gnc5vn1f72g56jqqk1nqajz0ark998nb"))
+       ("doc-ps"
+        ,(unison-doc "ps" version
+                     "11awy1xxhmckwnx42hllmngmx8q4ck18vpwpgfqqhj0x8vx0b3ha"))
+       ("doc-html"
+        ,(unison-doc "html" version
+                     "06myrpv067j5ffm265fm0a83gm41j9bv3ps3yiyb1hqgfy1qy3ah"))))
(native-inputs `(("ocaml" ,ocaml)))
     (arguments
@@ -522,6 +543,18 @@ libpanel, librsvg and quartz.")
                       (bin (string-append out "/bin")))
                  (mkdir-p bin)
                  (setenv "HOME" out) ; forces correct INSTALLDIR in Makefile
+                 #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)
+                 (for-each
+                  (lambda (i)
+                    (let* ((file (assoc-ref inputs i))
+                           (dest (strip-store-file-name file)))
+                      (copy-file file (string-append doc "/" dest))))
+                  '("doc-pdf" "doc-ps" "doc-html"))
                  #t))))))
     (home-page "https://www.cis.upenn.edu/~bcpierce/unison/")
     (synopsis "File synchronizer")
-- 
2.6.3

^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: unison: Add "doc" output.
  2015-12-19  1:42 [PATCH] gnu: unison: Add "doc" output Eric Bavier
@ 2015-12-20 20:57 ` Leo Famulari
  2015-12-20 22:11 ` Ludovic Courtès
  1 sibling, 0 replies; 9+ messages in thread
From: Leo Famulari @ 2015-12-20 20:57 UTC (permalink / raw)
  To: Eric Bavier; +Cc: guix-devel

On Fri, Dec 18, 2015 at 07:42:15PM -0600, Eric Bavier wrote:
> * gnu/packages/ocaml.scm (unison-doc): New function.
>   (unison)[source]: Use versioned URI.
>   [inputs, outputs]: New fields.
>   [arguments]: Add 'install-doc phase.

Cool!

But `git am` can't apply the patch to the master branch.

Git's complaint:

Applying: gnu: unison: Add "doc" output.
fatal: corrupt patch at line 18
Patch failed at 0001 gnu: unison: Add "doc" output.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: unison: Add "doc" output.
  2015-12-19  1:42 [PATCH] gnu: unison: Add "doc" output Eric Bavier
  2015-12-20 20:57 ` Leo Famulari
@ 2015-12-20 22:11 ` Ludovic Courtès
  2015-12-21  4:01   ` Eric Bavier
  1 sibling, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2015-12-20 22:11 UTC (permalink / raw)
  To: Eric Bavier; +Cc: guix-devel

Eric Bavier <ericbavier@openmailbox.org> skribis:

> +(define (unison-doc ext version hash)
> +  (origin
> +    (method url-fetch)
> +    (uri (string-append "https://www.seas.upenn.edu/~bcpierce/unison/"
> +                        "download/releases/unison-" version "/unison-"
> +                        version "-manual." ext))
> +    (sha256 (base32 hash))))

[...]

> +     `(("doc-pdf"
> +        ,(unison-doc "pdf" version
> +                     "0y5mywjn352nw4wqli94gnc5vn1f72g56jqqk1nqajz0ark998nb"))
> +       ("doc-ps"
> +        ,(unison-doc "ps" version
> +                     "11awy1xxhmckwnx42hllmngmx8q4ck18vpwpgfqqhj0x8vx0b3ha"))
> +       ("doc-html"
> +        ,(unison-doc "html" version
> +                     "06myrpv067j5ffm265fm0a83gm41j9bv3ps3yiyb1hqgfy1qy3ah"))))

Could we instead build them from source?

I understand that building the PDF/PS would require an extra dependency
on TeX Live.  This could be:

  1. ignored, on the grounds that people with substitutes enabled will
     not have to download TeX Live; or:

  2. addressed by having only the HTML documentation built, on the
     grounds the HTML is more appropriate for on-screen reading.

WDYT?

Ludo’.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: unison: Add "doc" output.
  2015-12-20 22:11 ` Ludovic Courtès
@ 2015-12-21  4:01   ` Eric Bavier
  2015-12-21 10:39     ` Ludovic Courtès
  0 siblings, 1 reply; 9+ messages in thread
From: Eric Bavier @ 2015-12-21  4:01 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

On Sun, 20 Dec 2015 23:11:07 +0100
ludo@gnu.org (Ludovic Courtès) wrote:

> Eric Bavier <ericbavier@openmailbox.org> skribis:
> 
> > +(define (unison-doc ext version hash)
> > +  (origin
> > +    (method url-fetch)
> > +    (uri (string-append "https://www.seas.upenn.edu/~bcpierce/unison/"
> > +                        "download/releases/unison-" version "/unison-"
> > +                        version "-manual." ext))
> > +    (sha256 (base32 hash))))
> 
> [...]
> 
> > +     `(("doc-pdf"
> > +        ,(unison-doc "pdf" version
> > +                     "0y5mywjn352nw4wqli94gnc5vn1f72g56jqqk1nqajz0ark998nb"))
> > +       ("doc-ps"
> > +        ,(unison-doc "ps" version
> > +                     "11awy1xxhmckwnx42hllmngmx8q4ck18vpwpgfqqhj0x8vx0b3ha"))
> > +       ("doc-html"
> > +        ,(unison-doc "html" version
> > +                     "06myrpv067j5ffm265fm0a83gm41j9bv3ps3yiyb1hqgfy1qy3ah"))))
> 
> Could we instead build them from source?

Possibly.  The documentation source is not available in the download
tarball, only in the developer svn repository, so we could do an svn
fetch of that.  Would that be alright?

> I understand that building the PDF/PS would require an extra dependency
> on TeX Live.  This could be:
> 
>   1. ignored, on the grounds that people with substitutes enabled will
>      not have to download TeX Live; or:
> 
>   2. addressed by having only the HTML documentation built, on the
>      grounds the HTML is more appropriate for on-screen reading.
> 
> WDYT?

Option 1 might be fine.  The 'coq' package also requires both texlive
and hevea for its documentation.

`~Eric

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: unison: Add "doc" output.
  2015-12-21  4:01   ` Eric Bavier
@ 2015-12-21 10:39     ` Ludovic Courtès
  2016-01-08  7:13       ` Eric Bavier
  0 siblings, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2015-12-21 10:39 UTC (permalink / raw)
  To: Eric Bavier; +Cc: guix-devel

Eric Bavier <ericbavier@openmailbox.org> skribis:

> On Sun, 20 Dec 2015 23:11:07 +0100
> ludo@gnu.org (Ludovic Courtès) wrote:
>
>> Eric Bavier <ericbavier@openmailbox.org> skribis:
>> 
>> > +(define (unison-doc ext version hash)
>> > +  (origin
>> > +    (method url-fetch)
>> > +    (uri (string-append "https://www.seas.upenn.edu/~bcpierce/unison/"
>> > +                        "download/releases/unison-" version "/unison-"
>> > +                        version "-manual." ext))
>> > +    (sha256 (base32 hash))))
>> 
>> [...]
>> 
>> > +     `(("doc-pdf"
>> > +        ,(unison-doc "pdf" version
>> > +                     "0y5mywjn352nw4wqli94gnc5vn1f72g56jqqk1nqajz0ark998nb"))
>> > +       ("doc-ps"
>> > +        ,(unison-doc "ps" version
>> > +                     "11awy1xxhmckwnx42hllmngmx8q4ck18vpwpgfqqhj0x8vx0b3ha"))
>> > +       ("doc-html"
>> > +        ,(unison-doc "html" version
>> > +                     "06myrpv067j5ffm265fm0a83gm41j9bv3ps3yiyb1hqgfy1qy3ah"))))
>> 
>> Could we instead build them from source?
>
> Possibly.  The documentation source is not available in the download
> tarball, only in the developer svn repository, so we could do an svn
> fetch of that.  Would that be alright?

Sure.

>> I understand that building the PDF/PS would require an extra dependency
>> on TeX Live.  This could be:
>> 
>>   1. ignored, on the grounds that people with substitutes enabled will
>>      not have to download TeX Live; or:
>> 
>>   2. addressed by having only the HTML documentation built, on the
>>      grounds the HTML is more appropriate for on-screen reading.
>> 
>> WDYT?
>
> Option 1 might be fine.  The 'coq' package also requires both texlive
> and hevea for its documentation.

OK!

Ludo’.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: unison: Add "doc" output.
  2015-12-21 10:39     ` Ludovic Courtès
@ 2016-01-08  7:13       ` Eric Bavier
  2016-01-08 10:19         ` Ludovic Courtès
  0 siblings, 1 reply; 9+ messages in thread
From: Eric Bavier @ 2016-01-08  7:13 UTC (permalink / raw)
  Cc: guix-devel

[-- Attachment #1: Type: text/plain, Size: 1638 bytes --]

On Mon, 21 Dec 2015 11:39:10 +0100
ludo@gnu.org (Ludovic Courtès) wrote:

> Eric Bavier <ericbavier@openmailbox.org> skribis:
> 
> > On Sun, 20 Dec 2015 23:11:07 +0100
> > ludo@gnu.org (Ludovic Courtès) wrote:
> >  
> >> Eric Bavier <ericbavier@openmailbox.org> skribis:
> >>   
> >> > +(define (unison-doc ext version hash)
> >> > +  (origin
> >> > +    (method url-fetch)
> >> > +    (uri (string-append "https://www.seas.upenn.edu/~bcpierce/unison/"
> >> > +                        "download/releases/unison-" version "/unison-"
> >> > +                        version "-manual." ext))
> >> > +    (sha256 (base32 hash))))  
> >> 
> >> [...]
> >>   
> >> > +     `(("doc-pdf"
> >> > +        ,(unison-doc "pdf" version
> >> > +                     "0y5mywjn352nw4wqli94gnc5vn1f72g56jqqk1nqajz0ark998nb"))
> >> > +       ("doc-ps"
> >> > +        ,(unison-doc "ps" version
> >> > +                     "11awy1xxhmckwnx42hllmngmx8q4ck18vpwpgfqqhj0x8vx0b3ha"))
> >> > +       ("doc-html"
> >> > +        ,(unison-doc "html" version
> >> > +                     "06myrpv067j5ffm265fm0a83gm41j9bv3ps3yiyb1hqgfy1qy3ah"))))  
> >> 
> >> Could we instead build them from source?  
> >
> > Possibly.  The documentation source is not available in the download
> > tarball, only in the developer svn repository, so we could do an svn
> > fetch of that.  Would that be alright?  
> 
> Sure.

Attached is an updated patch that pulls the unison source from the
developer svn repository and builds the documentation from that.  The
origin snippet is a bit more than I had hoped for, but it works.

`~Eric

[-- Attachment #2: 0001-gnu-unison-Add-doc-output.patch --]
[-- Type: text/plain, Size: 6599 bytes --]

From c8a0086db4d78091e06326a5ffe55a7bf2543091 Mon Sep 17 00:00:00 2001
From: Eric Bavier <bavier@member.fsf.org>
Date: Fri, 18 Dec 2015 19:29:22 -0600
Subject: [PATCH] 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.
---
 gnu/packages/ocaml.scm | 91 +++++++++++++++++++++++++++++++++++++++++++++-----
 1 file changed, 82 insertions(+), 9 deletions(-)

diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 7f80fc8..19943cf 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -3,6 +3,7 @@
 ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
 ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
 ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com>
+;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -23,6 +24,7 @@
   #:use-module ((guix licenses) #:hide (zlib))
   #:use-module (guix packages)
   #:use-module (guix download)
+  #:use-module (guix svn-download)
   #:use-module (guix utils)
   #:use-module (guix build-system gnu)
   #:use-module (gnu packages)
@@ -36,6 +38,8 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages xorg)
   #:use-module (gnu packages texlive)
+  #:use-module (gnu packages ghostscript)
+  #:use-module (gnu packages lynx)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages python)
   #:use-module (gnu packages ncurses)
@@ -496,16 +500,67 @@ libpanel, librsvg and quartz.")
     (version "2.48.3")
     (source
       (origin
-        (method url-fetch)
-          (uri (string-append "https://www.seas.upenn.edu/~bcpierce/unison/"
-                              "download/releases/stable/unison-" version
-                              ".tar.gz"))
-          (sha256
-            (base32
-              "10sln52rnnsj213jy3166m0q97qpwnrwl6mm529xfy10x3xkq3gl"))))
+        (method svn-fetch)
+        (uri (svn-reference
+              (url (string-append "https://webdav.seas.upenn.edu/svn/"
+                                  "unison/branches/"
+                                  (version-major+minor version)))
+              (revision 535)))
+        (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)
+                             (begin
+                               (display line out)
+                               (loop (string->number (match:substring m 1))))))
+                       ((regexp-exec rev-rx line)
+                        => (lambda (m)
+                             (begin
+                               (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)
+    (outputs '("out"
+               "doc"))                  ; 1.9 MiB of documentation
     (native-inputs
-     `(("ocaml" ,ocaml)))
+     `(("ocaml" ,ocaml)
+       ;; For documentation
+       ("ghostscript" ,ghostscript)
+       ("texlive" ,texlive)
+       ("hevea" ,hevea)
+       ("lynx" ,lynx)))
     (arguments
      `(#:parallel-build? #f
        #:parallel-tests? #f
@@ -522,7 +577,25 @@ libpanel, librsvg and quartz.")
                       (bin (string-append out "/bin")))
                  (mkdir-p bin)
                  (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))
+                                       '("ps" "pdf" "dvi" "html")))
+                        #t))))))))
     (home-page "https://www.cis.upenn.edu/~bcpierce/unison/")
     (synopsis "File synchronizer")
     (description
-- 
2.6.3


^ permalink raw reply related	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: unison: Add "doc" output.
  2016-01-08  7:13       ` Eric Bavier
@ 2016-01-08 10:19         ` Ludovic Courtès
  2016-01-17  6:28           ` Eric Bavier
  0 siblings, 1 reply; 9+ messages in thread
From: Ludovic Courtès @ 2016-01-08 10:19 UTC (permalink / raw)
  To: Eric Bavier; +Cc: guix-devel

Eric Bavier <ericbavier@openmailbox.org> skribis:

> From c8a0086db4d78091e06326a5ffe55a7bf2543091 Mon Sep 17 00:00:00 2001
> From: Eric Bavier <bavier@member.fsf.org>
> Date: Fri, 18 Dec 2015 19:29:22 -0600
> Subject: [PATCH] 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.

[...]

> +        (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.

Fun.  :-)

> +            (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)
> +                             (begin

‘begin’ can be omitted here…

> +                       ((regexp-exec rev-rx line)
> +                        => (lambda (m)
> +                             (begin

… and here.

> +                        (for-each (lambda (f)
> +                                    (install-file f doc))
> +                                  (map (lambda (ext)
> +                                         (string-append
> +                                          "doc/unison-manual." ext))
> +                                       '("ps" "pdf" "dvi" "html")))

What about installing only HTML?

I find that HTML (and Info, and man) is more convenient to read on-line
than PDFs.  We rarely include PDF documentation in packages.

Of course, avoiding PDF/PS/DVI allows us to remove the dependency on
TeX Live.  Last, from discussions I heard at the Reproducible Build
Summit, I think DVIs and maybe PS/PDFs are not bit-reproducible
out-of-the-box.

WDYT?

Maybe we should have a policy on how to choose the installed
documentation formats.

Thanks for finding out how to build documentation from source!

Ludo’.

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: unison: Add "doc" output.
  2016-01-08 10:19         ` Ludovic Courtès
@ 2016-01-17  6:28           ` Eric Bavier
  2016-01-18  9:49             ` Ludovic Courtès
  0 siblings, 1 reply; 9+ messages in thread
From: Eric Bavier @ 2016-01-17  6:28 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

On Fri, 08 Jan 2016 11:19:34 +0100
ludo@gnu.org (Ludovic Courtès) wrote:

> Eric Bavier <ericbavier@openmailbox.org> skribis:
> 
> > From c8a0086db4d78091e06326a5ffe55a7bf2543091 Mon Sep 17 00:00:00 2001
> > From: Eric Bavier <bavier@member.fsf.org>
> > Date: Fri, 18 Dec 2015 19:29:22 -0600
> > Subject: [PATCH] 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.  
> 
> [...]
> 
> > +        (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.  
> 
> Fun.  :-)
> 
> > +            (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)
> > +                             (begin  
> 
> ‘begin’ can be omitted here…
> 
> > +                       ((regexp-exec rev-rx line)
> > +                        => (lambda (m)
> > +                             (begin  
> 
> … and here.
> 
> > +                        (for-each (lambda (f)
> > +                                    (install-file f doc))
> > +                                  (map (lambda (ext)
> > +                                         (string-append
> > +                                          "doc/unison-manual." ext))
> > +                                       '("ps" "pdf" "dvi" "html")))  
> 
> What about installing only HTML?
> 
> I find that HTML (and Info, and man) is more convenient to read on-line
> than PDFs.  We rarely include PDF documentation in packages.

I sometimes find PDF documentation more visually appealing, but only if
they having functioning hyperlinks.  Which unison's pdf docs lack,
so yes, I think we can install just the HTML.

> Of course, avoiding PDF/PS/DVI allows us to remove the dependency on
> TeX Live.  Last, from discussions I heard at the Reproducible Build
> Summit, I think DVIs and maybe PS/PDFs are not bit-reproducible
> out-of-the-box.

However, it appears the unison-manual.tex needs to be run through LaTeX
at least once in order to get a TOC for hevea to include in the html
output.  So it seems we can't remove TeX Live.  Sigh...
 
> WDYT?

I don't want to spend much more time on this, so I think I'll push a
slight modification of this patch that just doesn't install the pdf,
ps, and dvi output for the sake a reproducibility.

> Maybe we should have a policy on how to choose the installed
> documentation formats.

Info > HTML > man > txt > PDF > PS ?

> Thanks for finding out how to build documentation from source!

No problem; kinda fun. :)

`~Eric

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [PATCH] gnu: unison: Add "doc" output.
  2016-01-17  6:28           ` Eric Bavier
@ 2016-01-18  9:49             ` Ludovic Courtès
  0 siblings, 0 replies; 9+ messages in thread
From: Ludovic Courtès @ 2016-01-18  9:49 UTC (permalink / raw)
  To: Eric Bavier; +Cc: guix-devel

Eric Bavier <ericbavier@openmailbox.org> skribis:

> On Fri, 08 Jan 2016 11:19:34 +0100
> ludo@gnu.org (Ludovic Courtès) wrote:

[...]

>> What about installing only HTML?
>> 
>> I find that HTML (and Info, and man) is more convenient to read on-line
>> than PDFs.  We rarely include PDF documentation in packages.
>
> I sometimes find PDF documentation more visually appealing, but only if
> they having functioning hyperlinks.  Which unison's pdf docs lack,
> so yes, I think we can install just the HTML.

OK.

>> Of course, avoiding PDF/PS/DVI allows us to remove the dependency on
>> TeX Live.  Last, from discussions I heard at the Reproducible Build
>> Summit, I think DVIs and maybe PS/PDFs are not bit-reproducible
>> out-of-the-box.
>
> However, it appears the unison-manual.tex needs to be run through LaTeX
> at least once in order to get a TOC for hevea to include in the html
> output.  So it seems we can't remove TeX Live.  Sigh...

Heh.

> I don't want to spend much more time on this, so I think I'll push a
> slight modification of this patch that just doesn't install the pdf,
> ps, and dvi output for the sake a reproducibility.

OK!  Well maybe you could install the PDF, I haven’t check whether our
packages and build environment actually fail to create PDFs in a
reproducible fashion.  Your call.

>> Maybe we should have a policy on how to choose the installed
>> documentation formats.
>
> Info > HTML > man > txt > PDF > PS ?

Roughly, yes.

Thank you!

Ludo’.

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2016-01-18  9:49 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-12-19  1:42 [PATCH] gnu: unison: Add "doc" output Eric Bavier
2015-12-20 20:57 ` Leo Famulari
2015-12-20 22:11 ` Ludovic Courtès
2015-12-21  4:01   ` Eric Bavier
2015-12-21 10:39     ` Ludovic Courtès
2016-01-08  7:13       ` Eric Bavier
2016-01-08 10:19         ` Ludovic Courtès
2016-01-17  6:28           ` Eric Bavier
2016-01-18  9:49             ` Ludovic Courtès

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).