aboutsummaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/bioinformatics.scm78
-rw-r--r--gnu/packages/patches/khmer-use-libraries.patch16
3 files changed, 95 insertions, 0 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index 956be9b4b5..f6aa2564a3 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -593,6 +593,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 22eba0f6a3..b34e7ba357 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -2301,6 +2301,84 @@ 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 (pypi-uri "khmer" version))
+ (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")))
+ (delete-file-recursively seqan-all)
+ (copy-recursively (string-append (assoc-ref inputs "seqan")
+ "/include/seqan")
+ (string-append seqan-include "/seqan")))
+ ;; We do not replace the bundled MurmurHash as the canonical
+ ;; repository for this code 'SMHasher' is unsuitable for
+ ;; providing a library. See
+ ;; https://lists.gnu.org/archive/html/guix-devel/2016-06/msg00977.html
+ #t))
+ (add-after 'unpack 'set-cc
+ (lambda _
+ (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
+ `(("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 0000000000..47d163a99a
--- /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