guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH 5/5] gnu: python-acme: Generate and install documentation.


From: Leo Famulari
Subject: Re: [PATCH 5/5] gnu: python-acme: Generate and install documentation.
Date: Thu, 18 Feb 2016 12:46:50 -0500
User-agent: Mutt/1.5.24 (2015-08-30)

On Thu, Feb 18, 2016 at 01:51:40PM +0100, Ricardo Wurmus wrote:
> 
> Leo Famulari <address@hidden> writes:
> 
> > * gnu/packages/tls.scm (acme)[arguments]: Add 'docs' phase.
> > [native-inputs]: Add python-sphinx, python-sphinxcontrib-programoutput,
> > python-sphinx-rtd-theme, python-setuptools, texinfo.
> > ---
> >  gnu/packages/tls.scm | 19 ++++++++++++++++---
> >  1 file changed, 16 insertions(+), 3 deletions(-)
> >
> > diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm
> > index 00d4805..dc6f9b4 100644
> > --- a/gnu/packages/tls.scm
> > +++ b/gnu/packages/tls.scm
> > @@ -340,11 +340,24 @@ security, and applying best practice development 
> > processes.")
> >                 (display "\n[easy_install]\nzip_ok = 0\n"
> >                          port)
> >                 (close-port port)
> > -               #t))))))
> > -    ;; TODO: Add optional inputs for testing and building documentation.
> > +               #t)))
> > +         (add-after 'install 'docs
> > +           (lambda* (#:key outputs #:allow-other-keys)
> > +             (let* ((out (assoc-ref outputs "out"))
> > +                    (man (string-append out "/share/man/man1"))
> > +                    (info (string-append out "/info")))
> > +               (and (zero? (system* "make" "-C" "docs" "man" "info"))
> > +                    (install-file "docs/_build/texinfo/acme-python.info" 
> > info)
> > +                    (install-file "docs/_build/man/acme-python.1" 
> > man))))))))
> 
> “install-file” calls “copy-file” last and according to the Guile manual
> the return value of “copy-file” is unspecified.  In practise this is not
> #f, of course, so all the three arguments to “(and ...)” will be
> evaluated as long as “make” does not fail.
> 
> However, “and” just returns the return value of its last argument
> (unless one of the arguments evaluates to “#f”), which is unspecified,
> not “#t”.  As we want successful phases to return “#t” you could
> explicitly add “#t” as a fourth argument to “(and ...)”.
> 
> Not sure if that’s really necessary, but you did ask for comments about
> your use of “and”... :)

Thanks for taking the time to write this!

I didn't realize that copy-file's return value is unspecified. I've
found that it does tend to make the whole build fail when the source
file doesn't exist, so it must be returning #f in that case, right?

In any case, I can't rely on it if it's unspecified.

I wouldn't be surprised if "make" fails the next time this is updated —
the process seems rather complicated *and* untested. Since I don't want
to proceed if make fails I guess that I should use (and ...), and
explicity return #t from the function. What do you think?



reply via email to

[Prev in Thread] Current Thread [Next in Thread]