mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2025-01-20 06:37:08 +01:00
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.
This commit is contained in:
parent
4bbcbe93cd
commit
6d8dd5bad7
3 changed files with 169 additions and 37 deletions
|
@ -1639,6 +1639,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/vboot-utils-fix-format-load-address.patch \
|
||||
%D%/packages/patches/vboot-utils-fix-tests-show-contents.patch \
|
||||
%D%/packages/patches/vboot-utils-skip-test-workbuf.patch \
|
||||
%D%/packages/patches/vcflib-use-shared-libraries.patch \
|
||||
%D%/packages/patches/vigra-python-compat.patch \
|
||||
%D%/packages/patches/vinagre-newer-freerdp.patch \
|
||||
%D%/packages/patches/vinagre-newer-rdp-parameters.patch \
|
||||
|
|
|
@ -15641,9 +15641,16 @@ (define-public vcflib
|
|||
"/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 @@ (define-public vcflib
|
|||
(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 @@ (define-public vcflib
|
|||
(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")
|
||||
|
|
135
gnu/packages/patches/vcflib-use-shared-libraries.patch
Normal file
135
gnu/packages/patches/vcflib-use-shared-libraries.patch
Normal file
|
@ -0,0 +1,135 @@
|
|||
This patch is a combination of many of the patches from Debian:
|
||||
https://sources.debian.org/src/libvcflib/1.0.1+dfsg-3/debian/patches/
|
||||
|
||||
---
|
||||
Makefile | 63 +++++++++++---------------------------------------------
|
||||
1 file changed, 12 insertions(+), 51 deletions(-)
|
||||
|
||||
diff --git a/Makefile b/Makefile
|
||||
index 6b13350..be85f22 100644
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -114,43 +114,25 @@ BIN_SOURCES = src/vcfecho.cpp \
|
||||
src/vcfnull2ref.cpp \
|
||||
src/vcfinfosummarize.cpp
|
||||
|
||||
-# when we can figure out how to build on mac
|
||||
-# src/vcfsom.cpp
|
||||
-
|
||||
#BINS = $(BIN_SOURCES:.cpp=)
|
||||
BINS = $(addprefix $(BIN_DIR)/,$(notdir $(BIN_SOURCES:.cpp=)))
|
||||
SHORTBINS = $(notdir $(BIN_SOURCES:.cpp=))
|
||||
|
||||
-TABIX = tabixpp/tabix.o
|
||||
-FASTAHACK = fastahack/Fasta.o
|
||||
-SMITHWATERMAN = smithwaterman/SmithWatermanGotoh.o
|
||||
-REPEATS = smithwaterman/Repeats.o
|
||||
-INDELALLELE = smithwaterman/IndelAllele.o
|
||||
-DISORDER = smithwaterman/disorder.o
|
||||
-LEFTALIGN = smithwaterman/LeftAlign.o
|
||||
-FSOM = fsom/fsom.o
|
||||
FILEVERCMP = filevercmp/filevercmp.o
|
||||
|
||||
-# Work out how to find htslib
|
||||
-# Use the one we ship in tabixpp unless told otherwise by the environment
|
||||
-HTS_LIB ?= $(VCF_LIB_LOCAL)/tabixpp/htslib/libhts.a
|
||||
-HTS_INCLUDES ?= -I$(VCF_LIB_LOCAL)/tabixpp/htslib
|
||||
-HTS_LDFLAGS ?= -L$(VCF_LIB_LOCAL)/tabixpp/htslib -lhts -lbz2 -lm -lz -llzma -pthread
|
||||
-
|
||||
-
|
||||
-INCLUDES = $(HTS_INCLUDES) -I$(INC_DIR)
|
||||
-LDFLAGS = -L$(LIB_DIR) -lvcflib $(HTS_LDFLAGS) -lpthread -lz -lm -llzma -lbz2
|
||||
+INCLUDES = -I$(INC_DIR) $(shell pkg-config --cflags htslib fastahack smithwaterman tabixpp)
|
||||
+LDFLAGS = -L$(LIB_DIR) -lvcflib -lpthread -lz -lstdc++ -lm -llzma -lbz2 $(shell pkg-config --libs htslib fastahack smithwaterman tabixpp)
|
||||
|
||||
|
||||
|
||||
-all: $(OBJECTS) $(BINS) scriptToBin
|
||||
+all: $(OBJECTS) $(BINS) scriptToBin libvcflib.a
|
||||
|
||||
scriptToBin: $(BINS)
|
||||
$(CP) scripts/* $(BIN_DIR)
|
||||
|
||||
GIT_VERSION += $(shell git describe --abbrev=4 --dirty --always)
|
||||
|
||||
-CXXFLAGS = -Ofast -D_FILE_OFFSET_BITS=64 -std=c++0x
|
||||
+CXXFLAGS = -Ofast -D_FILE_OFFSET_BITS=64 -std=c++0x -fPIC
|
||||
#CXXFLAGS = -O2
|
||||
#CXXFLAGS = -pedantic -Wall -Wshadow -Wpointer-arith -Wcast-qual
|
||||
|
||||
@@ -168,7 +150,7 @@ profiling:
|
||||
gprof:
|
||||
$(MAKE) CXXFLAGS="$(CXXFLAGS) -pg" all
|
||||
|
||||
-$(OBJECTS): $(SOURCES) $(HEADERS) $(TABIX) multichoose pre $(SMITHWATERMAN) $(FILEVERCMP) $(FASTAHACK)
|
||||
+$(OBJECTS): $(SOURCES) $(HEADERS) multichoose pre $(FILEVERCMP)
|
||||
$(CXX) -c -o $@ src/$(*F).cpp $(INCLUDES) $(LDFLAGS) $(CXXFLAGS) && $(CP) src/*.h* $(VCF_LIB_LOCAL)/$(INC_DIR)/
|
||||
|
||||
multichoose: pre
|
||||
@@ -177,39 +159,22 @@ multichoose: pre
|
||||
intervaltree: pre
|
||||
cd intervaltree && $(MAKE) && $(CP) *.h* $(VCF_LIB_LOCAL)/$(INC_DIR)/
|
||||
|
||||
-$(TABIX): pre
|
||||
- cd tabixpp && INCLUDES="$(HTS_INCLUDES)" LIBPATH="-L. $(HTS_LDFLAGS)" HTSLIB="$(HTS_LIB)" $(MAKE) && $(CP) *.h* $(VCF_LIB_LOCAL)/$(INC_DIR)/
|
||||
-
|
||||
-$(SMITHWATERMAN): pre
|
||||
- cd smithwaterman && $(MAKE) && $(CP) *.h* $(VCF_LIB_LOCAL)/$(INC_DIR)/ && $(CP) *.o $(VCF_LIB_LOCAL)/$(OBJ_DIR)/
|
||||
-
|
||||
-$(DISORDER): $(SMITHWATERMAN)
|
||||
-
|
||||
-$(REPEATS): $(SMITHWATERMAN)
|
||||
-
|
||||
-$(LEFTALIGN): $(SMITHWATERMAN)
|
||||
-
|
||||
-$(INDELALLELE): $(SMITHWATERMAN)
|
||||
-
|
||||
-$(FASTAHACK): pre
|
||||
- cd fastahack && $(MAKE) && $(CP) *.h* $(VCF_LIB_LOCAL)/$(INC_DIR)/ && $(CP) Fasta.o $(VCF_LIB_LOCAL)/$(OBJ_DIR)/
|
||||
-
|
||||
-#$(FSOM):
|
||||
-# cd fsom && $(CXX) $(CXXFLAGS) -c fsom.c -lm
|
||||
-
|
||||
$(FILEVERCMP): pre
|
||||
cd filevercmp && make && $(CP) *.h* $(VCF_LIB_LOCAL)/$(INC_DIR)/ && $(CP) *.o $(VCF_LIB_LOCAL)/$(INC_DIR)/
|
||||
|
||||
$(SHORTBINS): pre
|
||||
$(MAKE) $(BIN_DIR)/$@
|
||||
|
||||
-$(BINS): $(BIN_SOURCES) libvcflib.a $(OBJECTS) $(SMITHWATERMAN) $(FASTAHACK) $(DISORDER) $(LEFTALIGN) $(INDELALLELE) $(SSW) $(FILEVERCMP) pre intervaltree
|
||||
+$(BINS): $(BIN_SOURCES) libvcflib.so $(OBJECTS) $(SSW) $(FILEVERCMP) pre intervaltree
|
||||
$(CXX) src/$(notdir $@).cpp -o $@ $(INCLUDES) $(LDFLAGS) $(CXXFLAGS) -DVERSION=\"$(GIT_VERSION)\"
|
||||
|
||||
-libvcflib.a: $(OBJECTS) $(SMITHWATERMAN) $(REPEATS) $(FASTAHACK) $(DISORDER) $(LEFTALIGN) $(INDELALLELE) $(SSW) $(FILEVERCMP) $(TABIX) pre
|
||||
- ar rs libvcflib.a $(OBJECTS) smithwaterman/sw.o $(FASTAHACK) $(SSW) $(FILEVERCMP) $(TABIX)
|
||||
+libvcflib.a: $(OBJECTS) $(SSW) $(FILEVERCMP) pre
|
||||
+ ar rs libvcflib.a $(OBJECTS) $(SSW) $(FILEVERCMP)
|
||||
$(CP) libvcflib.a $(LIB_DIR)
|
||||
|
||||
+libvcflib.so: $(OBJECTS) $(SSW) $(FILEVERCMP) pre
|
||||
+ $(CXX) -shared -o libvcflib.so $(OBJECTS) $(SSW) $(FILEVERCMP)
|
||||
+ $(CP) libvcflib.so $(LIB_DIR)
|
||||
|
||||
test: $(BINS)
|
||||
@prove -Itests/lib -w tests/*.t
|
||||
@@ -230,16 +195,12 @@ clean:
|
||||
$(RM) $(BINS) $(OBJECTS)
|
||||
$(RM) ssw_cpp.o ssw.o
|
||||
$(RM) libvcflib.a
|
||||
+ $(RM) libvcflib.so
|
||||
$(RM) -r $(BIN_DIR)
|
||||
$(RM) -r $(LIB_DIR)
|
||||
$(RM) -r $(INC_DIR)
|
||||
$(RM) -r $(OBJ_DIR)
|
||||
- $(MAKE) clean -C tabixpp
|
||||
- $(MAKE) clean -C smithwaterman
|
||||
- $(MAKE) clean -C fastahack
|
||||
$(MAKE) clean -C multichoose
|
||||
- $(MAKE) clean -C fsom
|
||||
- $(MAKE) clean -C libVCFH
|
||||
$(MAKE) clean -C test
|
||||
$(MAKE) clean -C filevercmp
|
||||
$(MAKE) clean -C intervaltree
|
||||
--
|
||||
2.28.0
|
||||
|
Loading…
Reference in a new issue