Blob Blame History Raw
Name: bowtie2
Version: 2.4.1
Release: 2%{?dist}
# Use the word "ultra fast" rather than "ultrafast".
Summary: An ultra fast and memory-efficient read aligner
# * bowtie2: GPLv3+
# * TinyThread++: zlib, for files: tinythread.{h,cpp} fast_mutex.h
License: GPLv3+ and zlib
# Fix to build with given CXXFLAGS.
Patch0: bowtie2-makefile-cxxflags.patch
BuildRequires: gcc-c++
BuildRequires: help2man
BuildRequires: libasan
BuildRequires: libubsan
BuildRequires: perl-generators
BuildRequires: perl-interpreter
BuildRequires: perl(Clone)
BuildRequires: perl(File::Which)
BuildRequires: perl(FindBin)
BuildRequires: perl(Sys::Hostname)
BuildRequires: perl(Test::Deep)
BuildRequires: perl(lib)
BuildRequires: python3
%ifarch x86_64
BuildRequires: tbb-devel
BuildRequires: simde-devel
BuildRequires: zlib-devel
# * 32-bit CPU architectures: not supported. See Makefile.
# * s390x: not ready to ship it. We take the conservative way.
#   as it is used for the research.
ExcludeArch: %{ix86} %{arm} s390x

# TinyThread++
Provides: bundled(tiny-thread) = 1.1


Bowtie 2 is an ultra fast and memory-efficient tool for aligning sequencing
reads to long reference sequences. It is particularly good at aligning reads
of about 50 up to 100s or 1,000s of characters, and particularly good at
aligning to relatively long (e.g. mammalian) genomes. Bowtie 2 indexes the
genome with an FM Index to keep its memory footprint small: for the human
genome, its memory footprint is typically around 3.2 GB. Bowtie 2 supports
gapped, local, and paired-end alignment modes.


# Remove the directory to avoid building bowtie with bundled libraries.
rm -rf third_party

# Invalid double quote characters are used in the code.
sed -e 's/“/"/g' -e 's/”/"/g' -i processor_support.h

# Fix shebang to use the system interpreters.
sed -i '1s|/usr/bin/env perl|%{_bindir}/perl|' bowtie2
for file in bowtie2-{build,inspect}; do
  sed -i '1s|/usr/bin/env python3|%{__python3}|' "${file}"

# Set build flags.
# Set flags considering the upstream testing cases for each architecture.
%ifnarch x86_64
export NO_TBB=1

# Build with the target "all" rather than "allall"
# to skip the builds of debug and sanitized binaries
# saving the build time.
%make_build all

%make_install PREFIX="%{_prefix}"

mkdir -p %{buildroot}%{_mandir}/man1
# Set version string explicitly to avoid showing the wrong command.
for cmd in bowtie2 bowtie2-{build,inspect}; do
  help2man -N -s 1 -o "%{buildroot}%{_mandir}/man1/${cmd}.1" \
    --version-string="%{version}" \

for cmd in bowtie2 bowtie2-{build,inspect}; do
  ./"${cmd}" --version | grep 'version %{version}'

# Skip tests for the debug and sanitized binaries not shipped.
sed -i '/my $binary_type/ s/"release", "debug", "sanitized"/"release"/' \

# See scripts/test/ for the options.
ASAN_OPTIONS="halt_on_error=1" \
UBSAN_OPTIONS="halt_on_error=1" \
scripts/test/ \
  --bowtie2=./bowtie2 \
  --bowtie2-build=./bowtie2-build \

%license LICENSE

* Mon Jul 27 2020 Fedora Release Engineering <> - 2.4.1-2
- Rebuilt for

* Sat Mar 28 2020 Jun Aruga <> - 2.4.1-1
- Initial package