From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Kost Subject: Re: [PATCH] gnu: Add bamm. Date: Sat, 13 Aug 2016 17:46:41 +0300 Message-ID: <87mvkgsp4e.fsf@gmail.com> References: <20160813111939.31610-1-donttrustben@gmail.com> <20160813111939.31610-2-donttrustben@gmail.com> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:43812) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bYaD0-0005D0-Nc for guix-devel@gnu.org; Sat, 13 Aug 2016 10:46:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bYaCx-00072f-IE for guix-devel@gnu.org; Sat, 13 Aug 2016 10:46:46 -0400 Received: from mail-wm0-x244.google.com ([2a00:1450:400c:c09::244]:34363) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bYaCx-00072b-6q for guix-devel@gnu.org; Sat, 13 Aug 2016 10:46:43 -0400 Received: by mail-wm0-x244.google.com with SMTP id q128so2641154wma.1 for ; Sat, 13 Aug 2016 07:46:42 -0700 (PDT) In-Reply-To: <20160813111939.31610-2-donttrustben@gmail.com> (Ben Woodcroft's message of "Sat, 13 Aug 2016 21:19:39 +1000") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Ben Woodcroft Cc: guix-devel@gnu.org Ben Woodcroft (2016-08-13 14:19 +0300) wrote: > * gnu/packages/bioinformatics.scm (bamm): New variable. > --- > gnu/packages/bioinformatics.scm | 94 +++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 94 insertions(+) > > > diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm > index b206f33..7728118 100644 > --- a/gnu/packages/bioinformatics.scm > +++ b/gnu/packages/bioinformatics.scm > @@ -136,6 +136,100 @@ tRNA consensus sequences and RNA structure. It also outputs the secondary > structure of the predicted RNA.") > (license license:gpl2))) > > +(define-public bamm > + (package > + (name "bamm") > + (version "1.7.2a") > + (source (origin > + (method url-fetch) > + ;; BamM is not available on pypi. > + (uri (string-append > + "https://github.com/Ecogenomics/BamM/archive/v" > + version ".tar.gz")) > + (file-name (string-append name "-" version ".tar.gz")) > + (sha256 > + (base32 > + "0nb20yml39f8fh0cahpjywsl91irh9yskig549c17xkrkl74czsq")) > + (modules '((guix build utils))) > + (snippet > + `(begin > + ;; Delete bundled htslib. > + (delete-file-recursively "c/htslib-1.3.1") > + #t)))) > + (build-system python-build-system) > + (arguments > + `(#:python ,python-2 ; BamM is Python 2 only. > + ;; Do not use bundled libhts. Do use the bundled libcfu because it has > + ;; been modified from its original form. > + #:configure-flags (list > + "--with-libhts-lib" > + (string-append (assoc-ref %build-inputs "htslib") > + "/lib") > + "--with-libhts-inc" > + (string-append (assoc-ref %build-inputs "htslib") > + "/include/htslib")) I would avoid this duplicating of (assoc-ref %build-inputs "htslib"): (let ((htslib (assoc-ref %build-inputs "htslib"))) (list "--with-libhts-lib" (string-append htslib "/lib") "--with-libhts-inc" (string-append htslib "/include/htslib"))) > + #:phases > + (modify-phases %standard-phases > + (add-after 'unpack 'autogen > + (lambda _ > + ;; Use autogen so that 'configure' works. > + (with-directory-excursion "c" > + (substitute* "autogen.sh" > + (("/bin/sh") (which "sh"))) > + (setenv "CONFIG_SHELL" (which "sh")) > + (substitute* "configure" > + (("/bin/sh") (which "sh"))) > + (zero? (system* "./autogen.sh"))))) and here as well: you call (which "sh") 3 times! I think it's better to do (let ((sh (which "sh"))) ...) > + (delete 'build) > + ;; Run tests after installation so compilation only happens once. > + (delete 'check) > + (add-after 'install 'post-install-check > + (lambda* (#:key inputs outputs #:allow-other-keys) > + (setenv "PATH" > + (string-append (assoc-ref outputs "out") > + "/bin:" > + (getenv "PATH"))) > + (setenv "PYTHONPATH" > + (string-append > + (assoc-ref outputs "out") > + "/lib/python" > + (string-take (string-take-right > + (assoc-ref inputs "python") 5) 3) > + "/site-packages:" > + (getenv "PYTHONPATH"))) > + (zero? (system* "nosetests")))) > + (add-after 'install 'wrap-executable > + (lambda* (#:key inputs outputs #:allow-other-keys) 'inputs' argument is not needed here > + (let* ((out (assoc-ref outputs "out")) > + (path (getenv "PATH"))) > + (wrap-program (string-append out "/bin/bamm") > + `("PATH" ":" prefix (,path)))) > + #t))))) > + (native-inputs > + `(("autoconf" ,autoconf) > + ("automake" ,automake) > + ("libtool" ,libtool) > + ("zlib" ,zlib) > + ("python-nose" ,python2-nose) > + ("python-pysam" ,python2-pysam) > + ("python-setuptools" ,python2-setuptools))) > + (inputs > + `(("htslib" ,htslib) > + ("samtools" ,samtools) > + ("bwa" ,bwa) > + ("grep" ,grep) > + ("sed" ,sed) > + ("coreutils" ,coreutils))) > + (propagated-inputs > + `(("python-numpy" ,python2-numpy))) > + (home-page "http://ecogenomics.github.io/BamM/") > + (synopsis "Metagenomics-focused BAM file manipulator") > + (description > + "BamM is a C library, wrapped in python, to efficiently generate and > +parse BAM files, specifically for the analysis of metagenomic data. For > +instance, it implements several methods to assess contig-wise read coverage.") > + (license license:lgpl3+))) > + > (define-public bamtools > (package > (name "bamtools") -- Alex