summary refs log tree commit diff
path: root/gnu/packages/bioinformatics.scm
diff options
context:
space:
mode:
authorEfraim Flashner <efraim@flashner.co.il>2020-08-27 18:15:05 +0300
committerEfraim Flashner <efraim@flashner.co.il>2020-08-27 18:18:55 +0300
commit6d8dd5bad773a9bc4eaf0b3c13dd9c373c3546c3 (patch)
tree27cb328e22c4cd46b6b4a2b0f363329e12a6a181 /gnu/packages/bioinformatics.scm
parent4bbcbe93cd7e65b8e6ceba8988365d3c1a05a867 (diff)
downloadguix-6d8dd5bad773a9bc4eaf0b3c13dd9c373c3546c3.tar.gz
gnu: vcflib: Use shared libraries.
* gnu/packages/bioinformatics.scm (vcflib)[source]: Add patch. Add
snippet to adjust files for new locations.
[inputs]: Add fastahack, smithwaterman, tabixpp, xz.
[native-inputs]: Add pkg-config. Remove the package-source of fastahack,
fsom, smithwaterman, tabixpp.
[arguments]: Remove make-flags. Add custom phase to add the output lib
directory to the rpath. Adjust custom 'unpack-submodule-sources for the
change in native-inputs. Adjust custom 'install phase to also install
libraries and headers.
* gnu/packages/patches/vcflib-use-shared-libraries.patch: New file.
* gnu/local.mk (dist_patch_DATA): Register it.
Diffstat (limited to 'gnu/packages/bioinformatics.scm')
-rw-r--r--gnu/packages/bioinformatics.scm70
1 files changed, 33 insertions, 37 deletions
diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm
index afade365ca..db69819055 100644
--- a/gnu/packages/bioinformatics.scm
+++ b/gnu/packages/bioinformatics.scm
@@ -15641,9 +15641,16 @@ library automatically handles index file generation and use.")
                            "/vcflib-" version "-src.tar.gz"))
        (sha256
         (base32 "14zzrg8hg8cq9cvq2wdvp21j7nmxxkjrbagw2apd2yqv2kyx42lm"))
+       (patches (search-patches "vcflib-use-shared-libraries.patch"))
        (modules '((guix build utils)))
        (snippet
         `(begin
+           (substitute* (find-files "." "\\.(h|c)(pp)?$")
+             (("\"SmithWatermanGotoh.h\"") "<smithwaterman/SmithWatermanGotoh.h>")
+             (("\"convert.h\"") "<smithwaterman/convert.h>")
+             (("\"disorder.h\"") "<smithwaterman/disorder.h>")
+             (("\"tabix.hpp\"") "<tabix.hpp>")
+             (("\"Fasta.h\"") "<fastahack/Fasta.h>"))
            (for-each delete-file-recursively
                      '("fastahack" "filevercmp" "fsom" "googletest" "intervaltree"
                        "libVCFH" "multichoose" "smithwaterman" "tabixpp"))
@@ -15651,34 +15658,34 @@ library automatically handles index file generation and use.")
     (build-system gnu-build-system)
     (inputs
      `(("htslib" ,htslib)
+       ("fastahack" ,fastahack)
        ("perl" ,perl)
        ("python" ,python)
+       ("smithwaterman" ,smithwaterman)
+       ("tabixpp" ,tabixpp)
+       ("xz" ,xz)
        ("zlib" ,zlib)))
     (native-inputs
-     `(;; Submodules.
+     `(("pkg-config" ,pkg-config)
+       ;; Submodules.
        ;; This package builds against the .o files so we need to extract the source.
-       ("fastahack-src" ,(package-source fastahack))
        ("filevercmp-src" ,(package-source filevercmp))
-       ("fsom-src" ,(package-source fsom))
        ("intervaltree-src" ,(package-source intervaltree))
-       ("multichoose-src" ,(package-source multichoose))
-       ("smithwaterman-src" ,(package-source smithwaterman))
-       ("tabixpp-src" ,(package-source tabixpp))))
+       ("multichoose-src" ,(package-source multichoose))))
     (arguments
      `(#:tests? #f ; no tests
-       #:make-flags (list (string-append "HTS_LIB="
-                                         (assoc-ref %build-inputs "htslib")
-                                         "/lib/libhts.a")
-                          (string-append "HTS_INCLUDES= -I"
-                                         (assoc-ref %build-inputs "htslib")
-                                         "/include/htslib")
-                          (string-append "HTS_LDFLAGS= -L"
-                                         (assoc-ref %build-inputs "htslib")
-                                         "/include/htslib" " -lhts"))
        #:phases
        (modify-phases %standard-phases
+         (add-after 'unpack 'set-flags
+           (lambda* (#:key outputs #:allow-other-keys)
+             (substitute* "Makefile"
+               (("LDFLAGS =")
+                (string-append "LDFLAGS = -Wl,-rpath="
+                               (assoc-ref outputs "out") "/lib ")))
+             (substitute* "filevercmp/Makefile"
+               (("-c") "-c -fPIC"))
+             #t))
          (delete 'configure)
-         (delete 'check)
          (add-after 'unpack 'unpack-submodule-sources
            (lambda* (#:key inputs #:allow-other-keys)
              (let ((unpack (lambda (source target)
@@ -15690,34 +15697,23 @@ library automatically handles index file generation and use.")
                                            (assoc-ref inputs source)
                                            "--strip-components=1"))))))
                (and
-                (unpack "fastahack-src" "fastahack")
                 (unpack "filevercmp-src" "filevercmp")
-                (unpack "fsom-src" "fsom")
                 (unpack "intervaltree-src" "intervaltree")
-                (unpack "multichoose-src" "multichoose")
-                (unpack "smithwaterman-src" "smithwaterman")
-                (unpack "tabixpp-src" "tabixpp")))))
-         (replace 'build
-           (lambda* (#:key inputs make-flags #:allow-other-keys)
-             (let ((htslib (assoc-ref inputs "htslib")))
-               (with-directory-excursion "tabixpp"
-                 (substitute* "Makefile"
-                   (("-Ihtslib") (string-append "-I" htslib "/include/htslib"))
-                   (("-Lhtslib") (string-append "-L" htslib "/lib/htslib"))
-                   (("htslib/htslib") (string-append htslib "/include/htslib")))
-                 (invoke "make"
-                         (string-append "HTS_LIB=" htslib "/lib/libhts.a")))
-               (apply invoke "make" "CC=gcc" "CFLAGS=-Itabixpp" make-flags))))
+                (unpack "multichoose-src" "multichoose")))))
          (replace 'install
            (lambda* (#:key outputs #:allow-other-keys)
-             (let ((bin (string-append (assoc-ref outputs "out") "/bin"))
-                   (lib (string-append (assoc-ref outputs "out") "/lib")))
+             (let* ((out (assoc-ref outputs "out"))
+                    (bin (string-append out "/bin"))
+                    (lib (string-append out "/lib")))
                (for-each (lambda (file)
                            (install-file file bin))
                          (find-files "bin" ".*"))
-               ;; The header files in src/ do not interface libvcflib,
-               ;; therefore they are left out.
-               (install-file "libvcflib.a" lib))
+               (install-file "libvcflib.so" lib)
+               (install-file "libvcflib.a" lib)
+               (for-each
+                 (lambda (file)
+                   (install-file file (string-append out "/include")))
+                 (find-files "include" "\\.h(pp)?$")))
              #t)))))
     (home-page "https://github.com/vcflib/vcflib/")
     (synopsis "Library for parsing and manipulating VCF files")