5a5cc22
Name: bowtie2
5a5cc22
Version: 2.4.1
ac330ba
Release: 3%{?dist}
5a5cc22
# Use the word "ultra fast" rather than "ultrafast".
5a5cc22
# https://github.com/BenLangmead/bowtie2/issues/291
5a5cc22
Summary: An ultra fast and memory-efficient read aligner
5a5cc22
# * bowtie2: GPLv3+
5a5cc22
# * TinyThread++: zlib, for files: tinythread.{h,cpp} fast_mutex.h
5a5cc22
#   https://tinythreadpp.bitsnbites.eu/
5a5cc22
#   https://gitorious.org/tinythread/tinythreadpp
5a5cc22
License: GPLv3+ and zlib
5a5cc22
URL: http://bowtie-bio.sourceforge.net/bowtie2/index.shtml
5a5cc22
Source0: https://github.com/BenLangmead/%{name}/archive/v%{version}.tar.gz
5a5cc22
# Fix to build with given CXXFLAGS.
5a5cc22
# https://github.com/BenLangmead/bowtie2/pull/296
5a5cc22
Patch0: bowtie2-makefile-cxxflags.patch
5a5cc22
BuildRequires: gcc-c++
5a5cc22
BuildRequires: help2man
5a5cc22
BuildRequires: libasan
5a5cc22
BuildRequires: libubsan
38629fb
BuildRequires: make
5a5cc22
BuildRequires: perl-generators
5a5cc22
BuildRequires: perl-interpreter
5a5cc22
BuildRequires: perl(Clone)
5a5cc22
BuildRequires: perl(File::Which)
5a5cc22
BuildRequires: perl(FindBin)
5a5cc22
BuildRequires: perl(Sys::Hostname)
5a5cc22
BuildRequires: perl(Test::Deep)
5a5cc22
BuildRequires: perl(lib)
5a5cc22
BuildRequires: python3
5a5cc22
%ifarch x86_64
5a5cc22
BuildRequires: tbb-devel
5a5cc22
%else
5a5cc22
BuildRequires: simde-devel
5a5cc22
%endif
5a5cc22
BuildRequires: zlib-devel
5a5cc22
# * 32-bit CPU architectures: not supported. See Makefile.
5a5cc22
# * s390x: not ready to ship it. We take the conservative way.
5a5cc22
#   as it is used for the research.
5a5cc22
#   https://github.com/BenLangmead/bowtie2/issues/286
5a5cc22
ExcludeArch: %{ix86} %{arm} s390x
5a5cc22
5a5cc22
# TinyThread++
5a5cc22
Provides: bundled(tiny-thread) = 1.1
5a5cc22
5a5cc22
%description
5a5cc22
5a5cc22
Bowtie 2 is an ultra fast and memory-efficient tool for aligning sequencing
5a5cc22
reads to long reference sequences. It is particularly good at aligning reads
5a5cc22
of about 50 up to 100s or 1,000s of characters, and particularly good at
5a5cc22
aligning to relatively long (e.g. mammalian) genomes. Bowtie 2 indexes the
5a5cc22
genome with an FM Index to keep its memory footprint small: for the human
5a5cc22
genome, its memory footprint is typically around 3.2 GB. Bowtie 2 supports
5a5cc22
gapped, local, and paired-end alignment modes.
5a5cc22
5a5cc22
%prep
5a5cc22
%autosetup
5a5cc22
5a5cc22
# Remove the directory to avoid building bowtie with bundled libraries.
5a5cc22
rm -rf third_party
5a5cc22
5a5cc22
# Invalid double quote characters are used in the code.
5a5cc22
# https://github.com/BenLangmead/bowtie2/issues/278
5a5cc22
sed -e 's/“/"/g' -e 's/”/"/g' -i processor_support.h
5a5cc22
5a5cc22
# Fix shebang to use the system interpreters.
5a5cc22
sed -i '1s|/usr/bin/env perl|%{_bindir}/perl|' bowtie2
5a5cc22
for file in bowtie2-{build,inspect}; do
5a5cc22
  sed -i '1s|/usr/bin/env python3|%{__python3}|' "${file}"
