Skip to content
Commits on Source (9)
Stacks 2.0 Beta 8 - Feb 03, 2018
--------------------------------
Feature: populations: Now calculated deviation from Hardy-Weinberg equilibrium at the SNP level
(using an exact test), and at the haplotype level (using Guo+Thompson's MCMC algorithm).
Feature: populations: Added an export type for FineRADStructure.
Feature: populations: Added the GQ/GL fields in the VCF SNPs output.
Feature: gstacks: Made the default behavior regarding paired-end reads more logical (in
reference-based mode --paired has been replaced with --unpaired).
Feature: gstacks: Added details about samples and coverages to the log outputs.
Feautre: Added enzymes NspI, BbvCI, fixed BfuCI.
Bugfix: corrected a major performance bottleneck in populations when smoothing population statistics
across the genome.
Bugfix: populations: The VCF output now preserves the input sample order.
Bugfix: gstacks: Fixed the handling of a rare special case in the PCR duplicates code.
Bugfix: gstacks: Fixed 100% being added to all per-thread timings.
Stacks 2.0 Beta 7 - Dec 29, 2017
--------------------------------
Feature: gstacks: Added an option to remove PCR duplicates based on insert
size (--rm-pcr-duplicates, plus the related --rm-unpaired-reads).
Feature: populations: Added a haplotype Genepop export.
Feature: populations: improved the help; changed the output names for SNP
files to 'populations.snps.EXT'; added option --no_hap_exports.
Feature: gstacks and populations: Clarified the logs; moved distributions
to a separate '.xlog' file and added script stacks-xlog-extract.
Feature: gstacks: Tweaked the help/interface; especially, replaced --spacer
with --suffix (for BAM directory input).
Feature: Added enzymes BfuI and HinP1.
Feature: Added option --inline_null to clone_filter.
Bugfix: gstacks: Fixed a typo preventing the paired reads from being merged.
Bugfix: populations: Fixed a segfault that occurred with some large datasets.
Bugfix: Made VCF outputs more standard compliant.
Bugfix: populations: Repaired --fasta_samples and --fasta_samples_raw.
Bugfix: populations: Fixed population aborting at the end of the run
when an export option was specified multiple times.
Bugfix: gstacks: Adjusted progression report for catalog asymmetry.
Bugfix: Fixed installation of stacks-integrate-alignments on MacOS.
Stacks 2.0 Beta 6 - Dec 02, 2017
--------------------------------
Feature: Implmented the VCF haplotypes output.
Bugfix: Corrected asset failure in populations when exporting data for genepop or structure output.
Stacks 2.0 Beta 5 - Nov 27, 2017
--------------------------------
Feature: Reimplemented structure, phylip, and phylip_var exports.
Bugfix: Tightened up the overlap algorithm to require 80% of overlapping sequence to be
aligned and of the aligned sequence, 80% must be identities.
Bugfix: Fixed segfault in gstacks when compiled with CLANG on OS X.
Bugfix: gstacks: Fixed how misphasings are reported.
Stacks 2.0 Beta 4 - Nov 07, 2017
--------------------------------
Bugfix: Continued improving overlap algorithm to join SE and PE contigs.
Bugfix: Improved build system to handle new timing functions in gstacks.
Stacks 2.0 Beta 3 - Nov 01, 2017
--------------------------------
Feature: Added output to populations describing mean PE contig size and mean number of
genotyped sites per locus, which reflects the current filtering paramters.
Feature: Improved the output of gstacks and populations.
Feature: Added script `stacks-integrate-alignments`.
Bugfix: made further improvements to the single-end/paired-end locus overlapping algorithm.
Bugfix: fixed all depths being null in populations' VCF output.
Bugfix: Numerically tweaked the marukilow model to remove a limit case.
Stacks 2.0 Beta 2 - Oct 19, 2017
--------------------------------
Feature: gstacks: Made it possible to read from multiple BAM files at the same time; modified the
interface accordingly.
Feature: gstacks: Parallelized the reference-based mode.
Feature: gstacks: Added various statistics & improvements to the log output.
Feature: gstacks: Improved how the forward & paired-end reads are merged (in denovo mode; no more trimming).
Feature: populations: Added code to calculate the overlap between RAD loci when a reference is available.
Feature: populations: Added VCF ouput (--vcf).
Feature: Updated the denovo_map.pl and ref_map.pl wrappers, samples must now be specified using --samples and --popmap.
Bugfix: Fixed three memory leaks in populations; improved reference-aligned batch logic.
Bugfix: Improved overlapping code in gstacks to merge more single and paired-end contigs together.
Bugfix: Now compiles on Apple OS X.
Bugfix: Fixed a bug that skewed the fixed-site (no-SNP) likelihood in the marukilow model.
Stacks 2.0 Beta 1 - Oct 09, 2017
--------------------------------
Feature: Paired-end sequencing data can be utilized fully. In particular, when the shearing-based
protocol is used, the software will assemble a local contig from the paired reads across
the population, possibly overlap it with the forward-reads region, then align all reads to the
assembled contig. This new approach also fully supports double-digest protocols.
Feature: Haplotype calling and diploidy-violation dectection now rely on a novel, more powerful algorithm.
Feature: SNP and genotype-calling now uses the diploid models of Maruki and Lynch (2017).
Feature: The rxstacks program has been replaced with the gstacks program, and there is no need to re-run
some of the earlier steps of the pipeline anymore.
Feature: The memory footprint of the populations program has been considerably reduced and can be scaled
for any size data set.
Feature: The reference-based pipeline has been simplified, and now only comprises two steps: gstacks and populations.
Feature: Added --null_inline mode to clone_filter (and process_radtags) for previously unseen type
of oligo combination.
Stacks 1.48 - Nov 20, 2017
---------------------------
Feature: Added HinP1I restriction enzyme.
Feature: Added --null_inline mode to clone_filter (and process_radtags) for previously unseen type
of oligo combination.
Stacks 1.47 - Sept 06, 2017
---------------------------
Feature: Improved populations's fasta output options (especially,
added a option to export locus consensus sequences).
Feature: denovo_map.pl and red_map.pl now stop if a component
of the pipeline fails.
Feature: Improved the output of denovo_map.pl and ref_map.pl.
Bugfix: Added a format check in Fasta/GzFasta to avoid a potential
segfault when working on FastQ files.
Bugfix: Fixed a bug in count_fixed_catalog_snps.py that could cause
overwrites when working with uncompressed files.
Stacks 1.46 - Apr 17, 2017
--------------------------
Feature: Added HaeIII enzyme.
Bugfix: Corrected memory leaks in rxstacks.
Bugfix: Corrected non-functioning --min_mapq parameter for pstacks.
Bugfix: Corrected segfault when combining a VCF input file to populations, with genomic output and masking a restriction enzyme.
Bugfix: Corrected segfault when combining a VCF input file to populations,
with genomic output and masking a restriction enzyme.
Stacks 1.45 - Feb 24, 2017
--------------------------
......
bin_PROGRAMS = ustacks pstacks estacks cstacks sstacks rxstacks hstacks process_radtags process_shortreads \
kmer_filter clone_filter genotypes populations phasedstacks
ustacks_SOURCES = src/ustacks.h src/ustacks.cc src/stacks.h src/stacks.cc src/constants.h src/constants.cc \
src/mstack.h src/mstack.cc src/mst.h src/mst.cc src/cmb.h src/cmb.cc \
src/DNASeq.h src/DNASeq.cc src/DNANSeq.h src/DNANSeq.cc \
src/models.h src/models.cc src/utils.h src/utils.cc \
src/kmers.h src/kmers.cc src/GappedAln.h src/aln_utils.h src/aln_utils.cc \
src/input.h src/input.cc src/Tsv.h src/BowtieI.h src/FastaI.h src/FastqI.h src/SamI.h \
src/gzFasta.h src/gzFastq.h
pstacks_SOURCES = src/pstacks.h src/pstacks.cc src/stacks.h src/stacks.cc src/constants.h src/constants.cc \
src/mstack.h src/mstack.cc src/log_utils.h src/log_utils.cc \
src/DNANSeq.h src/DNANSeq.cc src/DNASeq.h src/DNASeq.cc \
src/models.h src/models.cc src/utils.h src/utils.cc src/aln_utils.h src/aln_utils.cc \
src/input.h src/input.cc src/Tsv.h src/BowtieI.h src/FastaI.h src/FastqI.h src/SamI.h \
src/BamI.h
estacks_SOURCES = src/estacks.h src/estacks.cc src/stacks.h src/stacks.cc src/constants.h src/constants.cc \
src/mstack.h src/mstack.cc \
src/models.h src/models.cc src/utils.h src/utils.cc src/aln_utils.h src/aln_utils.cc \
src/DNASeq.h src/DNASeq.cc src/DNANSeq.h src/DNANSeq.cc \
src/input.h src/input.cc src/Tsv.h src/BowtieI.h src/FastaI.h src/FastqI.h src/SamI.h
cstacks_SOURCES = src/cstacks.h src/cstacks.cc src/constants.h src/constants.cc \
src/stacks.h src/stacks.cc src/locus.h src/locus.cc \
src/kmers.h src/kmers.cc src/utils.h src/utils.cc \
src/GappedAln.h src/aln_utils.h src/aln_utils.cc \
src/DNASeq.h src/DNASeq.cc src/DNANSeq.h src/DNANSeq.cc \
src/input.h src/input.cc src/sql_utilities.h src/sql_utilities.cc \
src/MetaPopInfo.h src/MetaPopInfo.cc
hstacks_SOURCES = src/hstacks.h src/hstacks.cc src/constants.h src/constants.cc \
src/stacks.h src/stacks.cc src/locus.h src/locus.cc \
src/kmers.h src/kmers.cc \
src/DNASeq.h src/DNASeq.cc src/DNANSeq.h src/DNANSeq.cc \
src/utils.h src/utils.cc \
src/input.h src/input.cc src/sql_utilities.h src/sql_utilities.cc
bin_PROGRAMS = ustacks cstacks sstacks process_radtags process_shortreads \
kmer_filter clone_filter populations phasedstacks \
tsv2bam gstacks
sstacks_SOURCES = src/sstacks.h src/sstacks.cc src/constants.h src/constants.cc \
src/stacks.h src/stacks.cc src/locus.h src/locus.cc \
noinst_LIBRARIES = libcore.a libclean.a libpop.a
libcore_a_SOURCES = \
src/aln_utils.h src/aln_utils.cc \
src/BamI.h src/BamI.cc \
src/BamUnalignedI.h \
src/BowtieI.h \
src/BustardI.h \
src/catalog_utils.h src/catalog_utils.cc \
src/cmb.h src/cmb.cc \
src/constants.h src/constants.cc \
src/DNANSeq.h src/DNANSeq.cc \
src/DNASeq4.h src/DNASeq4.cc \
src/DNASeq.h src/DNASeq.cc \
src/FastaI.h \
src/FastqI.h \
src/GappedAln.h \
src/gzFasta.h src/gzFasta.cc \
src/gzFastq.h \
src/input.h src/input.cc \
src/kmers.h src/kmers.cc \
src/GappedAln.h src/aln_utils.h src/aln_utils.cc \
src/DNASeq.h src/DNASeq.cc src/DNANSeq.h src/DNANSeq.cc src/utils.h src/utils.cc \
src/input.h src/input.cc src/sql_utilities.h src/sql_utilities.cc src/catalog_utils.cc \
src/MetaPopInfo.h src/MetaPopInfo.cc
rxstacks_SOURCES = src/rxstacks.h src/rxstacks.cc src/constants.h src/constants.cc \
src/stacks.h src/stacks.cc src/locus.h src/locus.cc \
src/DNANSeq.h src/DNANSeq.cc src/DNASeq.h src/DNASeq.cc \
src/mst.h src/mst.cc \
src/locus.h src/locus.cc \
src/locus_readers.h \
src/log_utils.h src/log_utils.cc \
src/MetaPopInfo.h src/MetaPopInfo.cc \
src/models.h src/models.cc \
src/aln_utils.h src/aln_utils.cc src/utils.h src/utils.cc \
src/input.h src/input.cc src/sql_utilities.h src/sql_utilities.cc src/catalog_utils.cc \
src/MetaPopInfo.h src/MetaPopInfo.cc
src/mstack.h src/mstack.cc \
src/mst.h src/mst.cc \
src/nucleotides.h src/nucleotides.cc \
src/renz.h src/renz.cc \
src/SamI.h \
src/Seq.h src/Seq.cc \
src/sql_utilities.h src/sql_utilities.cc \
src/stacks.h src/stacks.cc \
src/Tsv.h \
src/utils.h src/utils.cc \
src/Vcf.h src/Vcf.cc
process_radtags_SOURCES = src/process_radtags.h src/process_radtags.cc src/constants.h src/constants.cc \
src/utils.h src/utils.cc src/log_utils.h src/log_utils.cc \
src/write.h src/write.cc \
libclean_a_SOURCES = \
src/clean.h src/clean.cc \
src/file_io.h src/file_io.cc \
src/input.h src/input.cc src/BustardI.h src/BamUnalignedI.h src/FastqI.h src/gzFastq.h \
src/renz.h src/renz.cc
src/write.h src/write.cc
process_shortreads_SOURCES = src/process_shortreads.h src/process_shortreads.cc src/constants.h src/constants.cc \
src/clean.h src/clean.cc \
src/file_io.h src/file_io.cc \
src/utils.h src/utils.cc src/log_utils.h src/log_utils.cc \
src/write.h src/write.cc \
src/kmers.h src/kmers.cc \
src/input.h src/input.cc src/BustardI.h src/BamUnalignedI.h src/FastqI.h src/gzFastq.h
libpop_a_SOURCES = \
src/bootstrap.h \
src/export_formats.h src/export_formats.cc \
src/genotype_dictionaries.h src/genotype_dictionaries.cc \
src/ordered.h \
src/PopMap.h \
src/PopSum.h src/PopSum.cc \
src/smoothing.h \
src/smoothing_utils.h \
src/Hwp.h src/Hwp.cc
kmer_filter_SOURCES = src/kmer_filter.h src/kmer_filter.cc src/constants.h src/constants.cc \
src/utils.h src/utils.cc \
src/write.h src/write.cc \
src/kmers.h src/kmers.cc \
src/input.h src/input.cc src/BustardI.h src/FastqI.h src/FastaI.h \
src/gzFastq.h src/gzFasta.h
libcore_a_CXXFLAGS = $(OPENMP_CFLAGS) $(BAM_CFLAGS)
libpop_a_CXXFLAGS = $(OPENMP_CFLAGS) $(BAM_CFLAGS)
clone_filter_SOURCES = src/clone_filter.h src/clone_filter.cc src/constants.h src/constants.cc \
src/kmers.h src/kmers.cc \
src/utils.h src/utils.cc \
src/write.h src/write.cc \
src/clean.h src/clean.cc src/file_io.h src/file_io.cc \
src/input.h src/input.cc src/BustardI.h src/FastqI.h src/FastaI.h \
src/gzFastq.h src/gzFasta.h
phasedstacks_SOURCES = libcore.a src/phasedstacks.h src/phasedstacks.cc
genotypes_SOURCES = src/genotypes.h src/genotypes.cc src/constants.h src/constants.cc \
src/utils.h src/utils.cc src/catalog_utils.h src/catalog_utils.cc \
src/log_utils.h src/log_utils.cc \
src/stacks.h src/stacks.cc src/locus.h src/locus.cc \
src/DNASeq.h src/DNASeq.cc src/DNANSeq.h src/DNANSeq.cc \
src/aln_utils.h src/aln_utils.cc \
src/PopMap.h src/genotype_dictionaries.h src/genotype_dictionaries.cc\
src/input.h src/input.cc src/sql_utilities.h src/sql_utilities.cc src/renz.h src/renz.cc \
src/MetaPopInfo.h src/MetaPopInfo.cc
process_radtags_SOURCES = libcore.a libclean.a src/process_radtags.h src/process_radtags.cc
process_shortreads_SOURCES = libcore.a libclean.a src/process_shortreads.h src/process_shortreads.cc
kmer_filter_SOURCES = libcore.a libclean.a src/kmer_filter.h src/kmer_filter.cc
clone_filter_SOURCES = libcore.a libclean.a src/clone_filter.h src/clone_filter.cc
populations_SOURCES = src/populations.h src/populations.cc src/constants.h src/constants.cc \
src/utils.h src/utils.cc src/catalog_utils.h src/catalog_utils.cc \
src/log_utils.h src/log_utils.cc \
src/stacks.h src/stacks.cc src/locus.h src/locus.cc \
src/DNASeq.h src/DNASeq.cc src/DNANSeq.h src/DNANSeq.cc \
src/PopMap.h src/PopSum.h src/aln_utils.h src/aln_utils.cc src/genotype_dictionaries.h src/genotype_dictionaries.cc \
src/input.h src/input.cc src/sql_utilities.h src/sql_utilities.cc src/renz.h src/renz.cc \
src/bootstrap.h src/ordered.h src/smoothing.h src/smoothing_utils.h \
src/export_formats.h src/export_formats.cc \
src/MetaPopInfo.h src/MetaPopInfo.cc src/Vcf.h src/Vcf.cc
ustacks_SOURCES = libcore.a src/ustacks.h src/ustacks.cc
cstacks_SOURCES = libcore.a src/cstacks.h src/cstacks.cc
sstacks_SOURCES = libcore.a src/sstacks.h src/sstacks.cc
phasedstacks_SOURCES = src/phasedstacks.h src/phasedstacks.cc src/constants.h src/constants.cc \
src/locus.h src/locus.cc \
src/input.h src/input.cc src/sql_utilities.h src/sql_utilities.cc \
src/log_utils.h src/log_utils.cc \
src/utils.h src/utils.cc src/catalog_utils.h src/catalog_utils.cc
populations_SOURCES = libcore.a libpop.a src/populations.h src/populations.cc
# tsv2bam & gstacks
tsv2bam_SOURCES = libcore.a src/tsv2bam.cc
gstacks_SOURCES = libcore.a src/gstacks.h src/gstacks.cc src/debruijn.h src/debruijn.cc src/Alignment.h src/SuffixTree.h src/SuffixTree.cc
ustacks_CXXFLAGS = $(OPENMP_CFLAGS) $(SPARSEHASH_CFLAGS)
phasedstacks_CXXFLAGS = $(OPENMP_CFLAGS)
phasedstacks_LDFLAGS = $(OPENMP_CFLAGS)
phasedstacks_LDADD = libcore.a $(BAM_LIBS)
ustacks_CXXFLAGS = $(OPENMP_CFLAGS)
ustacks_LDFLAGS = $(OPENMP_CFLAGS)
pstacks_CXXFLAGS = $(OPENMP_CFLAGS) $(BAM_CFLAGS) $(SPARSEHASH_CFLAGS)
pstacks_LDFLAGS = $(OPENMP_CFLAGS)
pstacks_LDADD = $(BAM_LIBS)
estacks_CXXFLAGS = $(OPENMP_CFLAGS) $(SPARSEHASH_CFLAGS) $(BAM_CFLAGS)
estacks_LDFLAGS = $(OPENMP_CFLAGS)
estacks_LDADD = $(BAM_LIBS)
cstacks_CXXFLAGS = $(OPENMP_CFLAGS) $(SPARSEHASH_CFLAGS)
ustacks_LDADD = libcore.a $(BAM_LIBS)
cstacks_CXXFLAGS = $(OPENMP_CFLAGS)
cstacks_LDFLAGS = $(OPENMP_CFLAGS)
hstacks_CXXFLAGS = $(OPENMP_CFLAGS) $(SPARSEHASH_CFLAGS)
hstacks_LDFLAGS = $(OPENMP_CFLAGS)
sstacks_CXXFLAGS = $(OPENMP_CFLAGS) $(SPARSEHASH_CFLAGS)
cstacks_LDADD = libcore.a $(BAM_LIBS)
sstacks_CXXFLAGS = $(OPENMP_CFLAGS) $(BAM_CFLAGS)
sstacks_LDFLAGS = $(OPENMP_CFLAGS)
rxstacks_CXXFLAGS = $(OPENMP_CFLAGS) $(SPARSEHASH_CFLAGS)
rxstacks_LDFLAGS = $(OPENMP_CFLAGS)
process_radtags_CXXFLAGS = $(OPENMP_CFLAGS) $(SPARSEHASH_CFLAGS) $(BAM_CFLAGS)
sstacks_LDADD = libcore.a $(BAM_LIBS)
process_radtags_CXXFLAGS = $(OPENMP_CFLAGS) $(BAM_CFLAGS)
process_radtags_LDFLAGS = $(OPENMP_CFLAGS)
process_radtags_LDADD = $(BAM_LIBS)
process_shortreads_CXXFLAGS = $(OPENMP_CFLAGS) $(SPARSEHASH_CFLAGS) $(BAM_CFLAGS)
process_radtags_LDADD = libcore.a libclean.a $(BAM_LIBS)
process_shortreads_CXXFLAGS = $(OPENMP_CFLAGS) $(BAM_CFLAGS)
process_shortreads_LDFLAGS = $(OPENMP_CFLAGS)
process_shortreads_LDADD = $(BAM_LIBS)
kmer_filter_CXXFLAGS = $(OPENMP_CFLAGS) $(SPARSEHASH_CFLAGS)
process_shortreads_LDADD = libcore.a libclean.a $(BAM_LIBS)
clone_filter_CXXFLAGS = $(OPENMP_CFLAGS) $(BAM_CFLAGS)
clone_filter_LDFLAGS = $(OPENMP_CFLAGS)
clone_filter_LDADD = libcore.a libclean.a $(BAM_LIBS)
kmer_filter_CXXFLAGS = $(OPENMP_CFLAGS)
kmer_filter_LDFLAGS = $(OPENMP_CFLAGS)
genotypes_CXXFLAGS = $(OPENMP_CFLAGS) $(SPARSEHASH_CFLAGS)
genotypes_LDFLAGS = $(OPENMP_CFLAGS)
populations_CXXFLAGS = $(OPENMP_CFLAGS) $(SPARSEHASH_CFLAGS)
kmer_filter_LDADD = libcore.a libclean.a $(BAM_LIBS)
populations_CXXFLAGS = $(OPENMP_CFLAGS) $(BAM_CFLAGS)
populations_LDFLAGS = $(OPENMP_CFLAGS)
phasedstacks_CXXFLAGS = $(OPENMP_CFLAGS) $(SPARSEHASH_CFLAGS)
phasedstacks_LDFLAGS = $(OPENMP_CFLAGS)
clone_filter_CXXFLAGS = $(OPENMP_CFLAGS) $(SPARSEHASH_CFLAGS) $(BAM_CFLAGS)
clone_filter_LDFLAGS = $(OPENMP_CFLAGS)
clone_filter_LDADD = $(BAM_LIBS)
populations_LDADD = libcore.a libpop.a $(BAM_LIBS)
# tsv2bam & gstacks
tsv2bam_CXXFLAGS = $(OPENMP_CFLAGS) $(BAM_CFLAGS)
tsv2bam_LDFLAGS = $(OPENMP_CFLAGS)
tsv2bam_LDADD = libcore.a $(BAM_LIBS)
gstacks_CXXFLAGS = $(OPENMP_CFLAGS) $(BAM_CFLAGS)
gstacks_LDFLAGS = $(OPENMP_CFLAGS)
gstacks_LDADD = libcore.a $(BAM_LIBS)
dist_bin_SCRIPTS = scripts/denovo_map.pl scripts/ref_map.pl scripts/export_sql.pl \
scripts/sort_read_pairs.pl scripts/exec_velvet.pl scripts/load_sequences.pl \
scripts/index_radtags.pl scripts/load_radtags.pl scripts/stacks_export_notify.pl \
scripts/integrate_alignments.py scripts/count_fixed_catalog_snps.py
scripts/integrate_alignments.py scripts/count_fixed_catalog_snps.py \
scripts/stacks-integrate-alignments scripts/stacks-dist-extract scripts/stacks-gdb
dist_noinst_SCRIPTS = autogen.sh scripts/extract_interpop_chars.pl scripts/convert_stacks.pl
......@@ -170,12 +140,12 @@ TESTS = tests/process_radtags.t tests/kmer_filter.t tests/ustacks.t tests/pstack
EXTRA_DIST = $(nobase_pkgdata_DATA) LICENSE INSTALL README ChangeLog $(TESTS)
SUBDIRS = htslib .
pkglocalstatedir = $(localstatedir)/$(PACKAGE)
SUBDIRS = htslib .
debug:
$(MAKE) all "CXXFLAGS=-g -Wall -DDEBUG -std=gnu++0x"
$(MAKE) all "CXXFLAGS=-g -Wall -DDEBUG -std=gnu++11"
install-data-hook:
sed -e 's,_VERSION_,$(VERSION),' -e 's,_BINDIR_,$(bindir)/,g' -e 's,_PKGDATADIR_,$(pkgdatadir)/,g' $(DESTDIR)$(bindir)/denovo_map.pl > $(DESTDIR)$(bindir)/denovo_map.pl.subst
......@@ -211,6 +181,11 @@ install-data-hook:
mv $(DESTDIR)$(pkgdatadir)/php/constants.php.dist.subst $(DESTDIR)$(pkgdatadir)/php/constants.php.dist
echo $(VERSION) > $(DESTDIR)$(pkgdatadir)/php/version.php
$(install_sh) -d -m 755 $(DESTDIR)$(pkgdatadir)/php/export
sed -i.bkp -e 's,_VERSION_,$(VERSION),' $(DESTDIR)$(bindir)/stacks-integrate-alignments
rm -f $(DESTDIR)$(bindir)/stacks-integrate-alignments.bkp
chmod +x $(DESTDIR)$(bindir)/stacks-integrate-alignments
chmod +x $(DESTDIR)$(bindir)/stacks-dist-extract
chmod +x $(DESTDIR)$(bindir)/stacks-gdb
uninstall-hook:
rm -rf $(DESTDIR)$(pkglocalstatedir)
Source diff could not be displayed: it is too large. Options to address this: view the blob.
......@@ -17,23 +17,15 @@ external software.
Stacks, you can install GCC by hand, or using a package system such as
Homebrew (http://brew.sh/) or MacPorts (http://www.macports.org/).
1. Install optional components for wrapper programs:
Several Perl scripts are distributed with Stacks to run the pipeline components and
upload pipeline output to the MySQL database serer. For these to work, you must have
the Perl DBI module installed with the MySQL driver. Most Linux distributions will
include the Perl DBI module, but if not Perl modules are easily installed with the
cpan tool.
1. Install optional components:
If you would like to lower memory usage install Google's SparseHash class.
http://code.google.com/p/sparsehash/
If you are running a version of Linux, the above software can be installed via the
package manager. If you are using Ubuntu, you can install the following packages:
% sudo apt-get install libdbd-mysql-perl
% sudo apt-get install libsparsehash-dev
A similar set of commands can be executed on Debian using apt-get, or on a RedHat derived Linux
system using yum, or another package manager on other Linux distributions.
......
......@@ -6,6 +6,9 @@
/* Enable compilation with Samtools BAM library */
#undef HAVE_BAM
/* Define to 1 if you have the `clock_gettime' function. */
#undef HAVE_CLOCK_GETTIME
/* define if the compiler supports basic C++11 syntax */
#undef HAVE_CXX11
......@@ -51,9 +54,6 @@
and to 0 otherwise. */
#undef HAVE_REALLOC
/* Enable compilation with Google Sparsehash */
#undef HAVE_SPARSEHASH
/* Define to 1 if you have the `sqrt' function. */
#undef HAVE_SQRT
......
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.63 for Stacks 1.46.
# Generated by GNU Autoconf 2.63 for Stacks 2.0Beta8c.
#
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
# 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
......@@ -594,8 +594,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package.
PACKAGE_NAME='Stacks'
PACKAGE_TARNAME='stacks'
PACKAGE_VERSION='1.46'
PACKAGE_STRING='Stacks 1.46'
PACKAGE_VERSION='2.0Beta8c'
PACKAGE_STRING='Stacks 2.0Beta8c'
PACKAGE_BUGREPORT=''
ac_unique_file="src/ustacks.cc"
......@@ -643,6 +643,7 @@ OPENMP_CFLAGS
EGREP
GREP
CPP
RANLIB
HAVE_CXX11
am__fastdepCC_FALSE
am__fastdepCC_TRUE
......@@ -666,7 +667,6 @@ CPPFLAGS
LDFLAGS
CXXFLAGS
CXX
SPARSEHASH_CFLAGS
BAM_LIBS
BAM_CFLAGS
am__untar
......@@ -733,8 +733,6 @@ ac_subst_files=''
ac_user_opts='
enable_option_checking
enable_bam
enable_sparsehash
with_sparsehash_include_path
enable_dependency_tracking
enable_openmp
'
......@@ -1302,7 +1300,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures Stacks 1.46 to adapt to many kinds of systems.
\`configure' configures Stacks 2.0Beta8c to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
......@@ -1368,7 +1366,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of Stacks 1.46:";;
short | recursive ) echo "Configuration of Stacks 2.0Beta8c:";;
esac
cat <<\_ACEOF
......@@ -1377,18 +1375,10 @@ Optional Features:
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--disable-bam Disable use of BAM files through HTSLib.
--enable-sparsehash Enable the use of Google Sparsehash (must be
installed).
--disable-dependency-tracking speeds up one-time build
--enable-dependency-tracking do not reject slow dependency extractors
--disable-openmp do not use OpenMP
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-sparsehash-include-path
location of Google Sparsehash headers
Some influential environment variables:
CXX C++ compiler command
CXXFLAGS C++ compiler flags
......@@ -1466,7 +1456,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
Stacks configure 1.46
Stacks configure 2.0Beta8c
generated by GNU Autoconf 2.63
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
......@@ -1480,7 +1470,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by Stacks $as_me 1.46, which was
It was created by Stacks $as_me 2.0Beta8c, which was
generated by GNU Autoconf 2.63. Invocation command line was
$ $0 $@
......@@ -2329,7 +2319,7 @@ fi
# Define the identity of the package.
PACKAGE='stacks'
VERSION='1.46'
VERSION='2.0Beta8c'
cat >>confdefs.h <<_ACEOF
......@@ -2397,36 +2387,6 @@ BAM_LIBS='./htslib/libhts.a'
fi
#
# Enable use of Google Sparsehash and get include location if requested.
#
# Check whether --enable-sparsehash was given.
if test "${enable_sparsehash+set}" = set; then
enableval=$enable_sparsehash;
fi
if test "x$enable_sparsehash" = "xyes"; then
cat >>confdefs.h <<\_ACEOF
#define HAVE_SPARSEHASH 1
_ACEOF
# Check whether --with-sparsehash-include-path was given.
if test "${with_sparsehash_include_path+set}" = set; then
withval=$with_sparsehash_include_path; SPARSEHASH_CFLAGS="-I$withval"
else
SPARSEHASH_CFLAGS=""
fi
fi
......@@ -5245,6 +5205,101 @@ _ACEOF
# Checks for ar-based static libs.
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_RANLIB+set}" = set; then
$as_echo_n "(cached) " >&6
else
if test -n "$RANLIB"; then
ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib"
$as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
fi
fi
RANLIB=$ac_cv_prog_RANLIB
if test -n "$RANLIB"; then
{ $as_echo "$as_me:$LINENO: result: $RANLIB" >&5
$as_echo "$RANLIB" >&6; }
else
{ $as_echo "$as_me:$LINENO: result: no" >&5
$as_echo "no" >&6; }
fi
fi
if test -z "$ac_cv_prog_RANLIB"; then
ac_ct_RANLIB=$RANLIB
# Extract the first word of "ranlib", so it can be a program name with args.
set dummy ranlib; ac_word=$2
{ $as_echo "$as_me:$LINENO: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_RANLIB"; then
ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test.
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
for as_dir in $PATH
do
IFS=$as_save_IFS
test -z "$as_dir" && as_dir=.
for ac_exec_ext in '' $ac_executable_extensions; do
if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
ac_cv_prog_ac_ct_RANLIB="ranlib"
$as_echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
break 2
fi
done
done
IFS=$as_save_IFS
fi
fi
ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB
if test -n "$ac_ct_RANLIB"; then
{ $as_echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
$as_echo "$ac_ct_RANLIB" >&6; }
else
{ $as_echo "$as_me:$LINENO: result: no" >&5
$as_echo "no" >&6; }
fi
if test "x$ac_ct_RANLIB" = x; then
RANLIB=":"
else
case $cross_compiling:$ac_tool_warned in
yes:)
{ $as_echo "$as_me:$LINENO: WARNING: using cross tools not prefixed with host triplet" >&5
$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
ac_tool_warned=yes ;;
esac
RANLIB=$ac_ct_RANLIB
fi
else
RANLIB="$ac_cv_prog_RANLIB"
fi
# Checks for libraries.
......@@ -6431,6 +6486,152 @@ fi
done
for ac_header in unistd.h
do
as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
$as_echo_n "checking for $ac_header... " >&6; }
if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
$as_echo_n "(cached) " >&6
fi
ac_res=`eval 'as_val=${'$as_ac_Header'}
$as_echo "$as_val"'`
{ $as_echo "$as_me:$LINENO: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
else
# Is the header compilable?
{ $as_echo "$as_me:$LINENO: checking $ac_header usability" >&5
$as_echo_n "checking $ac_header usability... " >&6; }
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
$ac_includes_default
#include <$ac_header>
_ACEOF
rm -f conftest.$ac_objext
if { (ac_try="$ac_compile"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
$as_echo "$ac_try_echo") >&5
(eval "$ac_compile") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest.$ac_objext; then
ac_header_compiler=yes
else
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_header_compiler=no
fi
rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
{ $as_echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
$as_echo "$ac_header_compiler" >&6; }
# Is the header present?
{ $as_echo "$as_me:$LINENO: checking $ac_header presence" >&5
$as_echo_n "checking $ac_header presence... " >&6; }
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
#include <$ac_header>
_ACEOF
if { (ac_try="$ac_cpp conftest.$ac_ext"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
$as_echo "$ac_try_echo") >&5
(eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } >/dev/null && {
test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
test ! -s conftest.err
}; then
ac_header_preproc=yes
else
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_header_preproc=no
fi
rm -f conftest.err conftest.$ac_ext
{ $as_echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
$as_echo "$ac_header_preproc" >&6; }
# So? What about this header?
case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
yes:no: )
{ $as_echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
$as_echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
{ $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
$as_echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
ac_header_preproc=yes
;;
no:yes:* )
{ $as_echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
$as_echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
{ $as_echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
$as_echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
{ $as_echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
$as_echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
{ $as_echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
$as_echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
{ $as_echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
$as_echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
{ $as_echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
$as_echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
;;
esac
{ $as_echo "$as_me:$LINENO: checking for $ac_header" >&5
$as_echo_n "checking for $ac_header... " >&6; }
if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
$as_echo_n "(cached) " >&6
else
eval "$as_ac_Header=\$ac_header_preproc"
fi
ac_res=`eval 'as_val=${'$as_ac_Header'}
$as_echo "$as_val"'`
{ $as_echo "$as_me:$LINENO: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
fi
as_val=`eval 'as_val=${'$as_ac_Header'}
$as_echo "$as_val"'`
if test "x$as_val" = x""yes; then
cat >>confdefs.h <<_ACEOF
#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
_ACEOF
fi
done
# Check for OpenMP parallel execution support
OPENMP_CFLAGS=
......@@ -7650,6 +7851,186 @@ fi
done
for ac_func in clock_gettime
do
as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
{ $as_echo "$as_me:$LINENO: checking for $ac_func" >&5
$as_echo_n "checking for $ac_func... " >&6; }
if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
$as_echo_n "(cached) " >&6
else
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
For example, HP-UX 11i <limits.h> declares gettimeofday. */
#define $ac_func innocuous_$ac_func
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func (); below.
Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
<limits.h> exists even on freestanding compilers. */
#ifdef __STDC__
# include <limits.h>
#else
# include <assert.h>
#endif
#undef $ac_func
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char $ac_func ();
/* The GNU C library defines this for functions which it implements
to always fail with ENOSYS. Some functions are actually named
something starting with __ and the normal name is an alias. */
#if defined __stub_$ac_func || defined __stub___$ac_func
choke me
#endif
int
main ()
{
return $ac_func ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
$as_echo "$ac_try_echo") >&5
(eval "$ac_link") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
$as_test_x conftest$ac_exeext
}; then
eval "$as_ac_var=yes"
else
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
eval "$as_ac_var=no"
fi
rm -rf conftest.dSYM
rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
fi
ac_res=`eval 'as_val=${'$as_ac_var'}
$as_echo "$as_val"'`
{ $as_echo "$as_me:$LINENO: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
as_val=`eval 'as_val=${'$as_ac_var'}
$as_echo "$as_val"'`
if test "x$as_val" = x""yes; then
cat >>confdefs.h <<_ACEOF
#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
_ACEOF
fi
done
# `clock_gettime()`, declared in unistd.h, may be in librt (e.g. for glibc).
if test $ac_cv_func_clock_gettime = no; then
{ $as_echo "$as_me:$LINENO: checking for clock_gettime in -lrt" >&5
$as_echo_n "checking for clock_gettime in -lrt... " >&6; }
if test "${ac_cv_lib_rt_clock_gettime+set}" = set; then
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lrt $LIBS"
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char clock_gettime ();
int
main ()
{
return clock_gettime ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (ac_try="$ac_link"
case "(($ac_try" in
*\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
*) ac_try_echo=$ac_try;;
esac
eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\""
$as_echo "$ac_try_echo") >&5
(eval "$ac_link") 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
$as_echo "$as_me:$LINENO: \$? = $ac_status" >&5
(exit $ac_status); } && {
test -z "$ac_c_werror_flag" ||
test ! -s conftest.err
} && test -s conftest$ac_exeext && {
test "$cross_compiling" = yes ||
$as_test_x conftest$ac_exeext
}; then
ac_cv_lib_rt_clock_gettime=yes
else
$as_echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5
ac_cv_lib_rt_clock_gettime=no
fi
rm -rf conftest.dSYM
rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:$LINENO: result: $ac_cv_lib_rt_clock_gettime" >&5
$as_echo "$ac_cv_lib_rt_clock_gettime" >&6; }
if test "x$ac_cv_lib_rt_clock_gettime" = x""yes; then
LIBS="-lrt $LIBS"
cat >>confdefs.h <<\_ACEOF
#define HAVE_CLOCK_GETTIME 1
_ACEOF
fi
fi
#
# Test if regular expressions are functional. Early regex implementations have nonfunctional stubs,
# so the check for C++11 succeeds, but the compiled code will throw an exception.
......@@ -8235,7 +8616,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by Stacks $as_me 1.46, which was
This file was extended by Stacks $as_me 2.0Beta8c, which was
generated by GNU Autoconf 2.63. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
......@@ -8298,7 +8679,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_version="\\
Stacks config.status 1.46
Stacks config.status 2.0Beta8c
configured by $0, generated by GNU Autoconf 2.63,
with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
......
......@@ -2,7 +2,7 @@
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
AC_INIT([Stacks], [1.46])
AC_INIT([Stacks], [2.0Beta8c])
AC_CONFIG_AUX_DIR([config])
AM_INIT_AUTOMAKE([-Wall -Werror foreign parallel-tests subdir-objects])
AC_CONFIG_SRCDIR([src/ustacks.cc])
......@@ -25,28 +25,15 @@ AC_SUBST([BAM_LIBS])
])
#
# Enable use of Google Sparsehash and get include location if requested.
#
AC_ARG_ENABLE([sparsehash],
AS_HELP_STRING([--enable-sparsehash], [Enable the use of Google Sparsehash (must be installed).]))
AS_IF([test "x$enable_sparsehash" = "xyes"], [
AC_DEFINE([HAVE_SPARSEHASH], [1], [Enable compilation with Google Sparsehash])
AC_ARG_WITH([sparsehash-include-path],
[AS_HELP_STRING([--with-sparsehash-include-path],
[location of Google Sparsehash headers])],
[SPARSEHASH_CFLAGS="-I$withval"],
[SPARSEHASH_CFLAGS=""])
AC_SUBST([SPARSEHASH_CFLAGS])
])
# Checks for programs.
AC_PROG_CXX
AM_PROG_CC_C_O
AX_CXX_COMPILE_STDCXX(11,, [mandatory])
# Checks for ar-based static libs.
AC_PROG_RANLIB
m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
# Checks for libraries.
AC_CHECK_LIB([gomp], [omp_set_num_threads],, [AC_MSG_WARN([Unable to locate OpenMP library, you should probably specify '--disable-openmp'.])])
AC_CHECK_LIB([z], [gzread],, [AC_MSG_ERROR([Zlib not found, reading gzipped files will not be possible.])])
......@@ -55,6 +42,7 @@ AC_CHECK_LIB([z], [gzread],, [AC_MSG_ERROR([Zlib not found, reading gzipped file
AC_HEADER_DIRENT
AC_HEADER_STDC
AC_CHECK_HEADERS([float.h limits.h stdlib.h string.h])
AC_CHECK_HEADERS([unistd.h])
# Check for OpenMP parallel execution support
AC_OPENMP
......@@ -69,6 +57,15 @@ AC_FUNC_CLOSEDIR_VOID
AC_FUNC_MALLOC
AC_FUNC_REALLOC
AC_CHECK_FUNCS([floor memset pow sqrt])
AC_CHECK_FUNCS([clock_gettime])
# `clock_gettime()`, declared in unistd.h, may be in librt (e.g. for glibc).
if test $ac_cv_func_clock_gettime = no; then
AC_CHECK_LIB(rt, clock_gettime,
[LIBS="-lrt $LIBS"
AC_DEFINE(HAVE_CLOCK_GETTIME, 1, [Define to 1 if you have the `clock_gettime' function.])
])
fi
#
# Test if regular expressions are functional. Early regex implementations have nonfunctional stubs,
......
stacks (2.0Beta8c+dfsg-1) unstable; urgency=medium
* New upstream version
* Remove code copy of htslib and use Debian packaged version of htslib
instead
* Standards-Version: 4.1.3
* debhelper 11
-- Andreas Tille <tille@debian.org> Sun, 18 Feb 2018 17:15:06 +0100
stacks (1.46-1) unstable; urgency=medium
* New upstream version
......
......@@ -4,13 +4,14 @@ Uploaders: Tim Booth <tbooth@ceh.ac.uk>,
Andreas Tille <tille@debian.org>
Section: science
Priority: optional
Build-Depends: debhelper (>= 10),
Build-Depends: debhelper (>= 11~),
python,
zlib1g-dev,
libbam-dev,
libsparsehash-dev (>= 2.0),
samtools
Standards-Version: 4.0.0
samtools,
libhts-dev
Standards-Version: 4.1.3
Vcs-Browser: https://anonscm.debian.org/cgit/debian-med/stacks.git
Vcs-Git: https://anonscm.debian.org/git/debian-med/stacks.git
Homepage: http://creskolab.uoregon.edu/stacks/
......
......@@ -2,6 +2,7 @@ Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Upstream-Name: Stacks
Upstream-Contact: Julian Catchen <jcatchen@uoregon.edu>
Source: http://creskolab.uoregon.edu/stacks/
Files-Excluded: */htslib
Files: *
Copyright: © Julian Catchen <jcatchen@uoregon.edu>
......
......@@ -9,8 +9,8 @@ Last-Update: 2016-10-21
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
--- a/Makefile.am
+++ b/Makefile.am
@@ -175,10 +175,10 @@
$(MAKE) all "CXXFLAGS=-g -Wall -DDEBUG -std=gnu++0x"
@@ -148,10 +148,10 @@ debug:
$(MAKE) all "CXXFLAGS=-g -Wall -DDEBUG -std=gnu++11"
install-data-hook:
- sed -e 's,_VERSION_,$(VERSION),' -e 's,_BINDIR_,$(bindir)/,g' -e 's,_PKGDATADIR_,$(pkgdatadir)/,g' $(DESTDIR)$(bindir)/denovo_map.pl > $(DESTDIR)$(bindir)/denovo_map.pl.subst
......@@ -22,7 +22,7 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
mv $(DESTDIR)$(bindir)/ref_map.pl.subst $(DESTDIR)$(bindir)/ref_map.pl
chmod +x $(DESTDIR)$(bindir)/ref_map.pl
sed -e 's,_VERSION_,$(VERSION),' -e 's,_PKGDATADIR_,$(pkgdatadir)/,g' $(DESTDIR)$(bindir)/export_sql.pl > $(DESTDIR)$(bindir)/export_sql.pl.subst
@@ -199,11 +199,11 @@
@@ -172,11 +172,11 @@ install-data-hook:
sed -e 's,_VERSION_,$(VERSION),' -e 's,_PKGDATADIR_,$(pkgdatadir)/,g' $(DESTDIR)$(bindir)/load_sequences.pl > $(DESTDIR)$(bindir)/load_sequences.pl.subst
mv $(DESTDIR)$(bindir)/load_sequences.pl.subst $(DESTDIR)$(bindir)/load_sequences.pl
chmod +x $(DESTDIR)$(bindir)/load_sequences.pl
......
constants.php.patch
email-settings.patch
script-exe-paths
use_debian_packaged_htslib.patch
Description: Use Debian packaged version of htslib
Author: Andreas Tille <tille@debian.org>
Last-Update: Sun, 18 Feb 2018 17:00:11 +0100
--- a/Makefile.am
+++ b/Makefile.am
@@ -142,7 +142,7 @@ EXTRA_DIST = $(nobase_pkgdata_DATA) LICE
pkglocalstatedir = $(localstatedir)/$(PACKAGE)
-SUBDIRS = htslib .
+SUBDIRS = .
debug:
$(MAKE) all "CXXFLAGS=-g -Wall -DDEBUG -std=gnu++11"
--- a/configure.ac
+++ b/configure.ac
@@ -18,9 +18,9 @@ AC_ARG_ENABLE([bam],
AS_IF([test "x$enable_bam" != "xno"], [
AC_DEFINE([HAVE_BAM], [1], [Enable compilation with Samtools BAM library])
-BAM_CFLAGS='-I./htslib/htslib'
+BAM_CFLAGS='-I/usr/include/htslib'
AC_SUBST([BAM_CFLAGS])
-BAM_LIBS='./htslib/libhts.a'
+BAM_LIBS='-lhts'
AC_SUBST([BAM_LIBS])
])
version=4
http://creskolab.uoregon.edu/stacks/ (?:.*/|)source/stacks-([0-9.]+).tar.[gzb2x]+
opts="repacksuffix=+dfsg,dversionmangle=s/\+dfsg//g,repack,compression=xz" \
https://creskolab.uoregon.edu/stacks/ (?:.*/|)source/stacks-(\d[0-9.Betac]+).tar.[gzb2x]+
Basic Installation
==================
To build and install HTSlib, 'cd' to the htslib-1.x directory containing
the package's source and type the following commands:
./configure
make
make install
The './configure' command checks your build environment and allows various
optional functionality to be enabled (see Configuration below). If you
don't want to select any optional functionality, you may wish to omit
configure and just type 'make; make install' as for previous versions
of HTSlib. However if the build fails you should run './configure' as
it can diagnose the common reasons for build failures.
The 'make' command builds the HTSlib library and and various useful
utilities: bgzip, htsfile, and tabix. If compilation fails you should
run './configure' as it can diagnose problems with your build environment
that cause build failures.
The 'make install' command installs the libraries, library header files,
utilities, several manual pages, and a pkgconfig file to /usr/local.
The installation location can be changed by configuring with --prefix=DIR
or via 'make prefix=DIR install' (see Installation Locations below).
Configuration
=============
By default, './configure' examines your build environment, checking for
requirements such as the zlib development files, and arranges for a plain
HTSlib build. The following configure options can be used to enable
various features and specify further optional external requirements:
--enable-plugins
Use plugins to implement exotic file access protocols and other
specialised facilities. This enables such facilities to be developed
and packaged outwith HTSlib, and somewhat isolates HTSlib-using programs
from their library dependencies. By default, any enabled pluggable
facilities (such as iRODS and libcurl file access) are built directly
within HTSlib.
--with-plugin-dir=DIR
Specifies the directory into which plugins built while building HTSlib
should be installed; by default, LIBEXECDIR/htslib.
--with-plugin-path=DIR:DIR:DIR...
Specifies the list of directories that HTSlib will search for plugins.
By default, only the directory specified via --with-plugin-dir will be
searched; you can use --with-plugin-path='DIR:$(plugindir):DIR' and so
on to cause additional directories to be searched.
--with-irods[=DIR]
Specifies the location of the iRODS client library to use to enable
access to data objects stored in iRODS (<http://irods.org/>) via file
paths like 'irods:DATAOBJ'. DIR is the base of an iRODS source tree
such that the library is present as DIR/lib/core/obj/libRodsAPI.* and
headers are present under DIR/lib/api/include and so on. If '=DIR' is
omitted, $IRODS_HOME will be used as a base directory.
--enable-libcurl
Use libcurl (<http://curl.haxx.se/>) to implement network access to
remote files via FTP, HTTP, HTTPS, S3, etc. By default, HTSlib uses
its own simple networking code to provide access via FTP and HTTP only.
The configure script also accepts the usual options and environment variables
for tuning installation locations and compilers: type './configure --help'
for details. For example,
./configure CC=icc --prefix=/opt/icc-compiled
would specify that HTSlib is to be built with icc and installed into bin,
lib, etc subdirectories under /opt/icc-compiled.
Installation Locations
======================
By default, 'make install' installs HTSlib libraries under /usr/local/lib,
HTSlib header files under /usr/local/include, utility programs under
/usr/local/bin, etc. (To be precise, the header files are installed within
a fixed 'htslib' subdirectory under the specified .../include location.)
You can specify a different location to install HTSlib by configuring
with --prefix=DIR or specify locations for particular parts of HTSlib by
configuring with --libdir=DIR and so on. Type './configure --help' for
the full list of such install directory options.
Alternatively you can specify different locations at install time by
typing 'make prefix=DIR install' or 'make libdir=DIR install' and so on.
Consult the list of prefix/exec_prefix/etc variables near the top of the
Makefile for the full list of such variables that can be overridden.
You can also specify a staging area by typing 'make DESTDIR=DIR install',
possibly in conjunction with other --prefix or prefix=DIR settings.
For example,
make DESTDIR=/tmp/staging prefix=/opt
would install into bin, lib, etc subdirectories under /tmp/staging/opt.
[Files in this distribution outwith the cram/ subdirectory are distributed
according to the terms of the following MIT/Expat license.]
The MIT/Expat License
Copyright (C) 2012-2014 Genome Research Ltd.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.
[Files within the cram/ subdirectory in this distribution are distributed
according to the terms of the following Modified 3-Clause BSD license.]
The Modified-BSD License
Copyright (C) 2012-2014 Genome Research Ltd.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
3. Neither the names Genome Research Ltd and Wellcome Trust Sanger Institute
nor the names of its contributors may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY GENOME RESEARCH LTD AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL GENOME RESEARCH LTD OR ITS CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
[The use of a range of years within a copyright notice in this distribution
should be interpreted as being equivalent to a list of years including the
first and last year specified and all consecutive years between them.
For example, a copyright notice that reads "Copyright (C) 2005, 2007-2009,
2011-2012" should be interpreted as being identical to a notice that reads
"Copyright (C) 2005, 2007, 2008, 2009, 2011, 2012" and a copyright notice
that reads "Copyright (C) 2005-2012" should be interpreted as being identical
to a notice that reads "Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010,
2011, 2012".]
# Makefile for htslib, a C library for high-throughput sequencing data formats.
#
# Copyright (C) 2013-2015 Genome Research Ltd.
#
# Author: John Marshall <jm18@sanger.ac.uk>
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# DEALINGS IN THE SOFTWARE.
CC = gcc
AR = ar
RANLIB = ranlib
CPPFLAGS =
# TODO: probably update cram code to make it compile cleanly with -Wc++-compat
CFLAGS = -g -Wall -O2
EXTRA_CFLAGS_PIC = -fpic
LDFLAGS =
LIBS =
# For now these don't work too well as samtools also needs to know to
# add -lbz2 and -llzma if linking against the static libhts.a library.
# TODO This needs configury and adding to htslib.pc.in.
#
# # Bzip2 support; optionally used by CRAM.
# HAVE_LIBBZ2 := $(shell echo -e "\#include <bzlib.h>\012int main(void){return 0;}" > .test.c && $(CC) $(CFLAGS) $(CPPFLAGS) -o .test .test.c -lbz2 2>/dev/null && echo yes)
# ifeq "$(HAVE_LIBBZ2)" "yes"
# CPPFLAGS += -DHAVE_LIBBZ2
# LIBS += -lbz2
# endif
#
# # Lzma support; optionally used by CRAM.
# HAVE_LIBLZMA := $(shell echo -e "\#include <lzma.h>\012int main(void){return 0;}" > .test.c && $(CC) $(CFLAGS) $(CPPFLAGS) -o .test .test.c -llzma 2>/dev/null && echo yes)
# ifeq "$(HAVE_LIBLZMA)" "yes"
# CPPFLAGS += -DHAVE_LIBLZMA
# LIBS += -llzma
# endif
prefix = /usr/local
exec_prefix = $(prefix)
bindir = $(exec_prefix)/bin
includedir = $(prefix)/include
libdir = $(exec_prefix)/lib
libexecdir = $(exec_prefix)/libexec
datarootdir = $(prefix)/share
mandir = $(datarootdir)/man
man1dir = $(mandir)/man1
man5dir = $(mandir)/man5
pkgconfigdir= $(libdir)/pkgconfig
MKDIR_P = mkdir -p
INSTALL = install -p
INSTALL_PROGRAM = $(INSTALL)
INSTALL_DATA = $(INSTALL) -m 644
INSTALL_DIR = $(MKDIR_P) -m 755
# Set by config.mk if plugins are enabled
plugindir =
BUILT_PROGRAMS = \
bgzip \
htsfile \
tabix
BUILT_TEST_PROGRAMS = \
test/fieldarith \
test/hfile \
test/sam \
test/test-regidx \
test/test_view \
test/test-vcf-api \
test/test-vcf-sweep
# all: lib-static lib-shared $(BUILT_PROGRAMS) plugins $(BUILT_TEST_PROGRAMS)
all: lib-static
HTSPREFIX =
include htslib_vars.mk
PACKAGE_VERSION = 1.3.1
LIBHTS_SOVERSION = 1
# $(NUMERIC_VERSION) is for items that must have a numeric X.Y.Z string
# even if this is a dirty or untagged Git working tree.
NUMERIC_VERSION = $(PACKAGE_VERSION)
# If building from a Git repository, replace $(PACKAGE_VERSION) with the Git
# description of the working tree: either a release tag with the same value
# as $(PACKAGE_VERSION) above, or an exact description likely based on a tag.
# Much of this is also GNU Make-specific. If you don't have GNU Make and/or
# are not building from a Git repository, comment out this conditional.
ifneq "$(wildcard .git)" ""
original_version := $(PACKAGE_VERSION)
PACKAGE_VERSION := $(shell git describe --always --dirty)
# Unless the Git description matches /\d*\.\d*(\.\d*)?/, i.e., is exactly a tag
# with a numeric name, revert $(NUMERIC_VERSION) to the original version number
# written above, but with the patchlevel field bumped to 255.
ifneq "$(subst ..,.,$(subst 0,,$(subst 1,,$(subst 2,,$(subst 3,,$(subst 4,,$(subst 5,,$(subst 6,,$(subst 7,,$(subst 8,,$(subst 9,,$(PACKAGE_VERSION))))))))))))" "."
empty :=
NUMERIC_VERSION := $(subst $(empty) ,.,$(wordlist 1,2,$(subst ., ,$(original_version))) 255)
endif
# Force version.h to be remade if $(PACKAGE_VERSION) has changed.
version.h: $(if $(wildcard version.h),$(if $(findstring "$(PACKAGE_VERSION)",$(shell cat version.h)),,force))
endif
version.h:
echo '#define HTS_VERSION "$(PACKAGE_VERSION)"' > $@
print-version:
@echo $(PACKAGE_VERSION)
.SUFFIXES: .bundle .c .o .pico .so
.c.o:
$(CC) $(CFLAGS) -I. $(CPPFLAGS) -c -o $@ $<
.c.pico:
$(CC) $(CFLAGS) -I. $(CPPFLAGS) $(EXTRA_CFLAGS_PIC) -c -o $@ $<
LIBHTS_OBJS = \
kfunc.o \
knetfile.o \
kstring.o \
bgzf.o \
faidx.o \
hfile.o \
hfile_net.o \
hts.o \
md5.o \
regidx.o \
sam.o \
synced_bcf_reader.o \
vcf_sweep.o \
tbx.o \
vcf.o \
vcfutils.o \
cram/cram_codecs.o \
cram/cram_decode.o \
cram/cram_encode.o \
cram/cram_external.o \
cram/cram_index.o \
cram/cram_io.o \
cram/cram_samtools.o \
cram/cram_stats.o \
cram/files.o \
cram/mFILE.o \
cram/open_trace_file.o \
cram/pooled_alloc.o \
cram/rANS_static.o \
cram/sam_header.o \
cram/string_alloc.o \
cram/thread_pool.o \
cram/vlen.o \
cram/zfio.o
PLUGIN_OBJS =
cram_h = cram/cram.h $(cram_samtools_h) $(cram_sam_header_h) $(cram_structs_h) $(cram_io_h) cram/cram_encode.h cram/cram_decode.h cram/cram_stats.h cram/cram_codecs.h cram/cram_index.h $(htslib_cram_h)
cram_io_h = cram/cram_io.h $(cram_misc_h)
cram_misc_h = cram/misc.h cram/os.h
cram_sam_header_h = cram/sam_header.h cram/string_alloc.h cram/pooled_alloc.h $(htslib_khash_h) $(htslib_kstring_h)
cram_samtools_h = cram/cram_samtools.h $(htslib_sam_h) $(cram_sam_header_h)
cram_structs_h = cram/cram_structs.h cram/thread_pool.h cram/string_alloc.h $(htslib_khash_h)
cram_open_trace_file_h = cram/open_trace_file.h cram/mFILE.h
hfile_internal_h = hfile_internal.h $(htslib_hfile_h)
hts_internal_h = hts_internal.h $(htslib_hts_h)
# To be effective, config.mk needs to appear after most Makefile variables are
# set but before most rules appear, so that it can both use previously-set
# variables in its own rules' prerequisites and also update variables for use
# in later rules' prerequisites.
# If your make doesn't accept -include, change this to 'include' if you are
# using the configure script or just comment the line out if you are not.
-include config.mk
# Usually config.h is generated by running configure or config.status,
# but if those aren't used create a default config.h here.
config.h:
echo '/* Empty config.h generated by Makefile */' > $@
lib-static: libhts.a
# $(shell), :=, and ifeq/.../endif are GNU Make-specific. If you don't have
# GNU Make, comment out the parts of this conditional that don't apply.
PLATFORM := $(shell uname -s)
ifeq "$(PLATFORM)" "Darwin"
SHLIB_FLAVOUR = dylib
lib-shared: libhts.dylib
BUILT_PLUGINS = $(PLUGIN_OBJS:.o=.bundle)
else
SHLIB_FLAVOUR = so
lib-shared: libhts.so
BUILT_PLUGINS = $(PLUGIN_OBJS:.o=.so)
endif
plugins: $(BUILT_PLUGINS)
libhts.a: $(LIBHTS_OBJS)
@-rm -f $@
$(AR) -rc $@ $(LIBHTS_OBJS)
-$(RANLIB) $@
# The target here is libhts.so, as that is the built file that other rules
# depend upon and that is used when -lhts appears in other program's recipes.
# As a byproduct invisible to make, libhts.so.NN is also created, as it is the
# file used at runtime (when $LD_LIBRARY_PATH includes the build directory).
libhts.so: $(LIBHTS_OBJS:.o=.pico)
$(CC) -shared -Wl,-soname,libhts.so.$(LIBHTS_SOVERSION) -pthread $(LDFLAGS) -o $@ $(LIBHTS_OBJS:.o=.pico) -lz -lm $(LIBS)
ln -sf $@ libhts.so.$(LIBHTS_SOVERSION)
# Similarly this also creates libhts.NN.dylib as a byproduct, so that programs
# when run can find this uninstalled shared library (when $DYLD_LIBRARY_PATH
# includes this project's build directory).
libhts.dylib: $(LIBHTS_OBJS)
$(CC) -dynamiclib -install_name $(libdir)/libhts.$(LIBHTS_SOVERSION).dylib -current_version $(NUMERIC_VERSION) -compatibility_version $(LIBHTS_SOVERSION) $(LDFLAGS) -o $@ $(LIBHTS_OBJS) -lz $(LIBS)
ln -sf $@ libhts.$(LIBHTS_SOVERSION).dylib
.pico.so:
$(CC) -shared -Wl,-E -pthread $(LDFLAGS) -o $@ $< $(LIBS)
.o.bundle:
$(CC) -bundle -Wl,-undefined,dynamic_lookup $(LDFLAGS) -o $@ $< $(LIBS)
bgzf.o bgzf.pico: bgzf.c config.h $(htslib_hts_h) $(htslib_bgzf_h) $(htslib_hfile_h) $(htslib_khash_h)
kstring.o kstring.pico: kstring.c config.h $(htslib_kstring_h)
knetfile.o knetfile.pico: knetfile.c config.h $(htslib_knetfile_h)
hfile.o hfile.pico: hfile.c config.h $(htslib_hfile_h) $(hfile_internal_h) $(hts_internal_h) $(htslib_khash_h)
hfile_irods.o hfile_irods.pico: hfile_irods.c config.h $(hfile_internal_h) $(htslib_hts_h) $(htslib_kstring_h)
hfile_libcurl.o hfile_libcurl.pico: hfile_libcurl.c config.h $(hfile_internal_h) $(htslib_hts_h) $(htslib_kstring_h)
hfile_net.o hfile_net.pico: hfile_net.c config.h $(hfile_internal_h) $(htslib_knetfile_h)
hts.o hts.pico: hts.c config.h version.h $(htslib_hts_h) $(htslib_bgzf_h) $(cram_h) $(htslib_hfile_h) $(htslib_khash_h) $(htslib_kseq_h) $(htslib_ksort_h) $(hts_internal_h)
vcf.o vcf.pico: vcf.c config.h $(htslib_vcf_h) $(htslib_bgzf_h) $(htslib_tbx_h) $(htslib_hfile_h) $(hts_internal_h) $(htslib_khash_h) $(htslib_kseq_h) $(htslib_kstring_h) $(htslib_khash_str2int_h)
sam.o sam.pico: sam.c config.h $(htslib_sam_h) $(htslib_bgzf_h) $(cram_h) $(hts_internal_h) $(htslib_hfile_h) $(htslib_khash_h) $(htslib_kseq_h) $(htslib_kstring_h)
tbx.o tbx.pico: tbx.c config.h $(htslib_tbx_h) $(htslib_bgzf_h) $(htslib_khash_h)
faidx.o faidx.pico: faidx.c config.h $(htslib_bgzf_h) $(htslib_faidx_h) $(htslib_hfile_h) $(htslib_khash_h) $(htslib_kstring_h)
synced_bcf_reader.o synced_bcf_reader.pico: synced_bcf_reader.c config.h $(htslib_synced_bcf_reader_h) $(htslib_kseq_h) $(htslib_khash_str2int_h) $(htslib_bgzf_h)
vcf_sweep.o vcf_sweep.pico: vcf_sweep.c config.h $(htslib_vcf_sweep_h) $(htslib_bgzf_h)
vcfutils.o vcfutils.pico: vcfutils.c config.h $(htslib_vcfutils_h) $(htslib_kbitset_h)
kfunc.o kfunc.pico: kfunc.c config.h $(htslib_kfunc_h)
regidx.o regidx.pico: regidx.c config.h $(htslib_hts_h) $(htslib_kstring_h) $(htslib_kseq_h) $(htslib_khash_str2int_h) $(htslib_regidx_h)
md5.o md5.pico: md5.c config.h $(htslib_hts_h)
plugin.o plugin.pico: plugin.c config.h $(hts_internal_h) $(htslib_kstring_h)
cram/cram_codecs.o cram/cram_codecs.pico: cram/cram_codecs.c config.h $(cram_h)
cram/cram_decode.o cram/cram_decode.pico: cram/cram_decode.c config.h $(cram_h) cram/os.h $(htslib_hts_h)
cram/cram_encode.o cram/cram_encode.pico: cram/cram_encode.c config.h $(cram_h) cram/os.h $(htslib_hts_h)
cram/cram_external.o cram/cram_external.pico: cram/cram_external.c config.h $(htslib_hfile_h) $(cram_h)
cram/cram_index.o cram/cram_index.pico: cram/cram_index.c config.h $(htslib_hfile_h) $(cram_h) cram/os.h cram/zfio.h $(hts_internal_h)
cram/cram_io.o cram/cram_io.pico: cram/cram_io.c config.h $(cram_h) cram/os.h $(htslib_hts_h) $(cram_open_trace_file_h) cram/rANS_static.h $(htslib_hfile_h) $(htslib_bgzf_h) $(htslib_faidx_h)
cram/cram_samtools.o cram/cram_samtools.pico: cram/cram_samtools.c config.h $(cram_h) $(htslib_sam_h)
cram/cram_stats.o cram/cram_stats.pico: cram/cram_stats.c config.h $(cram_h) cram/os.h
cram/files.o cram/files.pico: cram/files.c config.h $(cram_misc_h)
cram/mFILE.o cram/mFILE.pico: cram/mFILE.c config.h cram/os.h cram/mFILE.h cram/vlen.h
cram/open_trace_file.o cram/open_trace_file.pico: cram/open_trace_file.c config.h cram/os.h $(cram_open_trace_file_h) $(cram_misc_h) $(htslib_hfile_h)
cram/pooled_alloc.o cram/pooled_alloc.pico: cram/pooled_alloc.c config.h cram/pooled_alloc.h
cram/rANS_static.o cram/rANS_static.pico: cram/rANS_static.c config.h cram/rANS_static.h cram/rANS_byte.h
cram/sam_header.o cram/sam_header.pico: cram/sam_header.c config.h $(cram_sam_header_h) cram/string_alloc.h
cram/string_alloc.o cram/string_alloc.pico: cram/string_alloc.c config.h cram/string_alloc.h
cram/thread_pool.o cram/thread_pool.pico: cram/thread_pool.c config.h cram/thread_pool.h
cram/vlen.o cram/vlen.pico: cram/vlen.c config.h cram/vlen.h cram/os.h
cram/zfio.o cram/zfio.pico: cram/zfio.c config.h cram/os.h cram/zfio.h
bgzip: bgzip.o libhts.a
$(CC) -pthread $(LDFLAGS) -o $@ bgzip.o libhts.a -lz $(LIBS)
htsfile: htsfile.o libhts.a
$(CC) -pthread $(LDFLAGS) -o $@ htsfile.o libhts.a -lz $(LIBS)
tabix: tabix.o libhts.a
$(CC) -pthread $(LDFLAGS) -o $@ tabix.o libhts.a -lz $(LIBS)
bgzip.o: bgzip.c config.h $(htslib_bgzf_h) $(htslib_hts_h)
htsfile.o: htsfile.c config.h $(htslib_hfile_h) $(htslib_hts_h) $(htslib_sam_h) $(htslib_vcf_h)
tabix.o: tabix.c config.h $(htslib_tbx_h) $(htslib_sam_h) $(htslib_vcf_h) $(htslib_kseq_h) $(htslib_bgzf_h) $(htslib_hts_h) $(htslib_regidx_h)
# 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).
check test: htsfile $(BUILT_TEST_PROGRAMS)
test/fieldarith test/fieldarith.sam
test/hfile
test/sam test/ce.fa test/faidx.fa
test/test-regidx
cd test && REF_PATH=: ./test.pl
test/fieldarith: test/fieldarith.o libhts.a
$(CC) -pthread $(LDFLAGS) -o $@ test/fieldarith.o libhts.a -lz $(LIBS)
test/hfile: test/hfile.o libhts.a
$(CC) -pthread $(LDFLAGS) -o $@ test/hfile.o libhts.a -lz $(LIBS)
test/sam: test/sam.o libhts.a
$(CC) -pthread $(LDFLAGS) -o $@ test/sam.o libhts.a -lz $(LIBS)
test/test-regidx: test/test-regidx.o libhts.a
$(CC) -pthread $(LDFLAGS) -o $@ test/test-regidx.o libhts.a -lz $(LIBS)
test/test_view: test/test_view.o libhts.a
$(CC) -pthread $(LDFLAGS) -o $@ test/test_view.o libhts.a -lz $(LIBS)
test/test-vcf-api: test/test-vcf-api.o libhts.a
$(CC) -pthread $(LDFLAGS) -o $@ test/test-vcf-api.o libhts.a -lz $(LIBS)
test/test-vcf-sweep: test/test-vcf-sweep.o libhts.a
$(CC) -pthread $(LDFLAGS) -o $@ test/test-vcf-sweep.o libhts.a -lz $(LIBS)
test/fieldarith.o: test/fieldarith.c config.h $(htslib_sam_h)
test/hfile.o: test/hfile.c config.h $(htslib_hfile_h) $(htslib_hts_defs_h)
test/sam.o: test/sam.c config.h $(htslib_hts_defs_h) $(htslib_sam_h) $(htslib_faidx_h) $(htslib_kstring_h)
test/test-regidx.o: test/test-regidx.c config.h $(htslib_regidx_h)
test/test_view.o: test/test_view.c config.h $(cram_h) $(htslib_sam_h)
test/test-vcf-api.o: test/test-vcf-api.c config.h $(htslib_hts_h) $(htslib_vcf_h) $(htslib_kstring_h) $(htslib_kseq_h)
test/test-vcf-sweep.o: test/test-vcf-sweep.c config.h $(htslib_vcf_sweep_h)
# install: libhts.a $(BUILT_PROGRAMS) $(BUILT_PLUGINS) installdirs install-$(SHLIB_FLAVOUR) install-pkgconfig
# $(INSTALL_PROGRAM) $(BUILT_PROGRAMS) $(DESTDIR)$(bindir)
# if test -n "$(BUILT_PLUGINS)"; then $(INSTALL_PROGRAM) $(BUILT_PLUGINS) $(DESTDIR)$(plugindir); fi
# $(INSTALL_DATA) htslib/*.h $(DESTDIR)$(includedir)/htslib
# $(INSTALL_DATA) libhts.a $(DESTDIR)$(libdir)/libhts.a
# $(INSTALL_DATA) htsfile.1 tabix.1 $(DESTDIR)$(man1dir)
# $(INSTALL_DATA) faidx.5 sam.5 vcf.5 $(DESTDIR)$(man5dir)
installdirs:
$(INSTALL_DIR) $(DESTDIR)$(bindir) $(DESTDIR)$(includedir) $(DESTDIR)$(includedir)/htslib $(DESTDIR)$(libdir) $(DESTDIR)$(man1dir) $(DESTDIR)$(man5dir) $(DESTDIR)$(pkgconfigdir)
if test -n "$(plugindir)"; then $(INSTALL_DIR) $(DESTDIR)$(plugindir); fi
# After installation, the real file in $(libdir) will be libhts.so.X.Y.Z,
# with symlinks libhts.so (used via -lhts during linking of client programs)
# and libhts.so.NN (used by client executables at runtime).
install-so: libhts.so installdirs
$(INSTALL_DATA) libhts.so $(DESTDIR)$(libdir)/libhts.so.$(PACKAGE_VERSION)
ln -sf libhts.so.$(PACKAGE_VERSION) $(DESTDIR)$(libdir)/libhts.so
ln -sf libhts.so.$(PACKAGE_VERSION) $(DESTDIR)$(libdir)/libhts.so.$(LIBHTS_SOVERSION)
install-dylib: libhts.dylib installdirs
$(INSTALL_PROGRAM) libhts.dylib $(DESTDIR)$(libdir)/libhts.$(PACKAGE_VERSION).dylib
ln -sf libhts.$(PACKAGE_VERSION).dylib $(DESTDIR)$(libdir)/libhts.dylib
ln -sf libhts.$(PACKAGE_VERSION).dylib $(DESTDIR)$(libdir)/libhts.$(LIBHTS_SOVERSION).dylib
# Substitute these pseudo-autoconf variables only at install time
# so that "make install prefix=/prefix/path" etc continue to work.
install-pkgconfig: installdirs
sed -e 's#@includedir@#$(includedir)#g;s#@libdir@#$(libdir)#g;s#@PACKAGE_VERSION@#$(PACKAGE_VERSION)#g' htslib.pc.in > $(DESTDIR)$(pkgconfigdir)/htslib.pc
chmod 644 $(DESTDIR)$(pkgconfigdir)/htslib.pc
# A pkg-config file (suitable for copying to $PKG_CONFIG_PATH) that provides
# flags for building against the uninstalled library in this build directory.
htslib-uninstalled.pc: htslib.pc.in
sed -e 's#@includedir@#'`pwd`'#g;s#@libdir@#'`pwd`'#g' htslib.pc.in > $@
testclean:
-rm -f test/*.tmp test/*.tmp.*
mostlyclean: testclean
-rm -f *.o *.pico cram/*.o cram/*.pico test/*.o test/*.dSYM version.h
clean: mostlyclean clean-$(SHLIB_FLAVOUR)
-rm -f libhts.a $(BUILT_PROGRAMS) $(BUILT_PLUGINS) $(BUILT_TEST_PROGRAMS)
distclean maintainer-clean: clean
-rm -f config.cache config.h config.log config.mk config.status
-rm -f TAGS *-uninstalled.pc
clean-so:
-rm -f libhts.so libhts.so.*
clean-dylib:
-rm -f libhts.dylib libhts.*.dylib
tags TAGS:
ctags -f TAGS *.[ch] cram/*.[ch] htslib/*.h
# We recommend libhts-using programs be built against a separate htslib
# installation. However if you feel that you must bundle htslib source
# code with your program, this hook enables Automake-style "make dist"
# for this subdirectory. If you do bundle an htslib snapshot, please
# add identifying information to $(PACKAGE_VERSION) as appropriate.
# (The wildcards attempt to omit non-exported files (.git*, README.md,
# etc) and other detritus that might be in the top-level directory.)
distdir:
tar -c *.[ch15] [ILMNRcht]*[ELSbcekmnt] | (cd $(distdir) && tar -x)
+cd $(distdir) && $(MAKE) distclean
force:
.PHONY: all check clean distclean distdir force
.PHONY: install install-pkgconfig installdirs lib-shared lib-static
.PHONY: maintainer-clean mostlyclean plugins print-version tags test testclean
.PHONY: clean-so install-so
.PHONY: clean-dylib install-dylib
Noteworthy changes in release 1.3.1 (22 April 2016)
* Improved error checking and reporting, especially of I/O errors when
writing output files (#17, #315, PR #271, PR #317).
* Build fixes for 32-bit systems; be sure to run configure to enable
large file support and access to 2GiB+ files.
* Numerous VCF parsing fixes (#321, #322, #323, #324, #325; PR #370).
Particular thanks to Kostya Kortchinsky of the Google Security Team
for testing and numerous input parsing bug reports.
* HTSlib now prints an informational message when initially creating a
CRAM reference cache in the default location under your $HOME directory.
(No message is printed if you are using $REF_CACHE to specify a location.)
* Avoided rare race condition when caching downloaded CRAM reference sequence
files, by using distinctive names for temporary files (in addition to O_EXCL,
which has always been used). Occasional corruption would previously occur
when multiple tools were simultaneously caching the same reference sequences
on an NFS filesystem that did not support O_EXCL (PR #320).
* Prevented race condition in file access plugin loading (PR #341).
* Fixed mpileup memory leak, so no more "[bam_plp_destroy] memory leak [...]
Continue anyway" warning messages (#299).
* Various minor CRAM fixes.
* Fixed documentation problems #348 and #358.
Noteworthy changes in release 1.3 (15 December 2015)
* Files can now be accessed via HTTPS and Amazon S3 in addition to HTTP
and FTP, when HTSlib is configured to use libcurl for network file access
rather than the included basic knetfile networking.
* HTSlib can be built to use remote access hFILE backends (such as iRODS
and libcurl) via a plugin mechanism. This allows other backends to be
easily added and facilitates building tools that use HTSlib, as they
don't need to be linked with the backends' various required libraries.
* When writing CRAM output, sam_open() etc now default to writing CRAM v3.0
rather than v2.1.
* fai_build() and samtools faidx now accept initial whitespace in ">"
headers (e.g., "> chr1 description" is taken to refer to "chr1").
* tabix --only-header works again (was broken in 1.2.x; #249).
* HTSlib's configure script and Makefile now fully support the standard
convention of allowing CC/CPPFLAGS/CFLAGS/LDFLAGS/LIBS to be overridden
as needed. Previously the Makefile listened to $(LDLIBS) instead; if you
were overriding that, you should now override LIBS rather than LDLIBS.
* Fixed bugs #168, #172, #176, #197, #206, #225, #245, #265, #295, and #296.
Noteworthy changes in release 1.2.1 (3 February 2015)
* Reinstated hts_file_type() and FT_* macros, which were available until 1.1
but briefly removed in 1.2. This function is deprecated and will be removed
in a future release -- you should use hts_detect_format() etc instead
Noteworthy changes in release 1.2 (2 February 2015)
* HTSlib now has a configure script which checks your build environment
and allows for selection of optional extras. See INSTALL for details
* By default, reference sequences are fetched from the EBI CRAM Reference
Registry and cached in your $HOME cache directory. This behaviour can
be controlled by setting REF_PATH and REF_CACHE enviroment variables
(see the samtools(1) man page for details)
* Numerous CRAM improvements:
- Support for CRAM v3.0, an upcoming revision to CRAM supporting
better compression and per-container checksums
- EOF checking for v2.1 and v3.0 (similar to checking BAM EOF blocks)
- Non-standard values for PNEXT and TLEN fields are now preserved
- hts_set_fai_filename() now provides a reference file when encoding
- Generated read names are now numbered from 1, rather than being
labelled 'slice:record-in-slice'
- Multi-threading and speed improvements
* New htsfile command for identifying file formats, and corresponding
file format detection APIs
* New tabix --regions FILE, --targets FILE options for filtering via BED files
* Optional iRODS file access, disabled by default. Configure with --with-irods
to enable accessing iRODS data objects directly via 'irods:DATAOBJ'
* All occurences of 2^29 in the source have been eliminated, so indexing
and querying against reference sequences larger than 512Mbp works (when
using CSI indices)
* Support for plain GZIP compression in various places
* VCF header editing speed improvements
* Added seq_nt16_int[] (equivalent to the samtools API's bam_nt16_nt4_table)
* Reinstated faidx_fetch_nseq(), which was accidentally removed from 1.1.
Now faidx_fetch_nseq() and faidx_nseq() are equivalent; eventually
faidx_fetch_nseq() will be deprecated and removed [#156]
* Fixed bugs #141, #152, #155, #158, #159, and various memory leaks
HTSlib is an implementation of a unified C library for accessing common file
formats, such as SAM, CRAM, VCF, and BCF, used for high-throughput sequencing
data. It is the core library used by samtools and bcftools.
See INSTALL for building and installation instructions.