guix-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] gnu: Add ruby-libxml and bioruby.


From: Thompson, David
Subject: Re: [PATCH] gnu: Add ruby-libxml and bioruby.
Date: Tue, 15 Sep 2015 08:58:28 -0400

On Tue, Sep 15, 2015 at 8:15 AM, Pjotr Prins <address@hidden> wrote:
>     * gnu/packages/ruby.scm (ruby-libxml): New variable.
>     * gnu/packages/bioinformatics.scm (bioruby): New variable.
> ---
>  gnu/packages/bioinformatics.scm | 47 
> +++++++++++++++++++++++++++++++++++++++++
>  gnu/packages/ruby.scm           | 26 +++++++++++++++++++++++
>  2 files changed, 73 insertions(+)

One package per patch, please.

> diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
> index 1f34211..b297ef2 100644
> --- a/gnu/packages/bioinformatics.scm
> +++ b/gnu/packages/bioinformatics.scm
> @@ -2642,3 +2642,50 @@ position for indels.  Bio-locus allows users to store 
> this chr+pos or
>  chr+pos+alt information in a database.")
>      (home-page "https://github.com/pjotrp/bio-locus";)
>      (license license:expat)))
> +
> +(define-public bioruby
> +  (package
> +    (name "bioruby")
> +    (version "1.5.0")
> +    (source
> +      (origin
> +        (method url-fetch)
> +        (uri (rubygems-uri "bio" version))
> +        (sha256
> +          (base32
> +            "01k2fyjl5fpx4zn8g6gqiqvsg2j1fgixrs9p03vzxckynxdq3wmc"))))
> +    (build-system ruby-build-system)
> +    (native-inputs `(("ruby-libxml" ,ruby-libxml)))

This should be a propagated input.

> +    (inputs
> +     `(("coreutils" ,coreutils)  ; required for /bin/echo in tests

Coreutils is an implict input to the Ruby build system.

> +       ("which" ,which)))        ; required for tests

This should be a native input since it's only needed at build time.

> +    (arguments
> +     `(#:phases
> +        (alist-cons-before
> +         'build 'replace-sh-commands
> +         (lambda _
> +           (substitute* '("test/functional/bio/test_command.rb")
> +             (("/bin/sh") (which "sh")))
> +           (substitute* '("test/functional/bio/test_command.rb")
> +             (("/bin/ls") (which "ls")))
> +           (substitute* '("test/functional/bio/test_command.rb")
> +             (("which") (which "which")))
> +           (substitute* '("test/functional/bio/test_command.rb",
> +                          "test/data/command/echoarg2.sh")
> +             (("/bin/echo") (which "echo"))))
> +         %standard-phases)))
> +    (synopsis
> +      "Ruby library, shell and utilities for bioinformatics")
> +    (description
> +      "BioRuby comes with a comprehensive set of free development

Everything in Guix is necessarily free, so we like to keep "free",
"open", etc. out of package descriptions.

> +tools and libraries for bioinformatics and molecular biology, for the
> +Ruby programming language.  BioRuby has components for sequence
> +analysis, pathway analysis, protein modelling and phylogenetic
> +analysis; it supports many widely used data formats and provides easy
> +access to databases, external programs and public web services,
> +including BLAST, KEGG, GenBank, MEDLINE and GO.")
> +    (home-page "http://bioruby.org/";)
> +    ;; Code is released under Ruby license, except for setup
> +    ;; (LGPLv2.1+), scripts in samples (GPL2 and GPL2+)
> +    (license (list license:ruby license:lgpl2.1+ license:gpl2
> +                   license:gpl2+ ))))

Wouldn't this make the collective work GPL2+?  Ludo or Mark, can you
weigh in here?

> diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm
> index ee0acc8..1ca5f96 100644
> --- a/gnu/packages/ruby.scm
> +++ b/gnu/packages/ruby.scm
> @@ -465,6 +465,32 @@ extensions.")
>      (home-page "http://codeforpeople.com/lib/ruby/orderedhash/";)
>      (license license:public-domain)))
>
> +(define-public ruby-libxml
> +  (package
> +    (name "ruby-libxml")
> +    (version "2.8.0")
> +    (source
> +      (origin
> +        (method url-fetch)
> +        (uri (rubygems-uri "libxml-ruby" version))
> +        (sha256
> +          (base32
> +            "1dhjqp4r9vkdp00l6h1cj8qfndzxlhlxk6b9g0w4v55gz857ilhb"))))
> +    (build-system ruby-build-system)
> +    (inputs `(("zlib" ,zlib)
> +              ("libxml2" ,libxml2)))
> +    (arguments
> +     '(#:tests? #f  ; tests need installation of build first

Usually gems with native extensions just redundantly build themselves
in the source directory before running tests, which I guess is not the
case here.

It looks like you need to at least add ruby-rake-compiler to
native-inputs and run 'rake compile' before running the tests.  I
tried to do this outside the build container from a git checkout and
several tests failed.  Give it a shot in the build recipe and see how
it goes.  If the problems are very difficult to solve, we can leave
the tests disabled with a note about the failures and problems to
solve.

Unfortunately, it seems there's no way to avoid compiling native
extensions twice when we do run tests since it needs to be compiled in
the source tree for tests, and then again when running 'gem install'.
The Ruby way of building things leaves much to be desired.


> +       #:gem-flags (list "--"
> +                         (string-append "--with-xml2-include="
> +                                        (assoc-ref %build-inputs "libxml2")
> +                                        "/include/libxml2" ))))
> +    (synopsis "Ruby bindings for the GNOME Libxml2 XML toolkit")
> +    (description "The Libxml-Ruby project provides Ruby language
> +bindings for the GNOME Libxml2 XML toolkit.")
> +    (home-page "http://xml4r.github.com/libxml-ruby";)
> +    (license license:expat)))
> +
>  (define-public ruby-xml-simple
>    (package
>      (name "ruby-xml-simple")
> --
> 2.4.3

Could you look into the above issues and send updated patches?
Thanks!

- Dave



reply via email to

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