The package rpms/seqan3.git has added or updated architecture specific content in its
spec file (ExclusiveArch/ExcludeArch or %ifarch/%ifnarch) in commit(s):
https://src.fedoraproject.org/cgit/rpms/seqan3.git/commit/?id=6ec575c148a....
Change:
+ExclusiveArch: %{power64} x86_64 aarch64
Thanks.
Full change:
============
commit 6ec575c148aa61892a52ba17727814d5a24707c2
Author: Antonio T <sagitter(a)fedoraproject.org>
Date: Thu Nov 5 16:06:53 2020 +0100
Initial release
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..92cdf0a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+/seqan3-3.0.2-Source.tar.xz
diff --git a/seqan3-bug2209.patch b/seqan3-bug2209.patch
new file mode 100644
index 0000000..92c6233
--- /dev/null
+++ b/seqan3-bug2209.patch
@@ -0,0 +1,13 @@
+diff --git a/test/performance/search/search_benchmark.cpp
b/test/performance/search/search_benchmark.cpp
+index 0479f4e03..1e45dbce0 100644
+--- a/test/performance/search/search_benchmark.cpp
++++ b/test/performance/search/search_benchmark.cpp
+@@ -64,7 +64,7 @@ std::vector<std::vector<alphabet_t>>
generate_reads(std::vector<alphabet_t> cons
+ std::vector<std::vector<alphabet_t>> reads;
+ std::mt19937_64 gen{seed};
+
+- std::normal_distribution<>
dis_error_count{static_cast<double>(simulated_errors), stddev};
++ std::normal_distribution<>
dis_error_count{static_cast<double>(simulated_errors), stddev > 0 ? stddev :
1.0};
+
+ // mutation distributions
+ std::uniform_real_distribution<double> mutation_type_prob{0.0, 1.0};
diff --git a/seqan3-bug2210.patch b/seqan3-bug2210.patch
new file mode 100644
index 0000000..8d50bc4
--- /dev/null
+++ b/seqan3-bug2210.patch
@@ -0,0 +1,24 @@
+[FIX] gcc-11: remove range/v3/view/concat.hpp
+
+--- a/test/unit/alphabet/aminoacid/aminoacid_translation_test.orig.cpp 2020-10-13
12:33:22.000000000 +0200
++++ b/test/unit/alphabet/aminoacid/aminoacid_translation_test.cpp 2020-10-14
10:48:40.121459832 +0200
+@@ -7,8 +7,6 @@
+
+ #include <gtest/gtest.h>
+
+-#include <range/v3/view/concat.hpp>
+-
+ #include <seqan3/alphabet/nucleotide/dna4.hpp>
+ #include <seqan3/alphabet/nucleotide/dna15.hpp>
+ #include <seqan3/alphabet/aminoacid/aa27.hpp>
+@@ -49,8 +47,8 @@
+ seqan3::dna15 n3{'A'_dna15};
+ seqan3::aa27 c{'L'_aa27};
+
+- auto range_triplet = ranges::views::concat(std::views::single(n1),
std::views::single(n2),
+- std::views::single(n3));
++ std::vector range_triplet{n1, n2, n3};
++
+ #pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+ seqan3::aa27 t2{seqan3::translate_triplet(range_triplet)};
+
diff --git a/seqan3-cppreference.patch b/seqan3-cppreference.patch
new file mode 100644
index 0000000..10e262b
--- /dev/null
+++ b/seqan3-cppreference.patch
@@ -0,0 +1,25 @@
+Author: Michael R. Crusoe <michael.crusoe(a)gmail.com>
+Description: Use the packaged version of cppreference
+--- seqan3.orig/test/documentation/seqan3-doxygen.cmake
++++ seqan3/test/documentation/seqan3-doxygen.cmake
+@@ -34,16 +34,11 @@
+ include(ExternalProject)
+ ExternalProject_Add (
+ download-cppreference-doxygen-web-tag
+- URL
"https://github.com/PeterFeicht/cppreference-doc/releases/download/v20200913/html-book-20200913.tar.xz"
+- URL_HASH SHA256=91c6d7881ca0ffb9780d40723c415b20b2dce0fafc2ea7ab6abaec04a5934f55
+- TLS_VERIFY ON
+- DOWNLOAD_DIR "${PROJECT_BINARY_DIR}"
+- DOWNLOAD_NAME "html-book.tar.xz"
+- DOWNLOAD_NO_EXTRACT YES
++ DOWNLOAD_COMMAND ""
+ BINARY_DIR "${PROJECT_BINARY_DIR}"
+- CONFIGURE_COMMAND /bin/sh -c "xzcat html-book.tar.xz | tar -xf -
cppreference-doxygen-web.tag.xml"
+- BUILD_COMMAND rm "html-book.tar.xz"
+- INSTALL_COMMAND ""
++ CONFIGURE_COMMAND ""
++ BUILD_COMMAND ""
++ INSTALL_COMMAND ln -s /usr/share/devhelp/books/cppreference-doxygen-web.tag.xml
"${PROJECT_BINARY_DIR}/"
+ )
+
+ if (SEQAN3_USER_DOC)
diff --git a/seqan3-unbundle_benchmark.patch b/seqan3-unbundle_benchmark.patch
new file mode 100644
index 0000000..49e9cde
--- /dev/null
+++ b/seqan3-unbundle_benchmark.patch
@@ -0,0 +1,59 @@
+Author: Michael R. Crusoe <michael.crusoe(a)gmail.com>
+Description: Use the Debian package of libbenchmark
+--- seqan3.orig/test/seqan3-test.cmake
++++ seqan3/test/seqan3-test.cmake
+@@ -57,7 +57,7 @@
+ # seqan3::test::performance specifies required flags, includes and libraries
+ # needed for performance test cases in seqan3/test/performance
+ add_library (seqan3_test_performance INTERFACE)
+-target_link_libraries (seqan3_test_performance INTERFACE "seqan3::test"
"gbenchmark")
++target_link_libraries (seqan3_test_performance INTERFACE "seqan3::test"
"benchmark")
+
+ if (SEQAN3_BENCHMARK_ALIGN_LOOPS)
+ target_compile_options (seqan3_test_performance INTERFACE
"-falign-loops=32")
+--- a/test/cmake/seqan3_require_benchmark.orig.cmake 2020-08-06 14:00:23.000000000 +0200
++++ b/test/cmake/seqan3_require_benchmark.cmake 2020-08-06 14:40:00.200832547 +0200
+@@ -9,42 +9,7 @@
+ macro (seqan3_require_benchmark)
+ enable_testing ()
+
+- set (gbenchmark_project_args ${SEQAN3_EXTERNAL_PROJECT_CMAKE_ARGS})
+- list (APPEND gbenchmark_project_args "-DBENCHMARK_ENABLE_TESTING=false")
+- # google-benchmarks suggest to use LTO (link-time optimisation), but we don't
really need that because we are a
+- # header only library. This option might be still interesting for external libraries
benchmarks.
+- # see
https://github.com/google/benchmark#debug-vs-release
+- # list (APPEND gbenchmark_project_args "-DBENCHMARK_ENABLE_LTO=true")
+-
+- # force that libraries are installed to `lib/`, because GNUInstallDirs might install
it into `lib64/`
+- list (APPEND gbenchmark_project_args
"-DCMAKE_INSTALL_LIBDIR=${PROJECT_BINARY_DIR}/lib/")
+-
+- set (gbenchmark_path
"${PROJECT_BINARY_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}benchmark${CMAKE_STATIC_LIBRARY_SUFFIX}")
+-
+- include (ExternalProject)
+- ExternalProject_Add (
+- gbenchmark_project
+- PREFIX gbenchmark_project
+- GIT_REPOSITORY "https://github.com/google/benchmark.git"
+- GIT_TAG "v1.5.0"
+- SOURCE_DIR "${SEQAN3_BENCHMARK_CLONE_DIR}"
+- CMAKE_ARGS "${gbenchmark_project_args}"
+- BUILD_BYPRODUCTS "${gbenchmark_path}"
+- UPDATE_DISCONNECTED ${SEQAN3_TEST_BUILD_OFFLINE}
+- )
+- unset (gbenchmark_project_args)
+-
+- add_library (gbenchmark STATIC IMPORTED)
+- add_dependencies (gbenchmark gbenchmark_project)
+- set_target_properties (gbenchmark PROPERTIES IMPORTED_LOCATION
"${gbenchmark_path}")
+- set_property (TARGET gbenchmark APPEND PROPERTY INTERFACE_LINK_LIBRARIES
"pthread")
+-
+- # NOTE: google benchmarks needs Shlwapi (Shell Lightweight Utility Functions) on
windows
+- # see
https://msdn.microsoft.com/en-us/library/windows/desktop/bb759844(v=vs.85...
+- # see
https://github.com/google/benchmark/blob/c614dfc0d4eadcd19b188ff9c7e226c1...
+- if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
+- target_link_libraries (gbenchmark INTERFACE "Shlwapi")
+- endif()
++find_package(benchmark REQUIRED)
+
+ unset (gbenchmark_path)
+ endmacro ()
diff --git a/seqan3-unbundle_gtest.patch b/seqan3-unbundle_gtest.patch
new file mode 100644
index 0000000..a895b47
--- /dev/null
+++ b/seqan3-unbundle_gtest.patch
@@ -0,0 +1,81 @@
+--- seqan3.orig/test/seqan3-test.cmake
++++ seqan3/test/seqan3-test.cmake
+@@ -34,13 +34,13 @@
+ find_path (SEQAN3_TEST_CMAKE_MODULE_DIR NAMES seqan3_test_component.cmake HINTS
"${CMAKE_CURRENT_LIST_DIR}/cmake/")
+ list(APPEND CMAKE_MODULE_PATH "${SEQAN3_TEST_CMAKE_MODULE_DIR}")
+
+-set (SEQAN3_BENCHMARK_CLONE_DIR "${PROJECT_BINARY_DIR}/vendor/benchmark")
+-set (SEQAN3_TEST_CLONE_DIR "${PROJECT_BINARY_DIR}/vendor/googletest")
++set (SEQAN3_BENCHMARK_CLONE_DIR "${CMAKE_INSTALL_PREFIX}")
++set (SEQAN3_TEST_CLONE_DIR "${CMAKE_INSTALL_PREFIX}")
+
+ # needed for add_library (seqan3::test::* INTERFACE IMPORTED)
+ # see cmake bug
https://gitlab.kitware.com/cmake/cmake/issues/15052
+-file(MAKE_DIRECTORY ${SEQAN3_BENCHMARK_CLONE_DIR}/include/)
+-file(MAKE_DIRECTORY ${SEQAN3_TEST_CLONE_DIR}/googletest/include/)
++file(MAKE_DIRECTORY ${SEQAN3_BENCHMARK_CLONE_DIR}/include/benchmark/)
++file(MAKE_DIRECTORY ${SEQAN3_TEST_CLONE_DIR}/include/gtest/)
+
+ # ----------------------------------------------------------------------------
+ # Interface targets for the different test modules in seqan3.
+@@ -70,8 +70,8 @@
+ # needed for unit test cases in seqan3/test/unit
+ add_library (seqan3_test_unit INTERFACE)
+ target_link_libraries (seqan3_test_unit INTERFACE "seqan3::test"
"gtest_main" "gtest")
+-target_include_directories (seqan3_test_unit INTERFACE
"${SEQAN3_TEST_CLONE_DIR}/googletest/include/")
++target_include_directories (seqan3_test_unit INTERFACE
"${SEQAN3_TEST_CLONE_DIR}/include/gtest/")
+ add_library (seqan3::test::unit ALIAS seqan3_test_unit)
+
+ # seqan3::test::coverage specifies required flags, includes and libraries
+ # needed for coverage test cases in seqan3/test/coverage
+--- a/test/cmake/seqan3_require_test.orig.cmake 2020-08-06 14:00:23.000000000 +0200
++++ b/test/cmake/seqan3_require_test.cmake 2020-08-06 14:35:10.167198023 +0200
+@@ -9,47 +9,7 @@
+ macro (seqan3_require_test)
+ enable_testing ()
+
+- set (gtest_project_args ${SEQAN3_EXTERNAL_PROJECT_CMAKE_ARGS})
+- list (APPEND gtest_project_args "-DBUILD_GMOCK=0")
+-
+- # force that libraries are installed to `lib/`, because GNUInstallDirs might install
it into `lib64/`
+- list (APPEND gtest_project_args
"-DCMAKE_INSTALL_LIBDIR=${PROJECT_BINARY_DIR}/lib/")
+-
+- # google sets CMAKE_DEBUG_POSTFIX = "d"
+- set (gtest_main_path
"${PROJECT_BINARY_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gtest_main${CMAKE_STATIC_LIBRARY_SUFFIX}")
+- if (CMAKE_BUILD_TYPE STREQUAL "Debug")
+- set (gtest_main_path
"${PROJECT_BINARY_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gtest_maind${CMAKE_STATIC_LIBRARY_SUFFIX}")
+- endif ()
+-
+- set (gtest_path
"${PROJECT_BINARY_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gtest${CMAKE_STATIC_LIBRARY_SUFFIX}")
+- if (CMAKE_BUILD_TYPE STREQUAL "Debug")
+- set (gtest_path
"${PROJECT_BINARY_DIR}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}gtestd${CMAKE_STATIC_LIBRARY_SUFFIX}")
+- endif ()
+-
+- include (ExternalProject)
+- ExternalProject_Add (
+- gtest_project
+- PREFIX gtest_project
+- GIT_REPOSITORY "https://github.com/google/googletest.git"
+- # we currently have warnings that were introduced in
+- # 03867b5389516a0f185af52672cf5472fa0c159c, which are still available
+- # in "release-1.8.1", see
https://github.com/google/googletest/issues/1419
+- GIT_TAG "release-1.10.0"
+- SOURCE_DIR "${SEQAN3_TEST_CLONE_DIR}"
+- CMAKE_ARGS "${gtest_project_args}"
+- BUILD_BYPRODUCTS "${gtest_main_path}" "${gtest_path}"
+- UPDATE_DISCONNECTED ${SEQAN3_TEST_BUILD_OFFLINE}
+- )
+- unset (gtest_project_args)
+-
+- add_library (gtest_main STATIC IMPORTED)
+- add_dependencies (gtest_main gtest_project)
+- set_target_properties (gtest_main PROPERTIES IMPORTED_LOCATION
"${gtest_main_path}")
+-
+- add_library (gtest STATIC IMPORTED)
+- add_dependencies (gtest gtest_main)
+- set_target_properties (gtest PROPERTIES IMPORTED_LOCATION
"${gtest_path}")
+- set_property (TARGET gtest APPEND PROPERTY INTERFACE_LINK_LIBRARIES
"pthread")
++find_package(GTest REQUIRED)
+
+ unset(gtest_main_path)
+ unset(gtest_path)
diff --git a/seqan3.spec b/seqan3.spec
new file mode 100644
index 0000000..f4cc94f
--- /dev/null
+++ b/seqan3.spec
@@ -0,0 +1,229 @@
+%global debug_package %{nil}
+%global middle_release 0
+
+# Redefine vpath builddir
+# Default in Fedora 33+ is %%{_target_platform}
+%global _vpath_builddir .
+
+# test/unit/alignment/matrix/detail/two_dimensional_matrix_test.cpp:420:1:
+# internal compiler error: tree code 'typename_type' is not supported in LTO
streams
+#
https://github.com/seqan/seqan3/issues/2013
+%define _lto_cflags %{nil}
+
+%bcond_without check
+%bcond_without test_api
+%bcond_without test_header
+%bcond_without benchmark
+%bcond_without doc
+
+# SeqAn3 aims to support any 64-bit architecture running Linux/POSIX;
+# currently big-endian CPU architectures like s390x are less supported.
+ExclusiveArch: %{power64} x86_64 aarch64
+
+%if 0%{?middle_release}
+%global commit bf04354bab903dc7f8c12f3bb478c02cd5f2c553
+%global date 20200806git
+%global shortcommit %(c=%{commit}; echo ${c:0:7})
+%else
+%global commit %{nil}
+%global date %{nil}
+%global shortcommit %{nil}
+%endif
+
+Name: seqan3
+Summary: The modern C++ library for sequence analysis
+Version: 3.0.2
+Release: 5%{date}%{shortcommit}%{?dist}
+License: BSD
+URL:
http://www.seqan.de/
+Source0:
https://github.com/seqan/seqan3/releases/download/%{version}/seqan3-%{ver...
+
+BuildRequires: gcc, gcc-c++
+BuildRequires: cmake >= 3.4
+BuildRequires: cereal-devel >= 1.2.3
+BuildRequires: zlib-devel >= 1.2
+BuildRequires: bzip2-devel >= 1.0
+BuildRequires: range-v3-devel >= 0.11.0
+BuildRequires: coin-or-lemon-devel
+%if %{with check}
+BuildRequires: google-benchmark-devel
+BuildRequires: gtest-devel >= 1.10.0
+%endif
+%if %{with doc}
+BuildRequires: texlive-newunicodechar
+BuildRequires: doxygen
+%endif
+
+# Patches for unbundling libraries and fix some errors
+Patch0: %{name}-unbundle_benchmark.patch
+Patch1: %{name}-cppreference.patch
+Patch2: %{name}-unbundle_gtest.patch
+
+# Upstream patches
+
+#
https://github.com/seqan/seqan3/issues/2209
+Patch3: %{name}-bug2209.patch
+
+#
https://github.com/seqan/seqan3/issues/2210
+Patch4: %{name}-bug2210.patch
+
+%description
+SeqAn3 is the new version of the popular SeqAn template
+library for the analysis of biological sequences.
+It enables the rapid development of high-performance
+solutions by providing generic algorithms and
+data structures for:
+
+ - sequence representation and transformation
+ - full-text indexing and efficient search
+ - sequence alignment
+ - input/output of common file formats
+
+%package devel
+Summary: SeqAn3 header only files
+Requires: cmake%{?_isa} >= 3.4
+Requires: cereal-devel%{?_isa} >= 1.2.3
+Requires: zlib-devel%{?_isa} >= 1.2
+Requires: bzip2-devel%{?_isa} >= 1.0
+Requires: range-v3-devel%{?_isa} >= 0.11.0
+Provides: bundled(sdsl-lite-devel) = 3.0.0
+Provides: bundled(sdsl-devel) = 3.0.0
+Provides: bundled(SDSL-devel) = 3.0.0
+
+%description devel
+C++ headers files of SeqAn3, including CMake configuration files.
+
+%package doc
+Summary: SeqAn3 documentation
+BuildArch: noarch
+%description doc
+SeqAn3 documentation.
+
+%prep
+%autosetup -n seqan3-%{version}-Source -p1
+
+# Unbundle libraries already on Fedora
+rm -rf submodules/cereal
+rm -rf submodules/range-v3
+
+# SDSL 3.0 is a new SDSL pre-release, under development.
+# See
https://github.com/xxsds/sdsl-lite
+cp -p submodules/sdsl-lite/LICENSE submodules/sdsl-lite/sdsl-LICENSE
+
+# Fix file permissions
+find . -type f -name "*.hpp" -exec chmod 0644 '{}' \;
+
+%build
+%if %{with check}
+%if %{with test_api}
+mkdir -p build
+# Workaround for upstream bug#1993
+export CXXFLAGS="%{build_cxxflags} -std=c++2a -fconcepts -lstdc++fs"
+%cmake -S test/unit -B build -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
+ -DSEQAN3_CEREAL:BOOL=ON \
+ -DSEQAN3_LEMON:BOOL=ON \
+ -DSEQAN3_TEST_BUILD_OFFLINE:BOOL=ON
+%make_build -C build
+%endif
+%if %{with test_header}
+mkdir -p build-header
+export CXXFLAGS="%{build_cxxflags} -std=c++2a -fconcepts -lstdc++fs"
+%cmake -S test/header -B build-header -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
+ -DSEQAN3_CEREAL:BOOL=ON \
+ -DSEQAN3_LEMON:BOOL=ON \
+ -DSEQAN3_TEST_BUILD_OFFLINE:BOOL=ON
+%make_build -C build-header
+%endif
+%if %{with benchmark}
+mkdir -p build-performance
+export CXXFLAGS="%{build_cxxflags} -std=c++2a -fconcepts -lstdc++fs"
+%cmake -S test/performance -B build-performance -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
+ -DSEQAN3_CEREAL:BOOL=ON \
+ -DSEQAN3_LEMON:BOOL=ON \
+ -DSEQAN3_TEST_BUILD_OFFLINE:BOOL=ON
+%make_build -C build-performance
+%endif
+%endif
+%if %{with doc}
+mkdir -p build-doc
+export CXXFLAGS="%{build_cxxflags} -std=c++2a -fconcepts -lstdc++fs"
+%cmake -S test/documentation -B build-doc -DCMAKE_BUILD_TYPE=Release
+make -j1 -C build-doc
+%endif
+
+%install
+mkdir -p %{buildroot}%{_libdir}/cmake/%{name}
+cp -a include %{buildroot}%{_prefix}/
+
+rm -f submodules/sdsl-lite/include/sdsl/.gitignore
+cp -a submodules/sdsl-lite/include %{buildroot}%{_prefix}/
+
+install -pm 644 build_system/*.cmake %{buildroot}%{_libdir}/cmake/%{name}/
+
+%if %{with check}
+%check
+%if %{with test_api}
+# Tests the API of the library
+pushd build
+%ctest
+popd
+%endif
+%if %{with test_header}
+# Tests that every header includes all required headers and detects linkage issues
+pushd build-header
+%ctest
+popd
+%endif
+%if %{with benchmark}
+# Microbenchmarks
+pushd build-performance
+%ctest
+popd
+%endif
+%endif
+
+%files devel
+%license LICENSE.md submodules/sdsl-lite/sdsl-LICENSE
+%doc README.md
+%{_includedir}/%{name}/
+%{_includedir}/sdsl/
+%{_libdir}/cmake/%{name}/
+
+%if %{with doc}
+%files doc
+%doc build-doc/doc_usr/html
+%license LICENSE.md
+%doc README.md
+%endif
+
+%changelog
+* Tue Nov 03 2020 Antonio Trande <sagitter(a)fedoraproject.org> - 3.0.2-5
+- Bundle sdsl header files
+
+* Sat Oct 17 2020 Antonio Trande <sagitter(a)fedoraproject.org> - 3.0.2-4
+- Remove old License file from bundled libraries
+- Redefine vpath builddir
+
+* Fri Oct 16 2020 Antonio Trande <sagitter(a)fedoraproject.org> - 3.0.2-3
+- Fix Requires packages
+
+* Wed Oct 14 2020 Antonio Trande <sagitter(a)fedoraproject.org> - 3.0.2-2
+- Use -std=c++2a flag
+- Patched for upstream bugs #2209 #2210
+
+* Tue Oct 13 2020 Antonio Trande <sagitter(a)fedoraproject.org> - 3.0.2-1
+- Release 3.0.2
+
+* Fri Aug 07 2020 Antonio Trande <sagitter(a)fedoraproject.org> -
3.0.2-0.2.20200806gitbf04354
+- Pre-release 3.0.2 with bundled range-v3
+
+* Thu Aug 06 2020 Antonio Trande <sagitter(a)fedoraproject.org> -
3.0.2-0.1.20200806gitbf04354
+- Pre-release 3.0.2
+
+* Thu Mar 05 2020 Antonio Trande <sagitter(a)fedoraproject.org> - 3.0.1-1
+- Execute header/performance tests
+- Build docs
+- First package
diff --git a/sources b/sources
new file mode 100644
index 0000000..4356a41
--- /dev/null
+++ b/sources
@@ -0,0 +1 @@
+SHA512 (seqan3-3.0.2-Source.tar.xz) =
f233a08dcd4478bd12b2d75ed4d9329ae668232370710bd00b0afd5856416c170e642feb7e3a34abce3bb1557a4e9b386cc2577f6b3457fbbbedf758ce227f36