From f3f68a442c1c40438078c24c0869e22c08f30c48 Mon Sep 17 00:00:00 2001 From: Ben Woodcroft Date: Sat, 15 Jul 2017 16:31:40 +1000 Subject: [PATCH] gnu: metabat: Update to 2.11.1. * gnu/packages/bioinformatics.scm (metabat): Update to 2.11.1. [source]: Add patch to fix compilation. [arguments]: Adjust regular expressions modifying 'SConstruct'. * gnu/packages/patches/metabat-fix-compilation.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. --- gnu/local.mk | 1 + gnu/packages/bioinformatics.scm | 89 +++++++++---------- .../patches/metabat-fix-compilation.patch | 39 ++++++++ 3 files changed, 83 insertions(+), 46 deletions(-) create mode 100644 gnu/packages/patches/metabat-fix-compilation.patch diff --git a/gnu/local.mk b/gnu/local.mk index 8d3916e26d..3eccc879b0 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -840,6 +840,7 @@ dist_patch_DATA = \ %D%/packages/patches/mesa-skip-disk-cache-test.patch \ %D%/packages/patches/mesa-wayland-egl-symbols-check-mips.patch \ %D%/packages/patches/metabat-remove-compilation-date.patch \ + %D%/packages/patches/metabat-fix-compilation.patch \ %D%/packages/patches/mhash-keygen-test-segfault.patch \ %D%/packages/patches/mingw-w64-5.0rc2-gcc-4.9.3.patch \ %D%/packages/patches/mpc123-initialize-ao.patch \ diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index eab9d49e12..3b4cc359ee 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -3467,23 +3467,20 @@ (define-public mash license:cpl1.0)))) ; Open Bloom Filter (define-public metabat - ;; We package from a git commit because compilation of the released version - ;; fails. - (let ((commit "cbdca756993e66ae57e50a27970595dda9cbde1b")) - (package - (name "metabat") - (version (string-append "0.32.4-1." (string-take commit 8))) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://bitbucket.org/berkeleylab/metabat.git") - (commit commit))) - (file-name (string-append name "-" version)) - (sha256 - (base32 - "0byia8nsip6zvc4ha0qkxkxxyjf4x7jcvy48q2dvb0pzr989syzr")) - (patches (search-patches "metabat-remove-compilation-date.patch")))) + (package + (name "metabat") + (version "2.11.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://bitbucket.org/berkeleylab/metabat/get/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0ll00l81aflscgggs5nfhj12cbvdiz3gg7f7n5f537a3xhx60vn9")) + (patches (search-patches "metabat-remove-compilation-date.patch" + "metabat-fix-compilation.patch")))) (build-system gnu-build-system) (arguments `(#:phases @@ -3500,35 +3497,35 @@ (define-public metabat "#include \"htslib/kseq.h\"")) #t)) (add-after 'unpack 'fix-scons - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "SConstruct" - (("^htslib_dir = 'samtools'") - (string-append "hitslib_dir = '" - (assoc-ref inputs "htslib") - "'")) - (("^samtools_dir = 'samtools'") - (string-append "samtools_dir = '" - (assoc-ref inputs "htslib") - "'")) - (("^findStaticOrShared\\('bam', hts_lib") - (string-append "findStaticOrShared('bam', '" - (assoc-ref inputs "samtools") - "/lib'")) - ;; Do not distribute README. - (("^env\\.Install\\(idir_prefix, 'README\\.md'\\)") "")) - #t)) + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "SConstruct" + (("^htslib_dir += 'samtools'") + (string-append "htslib_dir = '" + (assoc-ref inputs "htslib") + "'")) + (("^samtools_dir = 'samtools'") + (string-append "samtools_dir = '" + (assoc-ref inputs "samtools") + "'")) + (("^findStaticOrShared\\('bam', hts_lib") + (string-append "findStaticOrShared('bam', '" + (assoc-ref inputs "samtools") + "/lib'")) + ;; Do not distribute README. + (("^env\\.Install\\(idir_prefix, 'README\\.md'\\)") "")) + #t)) (delete 'configure) (replace 'build - (lambda* (#:key inputs outputs #:allow-other-keys) - (mkdir (assoc-ref outputs "out")) - (zero? (system* "scons" - (string-append - "PREFIX=" - (assoc-ref outputs "out")) - (string-append - "BOOST_ROOT=" - (assoc-ref inputs "boost")) - "install")))) + (lambda* (#:key inputs outputs #:allow-other-keys) + (mkdir (assoc-ref outputs "out")) + (zero? (system* "scons" + (string-append + "PREFIX=" + (assoc-ref outputs "out")) + (string-append + "BOOST_ROOT=" + (assoc-ref inputs "boost")) + "install")))) ;; Check and install are carried out during build phase. (delete 'check) (delete 'install)))) @@ -3549,8 +3546,8 @@ (define-public metabat enables the study of individual organisms and their interactions. MetaBAT is an automated metagenome binning software, which integrates empirical probabilistic distances of genome abundance and tetranucleotide frequency.") - (license (license:non-copyleft "file://license.txt" - "See license.txt in the distribution."))))) + (license (license:non-copyleft "file://license.txt" + "See license.txt in the distribution.")))) (define-public minced (package diff --git a/gnu/packages/patches/metabat-fix-compilation.patch b/gnu/packages/patches/metabat-fix-compilation.patch new file mode 100644 index 0000000000..7086a96e86 --- /dev/null +++ b/gnu/packages/patches/metabat-fix-compilation.patch @@ -0,0 +1,39 @@ +This patch changes metabat so that (1) it is not build statically, (2) it uses +shared libraries rather than static libraries where possible. + +diff --git a/SConstruct b/SConstruct +index 69cdc0a..ac99bcb 100644 +--- a/SConstruct ++++ b/SConstruct +@@ -26,8 +26,6 @@ debug = ARGUMENTS.get('DEBUG', None) + build_flags = ['-Wall', '-g', '-std=c++11', '-fopenmp'] + link_flags = ['-lstdc++', '-lm', '-fopenmp'] + +-if platform.platform(True, True).find('Darwin') == -1: +- link_flags.extend(['-static', '-static-libgcc', '-static-libstdc++']) + + if debug is None: + build_flags.extend(['-O3', '-DNDEBUG', '-Wno-unknown-pragmas', '-Wno-deprecated-declarations', '-Wno-overflow', '-Wno-unused-variable']) +@@ -110,17 +108,17 @@ def findStaticOrShared( lib, testPaths, static_source_list, link_flag_list, stat + for path in testPaths: + if not os.path.isdir(path): + continue ++ for testfile in ('%s/lib%s.so' % (path, lib), '%s/lib%s.dylib' % (path, lib)): ++ if os.path.isfile(testfile): ++ print "Found shared library %s as %s" % (lib, testfile) ++ link_flag_list.extend( ["-L%s" % (path), "-l%s" % (lib) ] ) ++ return + for suffix in staticSuffixes: + testfile = '%s/lib%s%s' % (path, lib, suffix) + if os.path.isfile(testfile): + static_source_list.append(testfile) + print "Found static library %s as %s" % (lib, testfile) + return +- for testfile in ('%s/lib%s.so' % (path, lib), '%s/lib%s.dylib' % (path, lib)): +- if os.path.isfile(testfile): +- print "Found shared library %s as %s" % (lib, testfile) +- link_flag_list.extend( ["-L%s" % (path), "-l%s" % (lib) ] ) +- return + print "Could not find library for %s!!! Looked in %s" % (lib, testPaths) + return +