5a5cc22
done
5a5cc22
5a5cc22
%build
5a5cc22
# Set build flags.
5a5cc22
# https://src.fedoraproject.org/rpms/redhat-rpm-config/blob/master/f/buildflags.md
5a5cc22
%set_build_flags
5a5cc22
# Set flags considering the upstream testing cases for each architecture.
5a5cc22
# https://github.com/BenLangmead/bowtie2/blob/master/.travis.yml
5a5cc22
%ifnarch x86_64
5a5cc22
export POPCNT_CAPABILITY=0
5a5cc22
export NO_TBB=1
5a5cc22
%endif
5a5cc22
5a5cc22
# Build with the target "all" rather than "allall"
5a5cc22
# to skip the builds of debug and sanitized binaries
5a5cc22
# saving the build time.
5a5cc22
%make_build all
5a5cc22
5a5cc22
%install
5a5cc22
%make_install PREFIX="%{_prefix}"
5a5cc22
5a5cc22
mkdir -p %{buildroot}%{_mandir}/man1
5a5cc22
# Set version string explicitly to avoid showing the wrong command.
5a5cc22
# https://github.com/BenLangmead/bowtie2/issues/294
5a5cc22
for cmd in bowtie2 bowtie2-{build,inspect}; do
5a5cc22
  help2man -N -s 1 -o "%{buildroot}%{_mandir}/man1/${cmd}.1" \
5a5cc22
    --version-string="%{version}" \
5a5cc22
    "%{buildroot}%{_bindir}/${cmd}"
5a5cc22
done
5a5cc22
5a5cc22
%check
5a5cc22
for cmd in bowtie2 bowtie2-{build,inspect}; do
5a5cc22
  ./"${cmd}" --version | grep 'version %{version}'
5a5cc22
done
5a5cc22
5a5cc22
# Skip tests for the debug and sanitized binaries not shipped.
5a5cc22
sed -i '/my $binary_type/ s/"release", "debug", "sanitized"/"release"/' \
5a5cc22
  scripts/test/simple_tests.pl
5a5cc22
5a5cc22
# See scripts/test/simple_tests.sh for the options.
5a5cc22
ASAN_OPTIONS="halt_on_error=1" \
5a5cc22
UBSAN_OPTIONS="halt_on_error=1" \
5a5cc22
scripts/test/simple_tests.pl \
5a5cc22
  --bowtie2=./bowtie2 \
5a5cc22
  --bowtie2-build=./bowtie2-build \
5a5cc22
  --compressed
5a5cc22
5a5cc22
%files
5a5cc22
%doc AUTHORS MANUAL MANUAL.markdown NEWS TUTORIAL
5a5cc22
%license LICENSE
5a5cc22
%{_bindir}/bowtie2
5a5cc22
%{_bindir}/bowtie2-align-l
5a5cc22
%{_bindir}/bowtie2-align-s
5a5cc22
%{_bindir}/bowtie2-build
5a5cc22
%{_bindir}/bowtie2-build-l
5a5cc22
%{_bindir}/bowtie2-build-s
5a5cc22
%{_bindir}/bowtie2-inspect
5a5cc22
%{_bindir}/bowtie2-inspect-l
5a5cc22
%{_bindir}/bowtie2-inspect-s
5a5cc22
%{_mandir}/man1/bowtie2.1*
5a5cc22
%{_mandir}/man1/bowtie2-build.1*
5a5cc22
%{_mandir}/man1/bowtie2-inspect.1*
5a5cc22
5a5cc22
%changelog
ac330ba
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2.4.1-3
ac330ba
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
ac330ba
1353420
* Mon Jul 27 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2.4.1-2
1353420
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
1353420
5a5cc22
* Sat Mar 28 2020 Jun Aruga <jaruga@redhat.com> - 2.4.1-1
5a5cc22
- Initial package