unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Leo Famulari <leo@famulari.name>
To: "Clément Barthélemy" <cbarthelemy@fdn.fr>
Cc: guix-devel@gnu.org
Subject: Re: [PATCH] gnu: Add biber
Date: Wed, 16 Mar 2016 03:52:21 -0400	[thread overview]
Message-ID: <20160316075221.GB30457@jasmine> (raw)
In-Reply-To: <87h9g84ss0.fsf@chartreuse.clemnt.net>

On Mon, Mar 14, 2016 at 11:08:15PM +0100, Clément Barthélemy wrote:
> Hi everyone,
> 
> Attached is a series of patches (my first!) to package biber (a
> BibTeX replacement written in Perl). It's kind of a work in
> progress, I still have some problems :
> 
> 1. The build process spits out permission errors for several
> packages during the strip phase. It doesn't result in a failure,
> so I am not sure what to do.

File permission errors? If so, it's possible to change the permissions
of files in the package definition — grep in 'gnu/packages' for 'chmod'
for examples.

> 2. The perl-text-bibtex package cannot validate its runpath
> because it doesn't look for a shared library in the right
> directory. I disabled the validate-runpath phase, but surely there
> is a better way.

If that fails, then mostly likely perl-text-bibtex won't work, since it
won't be able to find the library. If it seems to work for you, could it 
be finding a compatible library elsewhere on your system?

I don't know the canonical way to provide these paths for Perl packages.
Anyone?

> 3. I didn't use the git-fetch method for the biber package
> because it always pulls an old (1.8) version from github.

Weird — did you give v2.4 as the value of the commit? But, do you want
to build from the Git repo, or from the tarball?

> 4. Finally, I am not sure the executable works, I still need to
> test it.

Okay, then I will not try to build the patches yet. But I will give some
comments below.

Thanks for all the patches!

> * gnu/packages/perl.scm (perl-autovivification): New variable.

Okay

> * gnu/packages/perl.scm (perl-business-isbn): New variable.

[...]

