From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ben Woodcroft Subject: [PATCH 3/3] gnu: Add khmer. Date: Fri, 17 Jun 2016 11:23:21 +1000 Message-ID: <1466126601-30932-4-git-send-email-donttrustben@gmail.com> References: <1466126601-30932-1-git-send-email-donttrustben@gmail.com> Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:55746) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bDiVg-00085E-Si for Guix-devel@gnu.org; Thu, 16 Jun 2016 21:23:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bDiVc-0000vh-3Y for Guix-devel@gnu.org; Thu, 16 Jun 2016 21:23:48 -0400 Received: from mail-pf0-x244.google.com ([2607:f8b0:400e:c00::244]:35895) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bDiVb-0000vK-PG for Guix-devel@gnu.org; Thu, 16 Jun 2016 21:23:44 -0400 Received: by mail-pf0-x244.google.com with SMTP id i123so2022353pfg.3 for ; Thu, 16 Jun 2016 18:23:43 -0700 (PDT) Received: from localhost.localdomain ([103.25.181.216]) by smtp.googlemail.com with ESMTPSA id pk18sm32320490pab.27.2016.06.16.18.23.39 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 16 Jun 2016 18:23:41 -0700 (PDT) In-Reply-To: <1466126601-30932-1-git-send-email-donttrustben@gmail.com> 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: Guix-devel@gnu.org * gnu/packages/bioinformatics.scm (khmer): New variable. * gnu/packages/patches/khmer-use-libraries.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. --- gnu/local.mk | 1 + gnu/packages/bioinformatics.scm | 92 ++++++++++++++++++++++++++ gnu/packages/patches/khmer-use-libraries.patch | 16 +++++ 3 files changed, 109 insertions(+) create mode 100644 gnu/packages/patches/khmer-use-libraries.patch diff --git a/gnu/local.mk b/gnu/local.mk index 55fea0e..bbbe986 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -590,6 +590,7 @@ dist_patch_DATA = \ %D%/packages/patches/jasper-CVE-2016-2089.patch \ %D%/packages/patches/jasper-CVE-2016-2116.patch \ %D%/packages/patches/jbig2dec-ignore-testtest.patch \ + %D%/packages/patches/khmer-use-libraries.patch \ %D%/packages/patches/kmod-module-directory.patch \ %D%/packages/patches/ldc-disable-tests.patch \ %D%/packages/patches/lftp-dont-save-unknown-host-fingerprint.patch \ diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 22ed71a..7445d7b 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -2301,6 +2301,98 @@ command, or queried for specific k-mers with @code{jellyfish query}.") ;; files such as lib/jsoncpp.cpp are released under the Expat license. (license (list license:gpl3+ license:expat)))) +(define-public khmer + (package + (name "khmer") + (version "2.0") + (source + (origin + (method url-fetch) + (uri + (string-append + "https://pypi.python.org/packages/" + "52/3b/2c52a13937197391775f274ed75b4a33b2d7767a904faaf4032e14e10a55/" + "khmer-" version ".tar.gz")) + (sha256 + (base32 + "0wb05shqh77v00256qlm68vbbx3kl76fyzihszbz5nhanl4ni33a")) + (patches (search-patches "khmer-use-libraries.patch")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'set-paths + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; Delete bundled libraries. + (delete-file-recursively "third-party/zlib") + (delete-file-recursively "third-party/bzip2") + ;; Replace bundled seqan. + (let* ((seqan-all "third-party/seqan") + (seqan-include (string-append + seqan-all "/core/include/seqan"))) + (delete-file-recursively seqan-all) + (mkdir-p seqan-include) + (rmdir seqan-include) + (copy-file (string-append (assoc-ref inputs "seqan") + "/include/seqan") + seqan-include)) + ;; Replace bundled MurmurHash. + (let ((smhasher "third-party/smhasher/")) + (delete-file-recursively smhasher) + (mkdir smhasher) + (for-each + (lambda (file) + (copy-file + (string-append + (assoc-ref inputs "murmur-hash") "/include/" file) + (string-append smhasher file))) + (list "MurmurHash3.cpp" "MurmurHash3.h")) + (rename-file + (string-append smhasher "MurmurHash3.cpp") + (string-append smhasher "MurmurHash3.cc"))) + (setenv "CC" "gcc") + #t)) + ;; It is simpler to test after installation. + (delete 'check) + (add-after 'install 'post-install-check + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (setenv "PATH" + (string-append + (getenv "PATH") + ":" + (assoc-ref outputs "out") + "/bin")) + (setenv "PYTHONPATH" + (string-append + (getenv "PYTHONPATH") + ":" + out + "/lib/python" + (string-take (string-take-right + (assoc-ref inputs "python") 5) 3) + "/site-packages")) + (with-directory-excursion "build" + (zero? (system* "nosetests" "khmer" "--attr" + "!known_failing"))))))))) + (native-inputs + `(("murmur-hash" ,murmur-hash) + ("seqan" ,seqan) + ("python-nose" ,python-nose))) + (inputs + `(("zlib" ,zlib) + ("bzip2" ,bzip2) + ("python-screed" ,python-screed) + ("python-bz2file" ,python-bz2file))) + (home-page "https://khmer.readthedocs.org/") + (synopsis "K-mer counting, filtering and graph traversal library") + (description "The khmer software is a set of command-line tools for +working with DNA shotgun sequencing data from genomes, transcriptomes, +metagenomes and single cells. Khmer can make de novo assemblies faster, and +sometimes better. Khmer can also identify and fix problems with shotgun +data.") + (license license:bsd-3))) + (define-public macs (package (name "macs") diff --git a/gnu/packages/patches/khmer-use-libraries.patch b/gnu/packages/patches/khmer-use-libraries.patch new file mode 100644 index 0000000..47d163a --- /dev/null +++ b/gnu/packages/patches/khmer-use-libraries.patch @@ -0,0 +1,16 @@ +Change setup.cfg so that the bundled zlib and bzip2 are not used. This cannot +currently be achieved using "--library z,bz2" as instructed in the setup.py. + +diff --git a/setup.cfg b/setup.cfg +index c054092..080992e 100644 +--- a/setup.cfg ++++ b/setup.cfg +@@ -1,7 +1,7 @@ + [build_ext] + define = SEQAN_HAS_BZIP2,SEQAN_HAS_ZLIB + undef = NO_UNIQUE_RC +-# libraries = z,bz2 ++libraries = z,bz2 + ## if using system libraries + include-dirs = lib:third-party/zlib:third-party/bzip2:third-party/seqan/core/include:third-party/smhasher + # include-dirs = lib -- 2.7.4