-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat(hmnrandomread): add local dependency
- Loading branch information
1 parent
72ffe39
commit 9b66d2d
Showing
626 changed files
with
166,824 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,293 @@ | ||
Building and Installing HTSlib | ||
============================== | ||
|
||
Requirements | ||
============ | ||
|
||
Building HTSlib requires a few programs and libraries to be present. | ||
See the "System Specific Details" below for guidance on how to install | ||
these. | ||
|
||
At least the following are required: | ||
|
||
GNU make | ||
C compiler (e.g. gcc or clang) | ||
|
||
In addition, building the configure script requires: | ||
|
||
autoheader | ||
autoconf | ||
autoreconf | ||
|
||
Running the configure script uses awk, along with a number of | ||
standard UNIX tools (cat, cp, grep, mv, rm, sed, among others). Almost | ||
all installations will have these already. | ||
|
||
Running the test harness (make test) uses: | ||
|
||
bash | ||
perl | ||
|
||
HTSlib uses the following external libraries. Building requires both the | ||
library itself, and include files needed to compile code that uses functions | ||
from the library. Note that some Linux distributions put include files in | ||
a development ('-dev' or '-devel') package separate from the main library. | ||
|
||
zlib (required) | ||
libbz2 (required, unless configured with --disable-bz2) | ||
liblzma (required, unless configured with --disable-lzma) | ||
libcurl (optional, but strongly recommended) | ||
libcrypto (optional for Amazon S3 support; not needed on MacOS) | ||
|
||
Disabling libbzip2 and liblzma will make some CRAM files unreadable, so | ||
is not recommended. | ||
|
||
Using libcurl provides HTSlib with network protocol support, for | ||
example it enables the use of ftp://, http://, and https:// URLs. | ||
It is also required if direct access to Amazon S3 or Google Cloud | ||
Storage is enabled. | ||
|
||
Amazon S3 support requires an HMAC function to calculate a message | ||
authentication code. On MacOS, the CCHmac function from the standard | ||
library is used. Systems that do not have CCHmac will get this from | ||
libcrypto. libcrypto is part of OpenSSL or one of its derivatives (LibreSSL | ||
or BoringSSL). | ||
|
||
On Microsoft Windows we recommend use of Mingw64/Msys2. Whilst the | ||
code may work on Windows with other environments, these have not been | ||
verified. Use of the configure script is a requirement too. | ||
|
||
Update htscodecs submodule | ||
========================== | ||
|
||
Note that this section only applies to git checkouts. If you're building | ||
from a release tar file, you can skip this section. | ||
|
||
Some parts of HTSlib are provided by the external "htscodecs" project. This | ||
is included as a submodule. When building from the git repository, | ||
either clone the project using "git clone --recurse-submodules", or run: | ||
|
||
git submodule update --init --recursive | ||
|
||
to ensure the correct version of the submodule is present. | ||
|
||
It is also possible to link against an external libhtscodecs library | ||
by using the '--with-external-htscodecs' configure option. When | ||
this is used, the submodule files will be ignored. | ||
|
||
Building Configure | ||
================== | ||
|
||
This step is only needed if configure.ac has been changed, or if configure | ||
does not exist (for example, when building from a git clone). The | ||
configure script and config.h.in can be built by running: | ||
|
||
autoreconf -i | ||
|
||
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 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 (or with --disable-plugins), | ||
any enabled pluggable facilities (such as libcurl file access) are built | ||
directly within HTSlib. | ||
|
||
The <https://github.com/samtools/htslib-plugins> repository contains | ||
several additional plugins, including the iRODS (<http://irods.org/>) | ||
file access plugin previously distributed with 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-external-htscodecs | ||
Build and link against an external copy of the htscodecs library | ||
instead of using the source files in the htscodecs directory. | ||
|
||
--enable-libcurl | ||
Use libcurl (<http://curl.se/>) to implement network access to | ||
remote files via FTP, HTTP, HTTPS, etc. By default or with | ||
--enable-libcurl=check, configure will probe for libcurl and include | ||
this functionality if libcurl is available. Use --disable-libcurl | ||
to prevent this. | ||
|
||
--enable-gcs | ||
Implement network access to Google Cloud Storage. By default or with | ||
--enable-gcs=check, this is enabled when libcurl is enabled. | ||
|
||
--enable-s3 | ||
Implement network access to Amazon AWS S3. By default or with | ||
--enable-s3=check, this is enabled when libcurl is enabled. | ||
|
||
--disable-bz2 | ||
Bzip2 is an optional compression codec format for CRAM, included | ||
in HTSlib by default. It can be disabled with --disable-bz2, but | ||
be aware that not all CRAM files may be possible to decode. | ||
|
||
--disable-lzma | ||
LZMA is an optional compression codec for CRAM, included in HTSlib | ||
by default. It can be disabled with --disable-lzma, but be aware | ||
that not all CRAM files may be possible to decode. | ||
|
||
--with-libdeflate | ||
Libdeflate is a heavily optimized library for DEFLATE-based compression | ||
and decompression. It also includes a fast crc32 implementation. | ||
By default, ./configure will probe for libdeflate and use it if | ||
available. To prevent this, use --without-libdeflate. | ||
|
||
Each --enable-FEATURE/--disable-FEATURE/--with-PACKAGE/--without-PACKAGE | ||
option listed also has an opposite, e.g., --without-external-htscodecs | ||
or --disable-plugins. However, apart from those options for which the | ||
default is to probe for related facilities, using these opposite options | ||
is mostly unnecessary as they just select the default configure behaviour. | ||
|
||
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. | ||
|
||
If dependencies have been installed in non-standard locations (i.e. not on | ||
the normal include and library search paths) then the CPPFLAGS and LDFLAGS | ||
environment variables can be used to set the options needed to find them. | ||
For example, NetBSD users may use: | ||
|
||
./configure CPPFLAGS=-I/usr/pkg/include \ | ||
LDFLAGS='-L/usr/pkg/lib -Wl,-R/usr/pkg/lib' | ||
|
||
to allow compiling and linking against dependencies installed via the ports | ||
collection. | ||
|
||
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. | ||
|
||
|
||
System Specific Details | ||
======================= | ||
|
||
Installing the prerequisites is system dependent and there is more | ||
than one correct way of satisfying these, including downloading them | ||
from source, compiling and installing them yourself. | ||
|
||
For people with super-user access, we provide an example set of commands | ||
below for installing the dependencies on a variety of operating system | ||
distributions. Note these are not specific recommendations on distribution, | ||
compiler or SSL implementation. It is assumed you already have the core set | ||
of packages for the given distribution - the lists may be incomplete if | ||
this is not the case. | ||
|
||
Debian / Ubuntu | ||
--------------- | ||
|
||
sudo apt-get update # Ensure the package list is up to date | ||
sudo apt-get install autoconf automake make gcc perl zlib1g-dev libbz2-dev liblzma-dev libcurl4-gnutls-dev libssl-dev | ||
|
||
Note: libcurl4-openssl-dev can be used as an alternative to libcurl4-gnutls-dev. | ||
|
||
RedHat / CentOS | ||
--------------- | ||
|
||
sudo yum install autoconf automake make gcc perl-Data-Dumper zlib-devel bzip2 bzip2-devel xz-devel curl-devel openssl-devel | ||
|
||
Note: On some versions perl FindBin will need to be installed to make the tests work. | ||
|
||
sudo yum install perl-FindBin | ||
|
||
Alpine Linux | ||
------------ | ||
|
||
doas apk update # Ensure the package list is up to date | ||
doas apk add autoconf automake make gcc musl-dev perl bash zlib-dev bzip2-dev xz-dev curl-dev libressl-dev | ||
|
||
OpenSUSE | ||
-------- | ||
|
||
sudo zypper install autoconf automake make gcc perl zlib-devel libbz2-devel xz-devel libcurl-devel libopenssl-devel | ||
|
||
Windows MSYS2/MINGW64 | ||
--------------------- | ||
|
||
The configure script must be used as without it the compilation will | ||
likely fail. | ||
|
||
Follow MSYS2 installation instructions at | ||
https://www.msys2.org/wiki/MSYS2-installation/ | ||
|
||
Then relaunch to MSYS2 shell using the "MSYS2 MinGW x64" executable. | ||
Once in that environment (check $MSYSTEM equals "MINGW64") install the | ||
compilers using pacman -S and the following package list: | ||
|
||
base-devel mingw-w64-x86_64-toolchain | ||
mingw-w64-x86_64-libdeflate mingw-w64-x86_64-zlib mingw-w64-x86_64-bzip2 | ||
mingw-w64-x86_64-xz mingw-w64-x86_64-curl mingw-w64-x86_64-autotools | ||
mingw-w64-x86_64-tools-git | ||
|
||
(The last is only needed for building libraries compatible with MSVC.) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,69 @@ | ||
[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-2022 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-2022 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".] |
Oops, something went wrong.