commit: 9de36f0052f04b80223de81c59c9125a5e95fef5 Author: Martin Mokrejš <mmokrejs <AT> fold <DOT> natur <DOT> cuni <DOT> cz> AuthorDate: Mon May 11 16:09:28 2015 +0000 Commit: Martin Mokrejs <mmokrejs <AT> fold <DOT> natur <DOT> cuni <DOT> cz> CommitDate: Mon May 11 16:09:28 2015 +0000 URL: https://gitweb.gentoo.org/proj/sci.git/commit/?id=9de36f00
sci-biology/samtools: fix core dump on 'samtools rmdup' by adding bam_get_library() from an upstream patch from https://github.com/samtools/samtools/issues/138 Package-Manager: portage-2.2.18 sci-biology/samtools/ChangeLog | 17 ++ .../samtools/files/samtools-1.0-buildsystem.patch | 59 +++++++ .../samtools/files/samtools-1.0-rmdup.patch | 47 +++++ .../samtools/files/samtools-1.1-buildsystem.patch | 153 ++++++++++++++++ .../samtools/files/samtools-1.1-rmdup.patch | 47 +++++ .../samtools/files/samtools-1.2-buildsystem.patch | 193 +++++++++++++++++++++ .../samtools/files/samtools-1.2-rmdup.patch | 47 +++++ sci-biology/samtools/metadata.xml | 5 + sci-biology/samtools/samtools-1.0-r2.ebuild | 74 ++++++++ sci-biology/samtools/samtools-1.1-r1.ebuild | 84 +++++++++ sci-biology/samtools/samtools-1.2-r1.ebuild | 84 +++++++++ 11 files changed, 810 insertions(+) diff --git a/sci-biology/samtools/ChangeLog b/sci-biology/samtools/ChangeLog new file mode 100644 index 0000000..5e1efce --- /dev/null +++ b/sci-biology/samtools/ChangeLog @@ -0,0 +1,17 @@ +# ChangeLog for sci-biology/samtools +# Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2 +# $Header: $ + +*samtools-1.0-r2 (11 May 2015) +*samtools-1.1-r1 (11 May 2015) +*samtools-1.2-r1 (11 May 2015) + + 11 May 2015; Martin Mokrejs <mmokr...@fold.natur.cuni.cz> + +files/samtools-1.0-buildsystem.patch, +files/samtools-1.0-rmdup.patch, + +files/samtools-1.1-buildsystem.patch, +files/samtools-1.1-rmdup.patch, + +files/samtools-1.2-buildsystem.patch, +files/samtools-1.2-rmdup.patch, + +metadata.xml, +samtools-1.0-r2.ebuild, +samtools-1.1-r1.ebuild, + +samtools-1.2-r1.ebuild: + sci-biology/samtools: fix core dump on 'samtools rmdup' by adding + bam_get_library() from an upstream patch from + https://github.com/samtools/samtools/issues/138 diff --git a/sci-biology/samtools/files/samtools-1.0-buildsystem.patch b/sci-biology/samtools/files/samtools-1.0-buildsystem.patch new file mode 100644 index 0000000..53a8b66 --- /dev/null +++ b/sci-biology/samtools/files/samtools-1.0-buildsystem.patch @@ -0,0 +1,59 @@ + Makefile | 26 ++++++++++++++++++-------- + 1 file changed, 18 insertions(+), 8 deletions(-) + +diff --git a/Makefile b/Makefile +index ae59abf..0d2788c 100644 +--- a/Makefile ++++ b/Makefile +@@ -21,11 +21,12 @@ + # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + # DEALINGS IN THE SOFTWARE. + +-CC = gcc +-CPPFLAGS = $(DFLAGS) $(INCLUDES) +-CFLAGS = -g -Wall -O2 +-LDFLAGS = +-LDLIBS = ++CC ?= gcc ++CPPFLAGS += $(DFLAGS) $(INCLUDES) ++CFLAGS ?= -g -Wall -O2 ++LDFLAGS += ++LDLIBS += ++BAMLIB ?= libbam.a + DFLAGS= -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_CURSES_LIB=1 + LOBJS= bam_aux.o bam.o bam_import.o sam.o \ + sam_header.o bam_plbuf.o +@@ -42,6 +43,7 @@ LIBCURSES= -lcurses # -lXCurses + prefix = /usr/local + exec_prefix = $(prefix) + bindir = $(exec_prefix)/bin ++bindir = $(exec_prefix)/lib + mandir = $(prefix)/share/man + man1dir = $(mandir)/man1 + +@@ -115,14 +117,22 @@ version.h: + .c.o: + $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< + ++$(LOBJS): ++ $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $< + +-lib:libbam.a ++ ++lib:libbam.a libbam.so.1.0 + + libbam.a:$(LOBJS) + $(AR) -csru $@ $(LOBJS) + +-samtools: $(AOBJS) libbam.a $(HTSLIB) +- $(CC) -pthread $(LDFLAGS) -o $@ $(AOBJS) libbam.a $(HTSLIB) $(LDLIBS) $(LIBCURSES) -lm -lz ++libbam.so.1.0:$(LOBJS) ++ $(CC) $(LDFLAGS) -shared -Wl,--soname,$@ -o $@ $(LOBJS) $(HTSLIB) -lz ++ ln -sf $@ libbam.so.0 ++ ln -sf $@ libbam.so ++ ++samtools: $(AOBJS) $(HTSLIB) lib ++ $(CC) -pthread $(LDFLAGS) -o $@ $(AOBJS) $(BAMLIB) $(HTSLIB) $(LDLIBS) $(LIBCURSES) -lm -lz + + bam_h = bam.h $(htslib_bgzf_h) $(htslib_sam_h) + bam2bcf_h = bam2bcf.h $(htslib_vcf_h) errmod.h diff --git a/sci-biology/samtools/files/samtools-1.0-rmdup.patch b/sci-biology/samtools/files/samtools-1.0-rmdup.patch new file mode 100644 index 0000000..023b5d7 --- /dev/null +++ b/sci-biology/samtools/files/samtools-1.0-rmdup.patch @@ -0,0 +1,47 @@ +From 05fb5c2e17576b1d0ea5a0b8203b9eba236f2455 Mon Sep 17 00:00:00 2001 +From: kirkmcclure <kirkmccl...@users.noreply.github.com> +Date: Mon, 23 Mar 2015 05:35:00 -0800 +Subject: [PATCH] Update bam.c + + For issue #138 - Samtools view -l no longer works. +Implement bam_get_library() +--- + bam.c | 23 ++++++++++++----------- + 1 file changed, 12 insertions(+), 11 deletions(-) + +diff --git a/bam.c b/bam.c +index f909b7e..864d3f0 100644 +--- a/bam.c ++++ b/bam.c +@@ -61,19 +61,20 @@ int bam_validate1(const bam_header_t *header, const bam1_t *b) + return 1; + } + +-// FIXME: we should also check the LB tag associated with each alignment + const char *bam_get_library(bam_header_t *h, const bam1_t *b) + { +-#if 0 +- const uint8_t *rg; +- if (h->dict == 0) h->dict = sam_header_parse2(h->text); +- if (h->rg2lib == 0) h->rg2lib = sam_header2tbl(h->dict, "RG", "ID", "LB"); +- rg = bam_aux_get(b, "RG"); +- return (rg == 0)? 0 : sam_tbl_get(h->rg2lib, (const char*)(rg + 1)); +-#else +- fprintf(stderr, "Samtools-htslib-API: bam_get_library() not yet implemented\n"); +- abort(); +-#endif ++ const uint8_t *rg = 0; ++ const uint8_t *pLibName, *pDict; ++ if ( b != 0 && h != 0 ) { ++ if ( (rg = bam_aux_get(b, "RG") ) != 0 ++ && (pDict = sam_header_parse2(h->text)) != 0 ) { ++ pLibName = sam_header2tbl(pDict, "RG", "ID", "LB"); ++ if ( pLibName && strlen( (char*)pLibName ) > 0 ) { ++ return sam_tbl_get((void*)pLibName, (const char*)(rg + 1)); ++ } ++ } ++ } ++ return 0; + } + + int bam_fetch(bamFile fp, const bam_index_t *idx, int tid, int beg, int end, void *data, bam_fetch_f func) diff --git a/sci-biology/samtools/files/samtools-1.1-buildsystem.patch b/sci-biology/samtools/files/samtools-1.1-buildsystem.patch new file mode 100644 index 0000000..b9ae77d --- /dev/null +++ b/sci-biology/samtools/files/samtools-1.1-buildsystem.patch @@ -0,0 +1,153 @@ + Makefile | 76 ++++++++++++++++++++++++++++++++++++---------------------------- + 1 file changed, 43 insertions(+), 33 deletions(-) + +diff --git a/Makefile b/Makefile +index 43cefc3..743dd07 100644 +--- a/Makefile ++++ b/Makefile +@@ -21,11 +21,12 @@ + # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + # DEALINGS IN THE SOFTWARE. + +-CC = gcc +-CPPFLAGS = $(DFLAGS) $(INCLUDES) +-CFLAGS = -g -Wall -O2 +-LDFLAGS = +-LDLIBS = ++CC ?= gcc ++CPPFLAGS += $(DFLAGS) $(INCLUDES) ++CFLAGS ?= -g -Wall -O2 ++LDFLAGS += ++LDLIBS += ++BAMLIB ?= libbam.a + DFLAGS= -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_CURSES_LIB=1 + LOBJS= bam_aux.o bam.o bam_import.o sam.o \ + sam_header.o bam_plbuf.o +@@ -42,6 +43,7 @@ LIBCURSES= -lcurses # -lXCurses + prefix = /usr/local + exec_prefix = $(prefix) + bindir = $(exec_prefix)/bin ++libdir = $(exec_prefix)/lib + mandir = $(prefix)/share/man + man1dir = $(mandir)/man1 + +@@ -115,63 +117,71 @@ version.h: + .c.o: + $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< + ++$(LOBJS): ++ $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $< + +-lib:libbam.a ++ ++lib:libbam.a libbam.so.1.0 + + libbam.a:$(LOBJS) + $(AR) -csru $@ $(LOBJS) + +-samtools: $(AOBJS) libbam.a $(HTSLIB) +- $(CC) -pthread $(LDFLAGS) -o $@ $(AOBJS) libbam.a $(HTSLIB) $(LDLIBS) $(LIBCURSES) -lm -lz ++libbam.so.1.0:$(LOBJS) ++ $(CC) $(LDFLAGS) -shared -Wl,--soname,$@ -o $@ $(LOBJS) $(HTSLIB) -lz ++ ln -sf $@ libbam.so.0 ++ ln -sf $@ libbam.so ++ ++samtools: $(AOBJS) lib ++ $(CC) -pthread $(LDFLAGS) -o $@ $(AOBJS) $(BAMLIB) $(HTSLIB) $(LDLIBS) $(LIBCURSES) -lm -lz + + bam_h = bam.h $(htslib_bgzf_h) $(htslib_sam_h) + bam2bcf_h = bam2bcf.h $(htslib_vcf_h) errmod.h + bam_lpileup_h = bam_lpileup.h $(htslib_sam_h) + bam_plbuf_h = bam_plbuf.h $(htslib_sam_h) +-bam_tview_h = bam_tview.h $(htslib_hts_h) $(htslib_sam_h) $(htslib_faidx_h) $(bam2bcf_h) $(HTSDIR)/htslib/khash.h $(bam_lpileup_h) ++bam_tview_h = bam_tview.h $(htslib_hts_h) $(htslib_sam_h) $(htslib_faidx_h) $(bam2bcf_h) $(bam_lpileup_h) + sam_h = sam.h $(htslib_sam_h) $(bam_h) +-sample_h = sample.h $(HTSDIR)/htslib/kstring.h ++sample_h = sample.h + + bam.o: bam.c $(bam_h) sam_header.h +-bam2bcf.o: bam2bcf.c $(htslib_sam_h) $(HTSDIR)/htslib/kstring.h $(HTSDIR)/htslib/kfunc.h $(bam2bcf_h) errmod.h ++bam2bcf.o: bam2bcf.c $(htslib_sam_h) $(bam2bcf_h) errmod.h + bam2bcf_indel.o: bam2bcf_indel.c bam2bcf.h + bam2depth.o: bam2depth.c $(htslib_sam_h) samtools.h + bam_aux.o: bam_aux.c + bam_cat.o: bam_cat.c $(htslib_bgzf_h) $(bam_h) + bam_color.o: bam_color.c $(bam_h) +-bam_import.o: bam_import.c $(HTSDIR)/htslib/kstring.h $(bam_h) $(HTSDIR)/htslib/kseq.h +-bam_index.o: bam_index.c $(htslib_hts_h) $(htslib_sam_h) $(HTSDIR)/htslib/khash.h +-bam_lpileup.o: bam_lpileup.c $(bam_plbuf_h) $(bam_lpileup_h) $(HTSDIR)/htslib/ksort.h ++bam_import.o: bam_import.c $(bam_h) ++bam_index.o: bam_index.c $(htslib_hts_h) $(htslib_sam_h) ++bam_lpileup.o: bam_lpileup.c $(bam_plbuf_h) $(bam_lpileup_h) + bam_mate.o: bam_mate.c $(bam_h) + bam_md.o: bam_md.c $(htslib_faidx_h) $(sam_h) kaln.h kprobaln.h + bam_pileup.o: bam_pileup.c $(sam_h) + bam_plbuf.o: bam_plbuf.c $(htslib_hts_h) $(htslib_sam_h) $(bam_plbuf_h) +-bam_plcmd.o: bam_plcmd.c $(htslib_sam_h) $(htslib_faidx_h) $(HTSDIR)/htslib/kstring.h $(HTSDIR)/htslib/khash_str2int.h sam_header.h samtools.h $(bam2bcf_h) $(sample_h) ++bam_plcmd.o: bam_plcmd.c $(htslib_sam_h) $(htslib_faidx_h) sam_header.h samtools.h $(bam2bcf_h) $(sample_h) + bam_reheader.o: bam_reheader.c $(htslib_bgzf_h) $(bam_h) +-bam_rmdup.o: bam_rmdup.c $(sam_h) $(HTSDIR)/htslib/khash.h +-bam_rmdupse.o: bam_rmdupse.c $(sam_h) $(HTSDIR)/htslib/khash.h $(HTSDIR)/htslib/klist.h +-bam_sort.o: bam_sort.c $(HTSDIR)/htslib/ksort.h $(HTSDIR)/htslib/khash.h $(HTSDIR)/htslib/klist.h $(HTSDIR)/htslib/kstring.h $(htslib_sam_h) ++bam_rmdup.o: bam_rmdup.c $(sam_h) ++bam_rmdupse.o: bam_rmdupse.c $(sam_h) ++bam_sort.o: bam_sort.c $(htslib_sam_h) + bam_stat.o: bam_stat.c $(bam_h) samtools.h + bam_tview.o: bam_tview.c $(bam_tview_h) $(htslib_faidx_h) $(htslib_sam_h) $(htslib_bgzf_h) + bam_tview_curses.o: bam_tview_curses.c $(bam_tview_h) + bam_tview_html.o: bam_tview_html.c $(bam_tview_h) + bam_flags.o: bam_flags.c $(sam_h) +-bamshuf.o: bamshuf.c $(htslib_sam_h) $(HTSDIR)/htslib/ksort.h samtools.h ++bamshuf.o: bamshuf.c $(htslib_sam_h) samtools.h + bamtk.o: bamtk.c $(bam_h) version.h samtools.h +-bedcov.o: bedcov.c $(HTSDIR)/htslib/kstring.h $(htslib_sam_h) $(HTSDIR)/htslib/kseq.h +-bedidx.o: bedidx.c $(HTSDIR)/htslib/ksort.h $(HTSDIR)/htslib/kseq.h $(HTSDIR)/htslib/khash.h ++bedcov.o: bedcov.c $(htslib_sam_h) ++bedidx.o: bedidx.c + cut_target.o: cut_target.c $(bam_h) errmod.h $(htslib_faidx_h) +-errmod.o: errmod.c errmod.h $(HTSDIR)/htslib/ksort.h ++errmod.o: errmod.c errmod.h + kaln.o: kaln.c kaln.h + kprobaln.o: kprobaln.c kprobaln.h + padding.o: padding.c sam_header.h $(sam_h) $(bam_h) $(htslib_faidx_h) +-phase.o: phase.c $(htslib_sam_h) errmod.h $(HTSDIR)/htslib/kseq.h $(HTSDIR)/htslib/khash.h $(HTSDIR)/htslib/ksort.h ++phase.o: phase.c $(htslib_sam_h) errmod.h + sam.o: sam.c $(htslib_faidx_h) $(sam_h) +-sam_header.o: sam_header.c sam_header.h $(HTSDIR)/htslib/khash.h +-sam_view.o: sam_view.c $(htslib_sam_h) $(htslib_faidx_h) $(HTSDIR)/htslib/kstring.h $(HTSDIR)/htslib/khash.h samtools.h +-sample.o: sample.c $(sample_h) $(HTSDIR)/htslib/khash.h +-stats_isize.o: stats_isize.c stats_isize.h $(HTSDIR)/htslib/khash.h +-stats.o: stats.c $(sam_h) sam_header.h samtools.h stats_isize.h $(HTSDIR)/htslib/khash.h $(HTSDIR)/htslib/khash_str2int.h $(htslib_faidx_h) ++sam_header.o: sam_header.c sam_header.h ++sam_view.o: sam_view.c $(htslib_sam_h) $(htslib_faidx_h) samtools.h ++sample.o: sample.c $(sample_h) ++stats_isize.o: stats_isize.c stats_isize.h ++stats.o: stats.c $(sam_h) sam_header.h samtools.h stats_isize.h $(htslib_faidx_h) + + + # test programs +@@ -179,8 +189,8 @@ stats.o: stats.c $(sam_h) sam_header.h samtools.h stats_isize.h $(HTSDIR)/htslib + # For tests that might use it, set $REF_PATH explicitly to use only reference + # areas within the test suite (or set it to ':' to use no reference areas). + # (regression.sh sets $REF_PATH to a subdirectory itself.) +-check test: samtools $(BGZIP) $(BUILT_TEST_PROGRAMS) +- REF_PATH=: test/test.pl --exec bgzip=$(BGZIP) ++check test: samtools $(BUILT_TEST_PROGRAMS) ++ REF_PATH=: test/test.pl --exec bgzip=bgzip + test/merge/test_bam_translate test/merge/test_bam_translate.tmp + test/merge/test_pretty_header + test/merge/test_rtrans_build +@@ -253,10 +263,10 @@ misc/md5sum-lite: misc/md5sum-lite.o + misc/wgsim: misc/wgsim.o + $(CC) $(LDFLAGS) -o $@ misc/wgsim.o $(LDLIBS) -lm -lz + +-misc/ace2sam.o: misc/ace2sam.c $(HTSDIR)/htslib/kstring.h $(HTSDIR)/htslib/kseq.h ++misc/ace2sam.o: misc/ace2sam.c + misc/md5.o: misc/md5.c misc/md5.h +-misc/md5fa.o: misc/md5fa.c misc/md5.h $(HTSDIR)/htslib/kseq.h +-misc/wgsim.o: misc/wgsim.c $(HTSDIR)/htslib/kseq.h ++misc/md5fa.o: misc/md5fa.c misc/md5.h ++misc/wgsim.o: misc/wgsim.c + + misc/maq2sam-short.o: misc/maq2sam.c + $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ misc/maq2sam.c diff --git a/sci-biology/samtools/files/samtools-1.1-rmdup.patch b/sci-biology/samtools/files/samtools-1.1-rmdup.patch new file mode 100644 index 0000000..023b5d7 --- /dev/null +++ b/sci-biology/samtools/files/samtools-1.1-rmdup.patch @@ -0,0 +1,47 @@ +From 05fb5c2e17576b1d0ea5a0b8203b9eba236f2455 Mon Sep 17 00:00:00 2001 +From: kirkmcclure <kirkmccl...@users.noreply.github.com> +Date: Mon, 23 Mar 2015 05:35:00 -0800 +Subject: [PATCH] Update bam.c + + For issue #138 - Samtools view -l no longer works. +Implement bam_get_library() +--- + bam.c | 23 ++++++++++++----------- + 1 file changed, 12 insertions(+), 11 deletions(-) + +diff --git a/bam.c b/bam.c +index f909b7e..864d3f0 100644 +--- a/bam.c ++++ b/bam.c +@@ -61,19 +61,20 @@ int bam_validate1(const bam_header_t *header, const bam1_t *b) + return 1; + } + +-// FIXME: we should also check the LB tag associated with each alignment + const char *bam_get_library(bam_header_t *h, const bam1_t *b) + { +-#if 0 +- const uint8_t *rg; +- if (h->dict == 0) h->dict = sam_header_parse2(h->text); +- if (h->rg2lib == 0) h->rg2lib = sam_header2tbl(h->dict, "RG", "ID", "LB"); +- rg = bam_aux_get(b, "RG"); +- return (rg == 0)? 0 : sam_tbl_get(h->rg2lib, (const char*)(rg + 1)); +-#else +- fprintf(stderr, "Samtools-htslib-API: bam_get_library() not yet implemented\n"); +- abort(); +-#endif ++ const uint8_t *rg = 0; ++ const uint8_t *pLibName, *pDict; ++ if ( b != 0 && h != 0 ) { ++ if ( (rg = bam_aux_get(b, "RG") ) != 0 ++ && (pDict = sam_header_parse2(h->text)) != 0 ) { ++ pLibName = sam_header2tbl(pDict, "RG", "ID", "LB"); ++ if ( pLibName && strlen( (char*)pLibName ) > 0 ) { ++ return sam_tbl_get((void*)pLibName, (const char*)(rg + 1)); ++ } ++ } ++ } ++ return 0; + } + + int bam_fetch(bamFile fp, const bam_index_t *idx, int tid, int beg, int end, void *data, bam_fetch_f func) diff --git a/sci-biology/samtools/files/samtools-1.2-buildsystem.patch b/sci-biology/samtools/files/samtools-1.2-buildsystem.patch new file mode 100644 index 0000000..2343b22 --- /dev/null +++ b/sci-biology/samtools/files/samtools-1.2-buildsystem.patch @@ -0,0 +1,193 @@ + Makefile | 94 +++++++++++++++++++++++++++++++++++----------------------------- + 1 file changed, 52 insertions(+), 42 deletions(-) + +diff --git a/Makefile b/Makefile +index e368cee..9054526 100644 +--- a/Makefile ++++ b/Makefile +@@ -21,11 +21,12 @@ + # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + # DEALINGS IN THE SOFTWARE. + +-CC = gcc +-CPPFLAGS = $(DFLAGS) $(INCLUDES) +-CFLAGS = -g -Wall -O2 +-LDFLAGS = +-LDLIBS = ++CC ?= gcc ++CPPFLAGS += $(DFLAGS) $(INCLUDES) ++CFLAGS ?= -g -Wall -O2 ++LDFLAGS += ++LDLIBS += ++BAMLIB ?= libbam.a + DFLAGS= -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_CURSES_LIB=1 + LOBJS= bam_aux.o bam.o bam_import.o sam.o \ + sam_header.o bam_plbuf.o +@@ -42,6 +43,7 @@ LIBCURSES= -lcurses # -lXCurses + prefix = /usr/local + exec_prefix = $(prefix) + bindir = $(exec_prefix)/bin ++libdir = $(exec_prefix)/lib + mandir = $(prefix)/share/man + man1dir = $(mandir)/man1 + +@@ -115,62 +117,70 @@ version.h: + .c.o: + $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $< + ++$(LOBJS): ++ $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $< + +-lib:libbam.a ++ ++lib:libbam.a libbam.so.1.0 + + libbam.a:$(LOBJS) + $(AR) -csru $@ $(LOBJS) + +-samtools: $(AOBJS) libbam.a $(HTSLIB) +- $(CC) -pthread $(LDFLAGS) -o $@ $(AOBJS) libbam.a $(HTSLIB) $(LDLIBS) $(LIBCURSES) -lm -lz ++libbam.so.1.0:$(LOBJS) ++ $(CC) $(LDFLAGS) -shared -Wl,--soname,$@ -o $@ $(LOBJS) $(HTSLIB) -lz ++ ln -sf $@ libbam.so.0 ++ ln -sf $@ libbam.so ++ ++samtools: $(AOBJS) lib ++ $(CC) -pthread $(LDFLAGS) -o $@ $(AOBJS) $(BAMLIB) $(HTSLIB) $(LDLIBS) $(LIBCURSES) -lm -lz + + bam_h = bam.h $(htslib_bgzf_h) $(htslib_sam_h) + bam2bcf_h = bam2bcf.h $(htslib_vcf_h) errmod.h + bam_lpileup_h = bam_lpileup.h $(htslib_sam_h) + bam_plbuf_h = bam_plbuf.h $(htslib_sam_h) +-bam_tview_h = bam_tview.h $(htslib_hts_h) $(htslib_sam_h) $(htslib_faidx_h) $(bam2bcf_h) $(HTSDIR)/htslib/khash.h $(bam_lpileup_h) ++bam_tview_h = bam_tview.h $(htslib_hts_h) $(htslib_sam_h) $(htslib_faidx_h) $(bam2bcf_h) $(bam_lpileup_h) + sam_h = sam.h $(htslib_sam_h) $(bam_h) +-sample_h = sample.h $(HTSDIR)/htslib/kstring.h ++sample_h = sample.h + + bam.o: bam.c $(bam_h) sam_header.h +-bam2bcf.o: bam2bcf.c $(htslib_sam_h) $(HTSDIR)/htslib/kstring.h $(HTSDIR)/htslib/kfunc.h $(bam2bcf_h) errmod.h ++bam2bcf.o: bam2bcf.c $(htslib_sam_h) $(bam2bcf_h) errmod.h + bam2bcf_indel.o: bam2bcf_indel.c $(htslib_sam_h) $(bam2bcf_h) kprobaln.h $(HTSDIR)/htslib/khash.h $(HTSDIR)/htslib/ksort.h + bam2depth.o: bam2depth.c $(htslib_sam_h) samtools.h + bam_aux.o: bam_aux.c + bam_cat.o: bam_cat.c $(htslib_bgzf_h) $(bam_h) + bam_color.o: bam_color.c $(bam_h) +-bam_import.o: bam_import.c $(HTSDIR)/htslib/kstring.h $(bam_h) $(HTSDIR)/htslib/kseq.h +-bam_index.o: bam_index.c $(htslib_hts_h) $(htslib_sam_h) $(HTSDIR)/htslib/khash.h +-bam_lpileup.o: bam_lpileup.c $(bam_plbuf_h) $(bam_lpileup_h) $(HTSDIR)/htslib/ksort.h ++bam_import.o: bam_import.c $(bam_h) ++bam_index.o: bam_index.c $(htslib_hts_h) $(htslib_sam_h) ++bam_lpileup.o: bam_lpileup.c $(bam_plbuf_h) $(bam_lpileup_h) + bam_mate.o: bam_mate.c $(bam_h) + bam_md.o: bam_md.c $(htslib_faidx_h) $(sam_h) kprobaln.h + bam_pileup.o: bam_pileup.c $(sam_h) + bam_plbuf.o: bam_plbuf.c $(htslib_hts_h) $(htslib_sam_h) $(bam_plbuf_h) +-bam_plcmd.o: bam_plcmd.c $(htslib_sam_h) $(htslib_faidx_h) $(HTSDIR)/htslib/kstring.h $(HTSDIR)/htslib/khash_str2int.h sam_header.h samtools.h $(bam2bcf_h) $(sample_h) ++bam_plcmd.o: bam_plcmd.c $(htslib_sam_h) $(htslib_faidx_h) sam_header.h samtools.h $(bam2bcf_h) $(sample_h) + bam_reheader.o: bam_reheader.c $(htslib_bgzf_h) $(bam_h) +-bam_rmdup.o: bam_rmdup.c $(sam_h) $(HTSDIR)/htslib/khash.h +-bam_rmdupse.o: bam_rmdupse.c $(sam_h) $(HTSDIR)/htslib/khash.h $(HTSDIR)/htslib/klist.h +-bam_sort.o: bam_sort.c $(HTSDIR)/htslib/ksort.h $(HTSDIR)/htslib/khash.h $(HTSDIR)/htslib/klist.h $(HTSDIR)/htslib/kstring.h $(htslib_sam_h) ++bam_rmdup.o: bam_rmdup.c $(sam_h) ++bam_rmdupse.o: bam_rmdupse.c $(sam_h) ++bam_sort.o: bam_sort.c $(htslib_sam_h) + bam_stat.o: bam_stat.c $(bam_h) samtools.h + bam_tview.o: bam_tview.c $(bam_tview_h) $(htslib_faidx_h) $(htslib_sam_h) $(htslib_bgzf_h) + bam_tview_curses.o: bam_tview_curses.c $(bam_tview_h) + bam_tview_html.o: bam_tview_html.c $(bam_tview_h) + bam_flags.o: bam_flags.c $(sam_h) +-bamshuf.o: bamshuf.c $(htslib_sam_h) $(HTSDIR)/htslib/ksort.h samtools.h ++bamshuf.o: bamshuf.c $(htslib_sam_h) samtools.h + bamtk.o: bamtk.c $(htslib_hts_h) version.h samtools.h +-bedcov.o: bedcov.c $(HTSDIR)/htslib/kstring.h $(htslib_sam_h) $(HTSDIR)/htslib/kseq.h +-bedidx.o: bedidx.c $(HTSDIR)/htslib/ksort.h $(HTSDIR)/htslib/kseq.h $(HTSDIR)/htslib/khash.h ++bedcov.o: bedcov.c $(htslib_sam_h) ++bedidx.o: bedidx.c + cut_target.o: cut_target.c $(bam_h) errmod.h $(htslib_faidx_h) +-errmod.o: errmod.c errmod.h $(HTSDIR)/htslib/ksort.h ++errmod.o: errmod.c errmod.h + kprobaln.o: kprobaln.c kprobaln.h + padding.o: padding.c sam_header.h $(sam_h) $(bam_h) $(htslib_faidx_h) +-phase.o: phase.c $(htslib_sam_h) errmod.h $(HTSDIR)/htslib/kseq.h $(HTSDIR)/htslib/khash.h $(HTSDIR)/htslib/ksort.h ++phase.o: phase.c $(htslib_sam_h) errmod.h + sam.o: sam.c $(htslib_faidx_h) $(sam_h) +-sam_header.o: sam_header.c sam_header.h $(HTSDIR)/htslib/khash.h +-sam_view.o: sam_view.c $(htslib_sam_h) $(htslib_faidx_h) $(HTSDIR)/htslib/kstring.h $(HTSDIR)/htslib/khash.h samtools.h +-sample.o: sample.c $(sample_h) $(HTSDIR)/htslib/khash.h +-stats_isize.o: stats_isize.c stats_isize.h $(HTSDIR)/htslib/khash.h +-stats.o: stats.c $(sam_h) sam_header.h samtools.h stats_isize.h $(HTSDIR)/htslib/khash.h $(HTSDIR)/htslib/khash_str2int.h $(htslib_faidx_h) ++sam_header.o: sam_header.c sam_header.h ++sam_view.o: sam_view.c $(htslib_sam_h) $(htslib_faidx_h) samtools.h ++sample.o: sample.c $(sample_h) ++stats_isize.o: stats_isize.c stats_isize.h ++stats.o: stats.c $(sam_h) sam_header.h samtools.h stats_isize.h $(htslib_faidx_h) + + + # test programs +@@ -178,8 +188,8 @@ stats.o: stats.c $(sam_h) sam_header.h samtools.h stats_isize.h $(HTSDIR)/htslib + # For tests that might use it, set $REF_PATH explicitly to use only reference + # areas within the test suite (or set it to ':' to use no reference areas). + # (regression.sh sets $REF_PATH to a subdirectory itself.) +-check test: samtools $(BGZIP) $(BUILT_TEST_PROGRAMS) +- REF_PATH=: test/test.pl --exec bgzip=$(BGZIP) ++check test: samtools $(BUILT_TEST_PROGRAMS) ++ REF_PATH=: test/test.pl --exec bgzip=bgzip + test/merge/test_bam_translate test/merge/test_bam_translate.tmp + test/merge/test_pretty_header + test/merge/test_rtrans_build +@@ -191,31 +201,31 @@ check test: samtools $(BGZIP) $(BUILT_TEST_PROGRAMS) + test/split/test_parse_args + + +-test/merge/test_bam_translate: test/merge/test_bam_translate.o test/test.o $(HTSLIB) ++test/merge/test_bam_translate: test/merge/test_bam_translate.o test/test.o + $(CC) -pthread $(LDFLAGS) -o $@ test/merge/test_bam_translate.o test/test.o $(HTSLIB) $(LDLIBS) -lz + +-test/merge/test_pretty_header: test/merge/test_pretty_header.o $(HTSLIB) ++test/merge/test_pretty_header: test/merge/test_pretty_header.o + $(CC) -pthread $(LDFLAGS) -o $@ test/merge/test_pretty_header.o $(HTSLIB) $(LDLIBS) -lz + +-test/merge/test_rtrans_build: test/merge/test_rtrans_build.o $(HTSLIB) ++test/merge/test_rtrans_build: test/merge/test_rtrans_build.o + $(CC) -pthread $(LDFLAGS) -o $@ test/merge/test_rtrans_build.o $(HTSLIB) $(LDLIBS) -lz + +-test/merge/test_trans_tbl_init: test/merge/test_trans_tbl_init.o $(HTSLIB) ++test/merge/test_trans_tbl_init: test/merge/test_trans_tbl_init.o + $(CC) -pthread $(LDFLAGS) -o $@ test/merge/test_trans_tbl_init.o $(HTSLIB) $(LDLIBS) -lz + +-test/split/test_count_rg: test/split/test_count_rg.o test/test.o $(HTSLIB) ++test/split/test_count_rg: test/split/test_count_rg.o test/test.o + $(CC) -pthread $(LDFLAGS) -o $@ test/split/test_count_rg.o test/test.o $(HTSLIB) $(LDLIBS) -lz + +-test/split/test_expand_format_string: test/split/test_expand_format_string.o test/test.o $(HTSLIB) ++test/split/test_expand_format_string: test/split/test_expand_format_string.o test/test.o + $(CC) -pthread $(LDFLAGS) -o $@ test/split/test_expand_format_string.o test/test.o $(HTSLIB) $(LDLIBS) -lz + +-test/split/test_filter_header_rg: test/split/test_filter_header_rg.o test/test.o $(HTSLIB) ++test/split/test_filter_header_rg: test/split/test_filter_header_rg.o test/test.o + $(CC) -pthread $(LDFLAGS) -o $@ test/split/test_filter_header_rg.o test/test.o $(HTSLIB) $(LDLIBS) -lz + +-test/split/test_parse_args: test/split/test_parse_args.o test/test.o $(HTSLIB) ++test/split/test_parse_args: test/split/test_parse_args.o test/test.o + $(CC) -pthread $(LDFLAGS) -o $@ test/split/test_parse_args.o test/test.o $(HTSLIB) $(LDLIBS) -lz + +-test/vcf-miniview: test/vcf-miniview.o $(HTSLIB) ++test/vcf-miniview: test/vcf-miniview.o + $(CC) -pthread $(LDFLAGS) -o $@ test/vcf-miniview.o $(HTSLIB) $(LDLIBS) -lz + + test_test_h = test/test.h $(htslib_sam_h) +@@ -252,10 +262,10 @@ misc/md5sum-lite: misc/md5sum-lite.o + misc/wgsim: misc/wgsim.o + $(CC) $(LDFLAGS) -o $@ misc/wgsim.o $(LDLIBS) -lm -lz + +-misc/ace2sam.o: misc/ace2sam.c $(HTSDIR)/htslib/kstring.h $(HTSDIR)/htslib/kseq.h ++misc/ace2sam.o: misc/ace2sam.c + misc/md5.o: misc/md5.c misc/md5.h +-misc/md5fa.o: misc/md5fa.c misc/md5.h $(HTSDIR)/htslib/kseq.h +-misc/wgsim.o: misc/wgsim.c $(HTSDIR)/htslib/kseq.h ++misc/md5fa.o: misc/md5fa.c misc/md5.h ++misc/wgsim.o: misc/wgsim.c + + misc/maq2sam-short.o: misc/maq2sam.c + $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ misc/maq2sam.c diff --git a/sci-biology/samtools/files/samtools-1.2-rmdup.patch b/sci-biology/samtools/files/samtools-1.2-rmdup.patch new file mode 100644 index 0000000..023b5d7 --- /dev/null +++ b/sci-biology/samtools/files/samtools-1.2-rmdup.patch @@ -0,0 +1,47 @@ +From 05fb5c2e17576b1d0ea5a0b8203b9eba236f2455 Mon Sep 17 00:00:00 2001 +From: kirkmcclure <kirkmccl...@users.noreply.github.com> +Date: Mon, 23 Mar 2015 05:35:00 -0800 +Subject: [PATCH] Update bam.c + + For issue #138 - Samtools view -l no longer works. +Implement bam_get_library() +--- + bam.c | 23 ++++++++++++----------- + 1 file changed, 12 insertions(+), 11 deletions(-) + +diff --git a/bam.c b/bam.c +index f909b7e..864d3f0 100644 +--- a/bam.c ++++ b/bam.c +@@ -61,19 +61,20 @@ int bam_validate1(const bam_header_t *header, const bam1_t *b) + return 1; + } + +-// FIXME: we should also check the LB tag associated with each alignment + const char *bam_get_library(bam_header_t *h, const bam1_t *b) + { +-#if 0 +- const uint8_t *rg; +- if (h->dict == 0) h->dict = sam_header_parse2(h->text); +- if (h->rg2lib == 0) h->rg2lib = sam_header2tbl(h->dict, "RG", "ID", "LB"); +- rg = bam_aux_get(b, "RG"); +- return (rg == 0)? 0 : sam_tbl_get(h->rg2lib, (const char*)(rg + 1)); +-#else +- fprintf(stderr, "Samtools-htslib-API: bam_get_library() not yet implemented\n"); +- abort(); +-#endif ++ const uint8_t *rg = 0; ++ const uint8_t *pLibName, *pDict; ++ if ( b != 0 && h != 0 ) { ++ if ( (rg = bam_aux_get(b, "RG") ) != 0 ++ && (pDict = sam_header_parse2(h->text)) != 0 ) { ++ pLibName = sam_header2tbl(pDict, "RG", "ID", "LB"); ++ if ( pLibName && strlen( (char*)pLibName ) > 0 ) { ++ return sam_tbl_get((void*)pLibName, (const char*)(rg + 1)); ++ } ++ } ++ } ++ return 0; + } + + int bam_fetch(bamFile fp, const bam_index_t *idx, int tid, int beg, int end, void *data, bam_fetch_f func) diff --git a/sci-biology/samtools/metadata.xml b/sci-biology/samtools/metadata.xml new file mode 100644 index 0000000..f17a827 --- /dev/null +++ b/sci-biology/samtools/metadata.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <herd>sci-biology</herd> +</pkgmetadata> diff --git a/sci-biology/samtools/samtools-1.0-r2.ebuild b/sci-biology/samtools/samtools-1.0-r2.ebuild new file mode 100644 index 0000000..de23c22 --- /dev/null +++ b/sci-biology/samtools/samtools-1.0-r2.ebuild @@ -0,0 +1,74 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sci-biology/samtools/samtools-1.0-r1.ebuild,v 1.1 2014/09/25 15:20:53 jlec Exp $ + +EAPI=5 + +PYTHON_COMPAT=( python2_7 ) + +inherit eutils multilib python-r1 toolchain-funcs + +DESCRIPTION="Utilities for SAM (Sequence Alignment/Map), a format for large nucleotide sequence alignments" +HOMEPAGE="http://www.htslib.org/" +SRC_URI="mirror://sourceforge/${PN}/${P}.tar.bz2" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux ~x64-macos" +IUSE="examples" + +REQUIRED_USE="${PYTHON_REQUIRED_USE}" + +CDEPEND=" + sys-libs/ncurses + sci-libs/htslib" + +RDEPEND="${CDEPEND} + dev-lang/lua + dev-lang/perl" +DEPEND="${CDEPEND} + virtual/pkgconfig" + +src_prepare() { + find htslib-1.0 -delete || die + + sed -i 's~/software/bin/python~/usr/bin/env python~' "${S}"/misc/varfilter.py || die + + epatch "${FILESDIR}"/${P}-buildsystem.patch + epatch "${FILESDIR}"/${P}-rmdup.patch + + tc-export CC AR + + sed \ + -e '/htslib.mk/d' \ + -i Makefile || die + +} + +src_compile() { + local mymakeargs=( + LIBCURSES="$($(tc-getPKG_CONFIG) --libs ncurses)" + HTSDIR="${EPREFIX}/usr/include" + HTSLIB=$($(tc-getPKG_CONFIG) --libs htslib) + BAMLIB="libbam.so" + ) + emake "${mymakeargs[@]}" +} + +src_install() { + dobin samtools $(find misc -type f -executable) + + python_replicate_script "${ED}"/usr/bin/varfilter.py + dolib.so libbam.so* + + insinto /usr/include/bam + doins *.h + + doman ${PN}.1 + dodoc AUTHORS NEWS README + + if use examples; then + insinto /usr/share/${PN} + doins -r examples + fi +} diff --git a/sci-biology/samtools/samtools-1.1-r1.ebuild b/sci-biology/samtools/samtools-1.1-r1.ebuild new file mode 100644 index 0000000..04211ba --- /dev/null +++ b/sci-biology/samtools/samtools-1.1-r1.ebuild @@ -0,0 +1,84 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sci-biology/samtools/samtools-1.1.ebuild,v 1.1 2015/01/06 12:57:48 jlec Exp $ + +EAPI=5 + +PYTHON_COMPAT=( python2_7 ) + +inherit eutils multilib python-r1 toolchain-funcs + +DESCRIPTION="Utilities for SAM (Sequence Alignment/Map), a format for large nucleotide sequence alignments" +HOMEPAGE="http://www.htslib.org/" +SRC_URI="mirror://sourceforge/${PN}/${P}.tar.bz2" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux ~x64-macos" +IUSE="examples" + +REQUIRED_USE="${PYTHON_REQUIRED_USE}" + +CDEPEND=" + sys-libs/ncurses + ~sci-libs/htslib-${PV}" + +RDEPEND="${CDEPEND} + dev-lang/lua + dev-lang/perl" +DEPEND="${CDEPEND} + virtual/pkgconfig" + +src_prepare() { + find htslib-* -delete || die + + sed -i 's~/software/bin/python~/usr/bin/env python~' "${S}"/misc/varfilter.py || die + + epatch "${FILESDIR}"/${P}-buildsystem.patch + epatch "${FILESDIR}"/${P}-rmdup.patch + + tc-export CC AR + + sed \ + -e '/htslib.mk/d' \ + -i Makefile || die + +} + +src_compile() { + local mymakeargs=( + LIBCURSES="$($(tc-getPKG_CONFIG) --libs ncurses)" + HTSDIR="${EPREFIX}/usr/include" + HTSLIB=$($(tc-getPKG_CONFIG) --libs htslib) + BAMLIB="libbam.so" + ) + emake "${mymakeargs[@]}" +} + +src_test() { + local mymakeargs=( + LIBCURSES="$($(tc-getPKG_CONFIG) --libs ncurses)" + HTSDIR="${EPREFIX}/usr/include" + HTSLIB=$($(tc-getPKG_CONFIG) --libs htslib) + BAMLIB="libbam.so" + ) + emake "${mymakeargs[@]}" test +} + +src_install() { + dobin samtools $(find misc -type f -executable) + + python_replicate_script "${ED}"/usr/bin/varfilter.py + dolib.so libbam.so* + + insinto /usr/include/bam + doins *.h + + doman ${PN}.1 + dodoc AUTHORS NEWS README + + if use examples; then + insinto /usr/share/${PN} + doins -r examples + fi +} diff --git a/sci-biology/samtools/samtools-1.2-r1.ebuild b/sci-biology/samtools/samtools-1.2-r1.ebuild new file mode 100644 index 0000000..fdf5806 --- /dev/null +++ b/sci-biology/samtools/samtools-1.2-r1.ebuild @@ -0,0 +1,84 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sci-biology/samtools/samtools-1.2.ebuild,v 1.2 2015/02/28 10:51:24 jlec Exp $ + +EAPI=5 + +PYTHON_COMPAT=( python2_7 ) + +inherit eutils multilib python-r1 toolchain-funcs + +DESCRIPTION="Utilities for SAM (Sequence Alignment/Map), a format for large nucleotide sequence alignments" +HOMEPAGE="http://www.htslib.org/" +SRC_URI="mirror://sourceforge/${PN}/${P}.tar.bz2" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux ~x64-macos" +IUSE="examples" + +REQUIRED_USE="${PYTHON_REQUIRED_USE}" + +CDEPEND=" + sys-libs/ncurses + >=sci-libs/htslib-${PV}" + +RDEPEND="${CDEPEND} + dev-lang/lua + dev-lang/perl" +DEPEND="${CDEPEND} + virtual/pkgconfig" + +src_prepare() { + find htslib-* -delete || die + + sed -i 's~/software/bin/python~/usr/bin/env python~' "${S}"/misc/varfilter.py || die + + epatch "${FILESDIR}"/${P}-buildsystem.patch + epatch "${FILESDIR}"/${P}-rmdup.patch + + tc-export CC AR + + sed \ + -e '/htslib.mk/d' \ + -i Makefile || die + +} + +src_compile() { + local mymakeargs=( + LIBCURSES="$($(tc-getPKG_CONFIG) --libs ncurses)" + HTSDIR="${EPREFIX}/usr/include" + HTSLIB=$($(tc-getPKG_CONFIG) --libs htslib) + BAMLIB="libbam.so" + ) + emake "${mymakeargs[@]}" +} + +src_test() { + local mymakeargs=( + LIBCURSES="$($(tc-getPKG_CONFIG) --libs ncurses)" + HTSDIR="${EPREFIX}/usr/include" + HTSLIB=$($(tc-getPKG_CONFIG) --libs htslib) + BAMLIB="libbam.so" + ) + LD_LIBRARY_PATH="${S}" emake "${mymakeargs[@]}" test +} + +src_install() { + dobin samtools $(find misc -type f -executable) + + python_replicate_script "${ED}"/usr/bin/varfilter.py + dolib.so libbam.so* + + insinto /usr/include/bam + doins *.h + + doman ${PN}.1 + dodoc AUTHORS NEWS README + + if use examples; then + insinto /usr/share/${PN} + doins -r examples + fi +}