> +    (native-inputs
> +     `(("perl-extutils-makemaker" ,perl-extutils-makemaker)
> +       ("perl-business-isbn-data" ,perl-business-isbn-data)))

Typically, native-inputs are build-time dependencies — is that desired
for these?  They are "native" to the architecture of the builder and not
referenced by the final package, if I understand correctly.

I have the same question about some of the later packages in the series,
but I won't bring it up again.

> * gnu/packages/perl.scm (perl-business-isbn-data): New variable.

Okay

> * gnu/packages/perl.scm (perl-business-ismn): New variable.

Okay.

> * gnu/packages/perl.scm (perl-business-issn): New variable.

Okay.

> * gnu/packages/perl.scm (perl-data-compare): New variable.
> +    (synopsis "Comparition of data structures")

Spelling: s/Comparition/Comparison

> +    (description "This module compares arbitrary data structures.")

How about giving the full sentence from the README?
"This module compares arbitrary data structures to see if they are
copies of each other."

> * gnu/packages/perl.scm (perl-data-uniqid): New variable.

Okay.

> * gnu/packages/perl.scm (perl-date-simple): New variable.
> +    (synopsis "Simple date object for Perl")
> +    (description "This modules provides a simple date object for use in Perl
> +program.")

"This module provides a simple date object for use in a Perl program."

Also, I don't know Perl, so "simple date object" doesn't explain much to
me.  Would this make sense to a Perl programmer? If so, okay.

> * gnu/packages/perl.scm (perl-encode-eucjpascii): New variable.
> +    (description "This module provides an eucJP-open mapping.")

Can you add another sentence to the description that translates the
jargon?

> +(define-public perl-encode-hanextra

This one got mixed up in the commit of perl-encode-eucjpascii. Anyways,
it looks good as its own commit.

> * gnu/packages/perl.scm (perl-encode-jis2k): New variable.
> +    (description "This module implements encodings that covers JIS X 0213
> +charset (AKA JIS 2000, hence the module name).")

Again, can you try to clarify the jargon in another sentence or two?

> * gnu/packages/perl.scm (perl-extutils-libbuilder): New variable.

Okay

> * gnu/packages/perl.scm (perl-extutils-makemaker): New variable.

Okay

> * gnu/packages/perl.scm (perl-log-log4perl): New variable.

Okay

> * gnu/packages/perl.scm (perl-readonly-xs): New variable.

Okay

> * gnu/packages/perl.scm (perl-text-bibtex): New variable.
> +    (arguments
> +      `(#:phases
> +        (modify-phases %standard-phases
> +          ;; phase validate-runpath fails because it doesn't look for the
> +          ;; shared libraries in the %output dir. There may be a better way to
> +          ;; fix that.
> +          (delete 'validate-runpath))))
> +    (native-inputs
> +     `(("perl-config-autoconf" ,perl-config-autoconf)
> +       ("perl-extutils-libbuilder" ,perl-extutils-libbuilder)
> +       ("perl-module-build" ,perl-module-build)))

We need to fix the runpath issue, and decide whether or not the inputs
should be native-inputs.

> +    (home-page "https://github.com/ambs/Text-BibTeX")
> +    (synopsis "Perl library to deal with BibTeX data")
> +    (description "Text::BibTeX is a Perl library for reading, parsing, and
> +processing BibTeX files.")
> +    (license gpl1+)))

Some of the files are under the Perl license, others GPL2 or later. I
didn't check everything. Can you research this and list all of the
licenses?

> * gnu/packages/perl.scm (perl-text-roman): New variable.

Okay

> * gnu/packages/perl.scm (perl-tie-cycle): New variable.

Okay

> * gnu/packages/perl.scm (perl-unicode-collate): New variable.

Okay

> * gnu/packages/perl.scm (perl-unicode-normalize): New variable.

Okay

> * gnu/packages/xml.scm (perl-xml-libxslt): New variable.

Okay

> * gnu/packages/xml.scm (perl-xml-writer): New variable.

Okay

> * gnu/packages/web.scm (perl-mozilla-ca): New variable.
> +    (home-page "https://github.com/gisle/mozilla-ca")
> +    (synopsis "Mozilla's CA cert bundle in PEM format for Perl")
> +    (description "This module provides a copy of Mozilla's bundle of
> +Certificate Authority certificates in a form that can be consumed by modules
> +and libraries based on OpenSSL.")

How does this work? Do you think it's safe to use?

> * gnu/packages/texlive.scm (biber): New variable.
[...]
> +  #:use-module (guix git-download)

This can be removed if you decide to use url-fetch instead of git-fetch.

> +(define-public biber
> +  (package
> +    (name "biber")
> +    (version "2.4")
> +    (source
> +     (origin
> +       ;; (method git-fetch) always pulls version 1.8

As discussed above...

> +    (native-inputs
> +     `(("perl-business-isbn-data" ,perl-business-isbn-data)
> +       ("perl-class-accessor" ,perl-class-accessor)
> +       ("perl-config-autoconf" ,perl-config-autoconf)
> +       ("perl-extutils-libbuilder" ,perl-extutils-libbuilder)
> +       ("perl-file-find-rule" ,perl-file-find-rule)
> +       ("perl-file-which" ,perl-file-which)
> +       ("perl-module-build" ,perl-module-build)
> +       ("perl-test-differences" ,perl-test-differences)
> +       ("perl-test-pod" ,perl-test-pod)
> +       ("perl-test-pod-coverage" ,perl-test-pod-coverage)))
> +    (inputs

... as above ...

> +     `(#:phases
> +       (modify-phases %standard-phases
> +         (add-before 'check 'set-ld-library-path-and-remove-failing-test

Are these changes "atomic"? Or should they be separate phases?

> +           (lambda* (#:key inputs #:allow-other-keys)
> +             ;; libttparse.so is in lib64 of perl-text-bibtex
> +             (let ((path
> +                    (string-append
> +                      (assoc-ref inputs "perl-text-bibtex") "/lib64")))
> +               (format #t "setting LD_LIBRARY_PATH to ~s~%" path)

Is this debug tracing?

> +               (setenv "LD_LIBRARY_PATH" path))

Should the package be built with this variable set? 

> +             ;; the sortcase test fails for some reason related to the locale
> +             ;; (see https://github.com/plk/biber/issues/107)
> +             (format #t "removing test in t/sort-order.t")
> +             (substitute* "t/sort-order.t"
> +               (("use Test::More tests => 15;") "use Test::More tests => 14;"))
> +             (substitute* "t/sort-order.t"
> +               ;; l. 504
> +               (("^is_deeply\\(.*location - sortcase=1.*$") "")))))))
> +    (home-page "https://github.com/plk/biber")
> +    (synopsis "BibTeX replacement for users of biblatex")
> +    (description "Biber is a Perl program aiming at providing a customized and
> +sophisticated data preparation backend for biblatex.")
> +    (license license:gpl1+)))                     ;GPLv1+ | Artistic

As above, please provide a list of licenses if there is more than one. I
also found the file 'biber/etc/bibtex.g', which bears the GPL2+.

  reply	other threads:[~2016-03-16  7:52 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-14 22:08 [PATCH] gnu: Add biber Clément Barthélemy
2016-03-16  7:52 ` Leo Famulari [this message]
2016-03-17 21:55 ` Ludovic Courtès
2016-03-17 22:06   ` Leo Famulari

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20160316075221.GB30457@jasmine \
    --to=leo@famulari.name \
    --cc=cbarthelemy@fdn.fr \
    --cc=guix-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).