Compare commits
No commits in common. "rawhide" and "f34" have entirely different histories.
9 changed files with 325 additions and 206 deletions
14
.gitignore
vendored
14
.gitignore
vendored
|
|
@ -1,17 +1,3 @@
|
|||
/seqan3-3.0.2-Source.tar.xz
|
||||
/seqan3-3.0.3-rc.1.tar.gz
|
||||
/seqan3-3.0.3.tar.gz
|
||||
/seqan3-3.1.0-rc1.tar.gz
|
||||
/seqan3-3.1.0.tar.gz
|
||||
/seqan3-3.2.0-rc1.tar.gz
|
||||
/seqan3-3.2.0.tar.gz
|
||||
/seqan3-404affbf6ee31aeda30ed9cc321b3700a50e5eae.tar.gz
|
||||
/seqan3-174255eea53d4847e7ce8cb0dc29415f177dc54d.tar.gz
|
||||
/seqan3-8c604d98e0d291bc3909ecbad78ca778b3ad5a5c.tar.gz
|
||||
/seqan3-3.3.0-rc.1.tar.gz
|
||||
/seqan3-3.3.0-rc.2.tar.gz
|
||||
/seqan3-3.4.0-rc.1.tar.gz
|
||||
/seqan3-3.4.0-rc.2.tar.gz
|
||||
/seqan3-3.4.0-rc.3.tar.gz
|
||||
/seqan3-3.4.0.tar.gz
|
||||
/seqan3-3.4.2.tar.gz
|
||||
|
|
|
|||
25
README.md
25
README.md
|
|
@ -1,24 +1,3 @@
|
|||
# SeqAn3 -- the modern C++ library for sequence analysis
|
||||
# seqan3
|
||||
|
||||
|
||||
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
|
||||
|
||||
By leveraging *Modern C++* it provides unprecedented ease-of-use without sacrificing performance.
|
||||
|
||||
Please see the [online documentation](https://docs.seqan.de/seqan/3.2.0/) for more details.
|
||||
|
||||
## Quick facts
|
||||
|
||||
* C++ header-only library: easy to integrate with your app & easy to distribute
|
||||
* liberal open source license: allows integration with any app or library, requires only attribution
|
||||
* very high code quality standards: >97% unit test coverage, performance regression tests, ...
|
||||
* extensive API documentation & tutorials: more lines of documentation than lines of code
|
||||
* aims to support any 64-bit architecture running Linux/POSIX; currently big-endian CPU architectures
|
||||
like s390x are less supported
|
||||
The seqan3 package
|
||||
|
|
|
|||
|
|
@ -1,80 +0,0 @@
|
|||
--- a/cmake/seqan3-config.orig.cmake 2024-12-13 18:42:15.000000000 +0100
|
||||
+++ b/cmake/seqan3-config.cmake 2025-01-19 21:13:45.692446573 +0100
|
||||
@@ -113,11 +113,7 @@
|
||||
# ----------------------------------------------------------------------------
|
||||
|
||||
# This will be true for git clones and source packages, but not for installed packages.
|
||||
-if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/CPM.cmake")
|
||||
- set (SEQAN3_HAS_CPM TRUE)
|
||||
-else ()
|
||||
- set (SEQAN3_HAS_CPM FALSE)
|
||||
-endif ()
|
||||
+set (SEQAN3_HAS_CPM FALSE)
|
||||
|
||||
if (SEQAN3_HAS_CPM)
|
||||
set (CPM_INDENT " CMake Package Manager CPM: ")
|
||||
--- a/test/seqan3-test.orig.cmake 2024-12-13 18:42:15.000000000 +0100
|
||||
+++ b/test/seqan3-test.cmake 2025-01-19 21:18:08.209434385 +0100
|
||||
@@ -27,10 +27,6 @@
|
||||
"${CMAKE_CURRENT_LIST_DIR}/../cmake/"
|
||||
CACHE STRING "Path to directory containing CPM.cmake.")
|
||||
|
||||
-set (CPM_INDENT "CMake Package Manager CPM: ")
|
||||
-include ("${SEQAN3_TEST_CPM_DIR}/CPM.cmake")
|
||||
-CPMUsePackageLock ("${SEQAN3_TEST_CPM_DIR}/package-lock.cmake")
|
||||
-
|
||||
include (CheckCXXCompilerFlag)
|
||||
include (CheckCXXSourceCompiles)
|
||||
include (CMakeDependentOption)
|
||||
@@ -51,7 +47,6 @@
|
||||
cmake_dependent_option (SEQAN3_WITH_SEQAN2_CI "Build tests with SeqAn2." ON "DEFINED ENV{CI}" OFF)
|
||||
|
||||
if (SEQAN3_WITH_SEQAN2 OR SEQAN3_WITH_SEQAN2_CI)
|
||||
- CPMGetPackage (seqan)
|
||||
find_path (SEQAN3_SEQAN2_INCLUDE_DIR
|
||||
NAMES seqan/version.h
|
||||
HINTS "${seqan_SOURCE_DIR}/include")
|
||||
--- a/test/cmake/seqan3_require_ccache.orig.cmake 2024-12-13 18:42:15.000000000 +0100
|
||||
+++ b/test/cmake/seqan3_require_ccache.cmake 2025-01-19 21:19:53.256828886 +0100
|
||||
@@ -4,4 +4,4 @@
|
||||
|
||||
# This file's only purpose is to be replaced with the content of the use_ccache CMakeLists.txt file
|
||||
# when creating the source package.
|
||||
-CPMGetPackage (use_ccache)
|
||||
+# CPMGetPackage (use_ccache)
|
||||
--- a/test/unit/CMakeLists.orig.txt 2024-12-13 18:42:15.000000000 +0100
|
||||
+++ b/test/unit/CMakeLists.txt 2025-01-19 21:27:10.229117104 +0100
|
||||
@@ -8,7 +8,7 @@
|
||||
include (../seqan3-test.cmake)
|
||||
include (GoogleTest OPTIONAL)
|
||||
|
||||
-CPMGetPackage (googletest)
|
||||
+find_package(GTest REQUIRED)
|
||||
|
||||
include (diagnostics/list_missing_unit_tests)
|
||||
include (diagnostics/list_unused_unit_tests)
|
||||
|
||||
--- a/test/header/CMakeLists.orig.txt 2024-12-13 18:42:15.000000000 +0100
|
||||
+++ b/test/header/CMakeLists.txt 2025-01-19 22:08:37.815744299 +0100
|
||||
@@ -7,8 +7,8 @@
|
||||
|
||||
include (../seqan3-test.cmake)
|
||||
|
||||
-CPMGetPackage (googletest)
|
||||
-CPMGetPackage (benchmark)
|
||||
+find_package(GTest REQUIRED)
|
||||
+find_package(benchmark REQUIRED)
|
||||
|
||||
# We compile each header twice in separate compilation units, where the second compilation omits the header guard (check
|
||||
# for cyclic includes). Each alone is sufficient to test that the header is functional, but both are needed to check for
|
||||
--- a/test/performance/CMakeLists.orig.txt 2024-12-13 18:42:15.000000000 +0100
|
||||
+++ b/test/performance/CMakeLists.txt 2025-01-19 22:10:44.305669084 +0100
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
include (../seqan3-test.cmake)
|
||||
|
||||
-CPMGetPackage (benchmark)
|
||||
+find_package(benchmark REQUIRED)
|
||||
|
||||
set (SEQAN3_BENCHMARK_MIN_TIME
|
||||
"1s"
|
||||
25
seqan3-cppreference.patch
Normal file
25
seqan3-cppreference.patch
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
Author: Michael R. Crusoe <michael.crusoe@gmail.com>
|
||||
Description: Use the packaged version of cppreference
|
||||
--- seqan3.orig/test/documentation/seqan3-doxygen.cmake
|
||||
+++ seqan3/test/documentation/seqan3-doxygen.cmake
|
||||
@@ -43,16 +43,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}/"
|
||||
)
|
||||
|
||||
### TEST HELPER
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
--- a/test/unit/io/detail/misc_output_test.orig.cpp 2024-12-13 18:42:15.000000000 +0100
|
||||
+++ b/test/unit/io/detail/misc_output_test.cpp 2025-01-20 21:58:35.651617085 +0100
|
||||
@@ -6,6 +6,7 @@
|
||||
|
||||
#include <fstream>
|
||||
#include <vector>
|
||||
+#include <functional>
|
||||
|
||||
#include <seqan3/core/debug_stream.hpp>
|
||||
#include <seqan3/io/detail/misc_input.hpp>
|
||||
--- a/include/seqan3/io/detail/misc_input.orig.hpp 2024-12-13 18:42:15.000000000 +0100
|
||||
+++ b/include/seqan3/io/detail/misc_input.hpp 2025-01-20 22:01:28.812235658 +0100
|
||||
@@ -17,6 +17,7 @@
|
||||
#include <span>
|
||||
#include <string>
|
||||
#include <tuple>
|
||||
+#include <functional>
|
||||
|
||||
#include <seqan3/contrib/stream/bgzf.hpp>
|
||||
#include <seqan3/contrib/stream/bgzf_istream.hpp>
|
||||
92
seqan3-unbundle_benchmark.patch
Normal file
92
seqan3-unbundle_benchmark.patch
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
Author: Michael R. Crusoe <michael.crusoe@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 2021-03-12 15:32:16.217895000 +0100
|
||||
+++ b/test/cmake/seqan3_require_benchmark.cmake 2021-03-12 15:33:34.694342382 +0100
|
||||
@@ -5,75 +5,7 @@
|
||||
# shipped with this file and also available at: https://github.com/seqan/seqan3/blob/master/LICENSE.md
|
||||
# -----------------------------------------------------------------------------------------------------
|
||||
|
||||
-# Exposes the google-benchmark target `gbenchmark`.
|
||||
-macro (seqan3_require_benchmark_old gbenchmark_git_tag)
|
||||
- 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 "${gbenchmark_git_tag}"
|
||||
- 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).aspx
|
||||
- # see https://github.com/google/benchmark/blob/c614dfc0d4eadcd19b188ff9c7e226c138f894a1/README.md#platform-specific-libraries
|
||||
- if(${CMAKE_SYSTEM_NAME} MATCHES "Windows")
|
||||
- target_link_libraries (gbenchmark INTERFACE "Shlwapi")
|
||||
- endif()
|
||||
-
|
||||
- unset (gbenchmark_path)
|
||||
-endmacro ()
|
||||
-
|
||||
macro (seqan3_require_benchmark)
|
||||
enable_testing ()
|
||||
-
|
||||
- set (gbenchmark_git_tag "v1.5.0")
|
||||
-
|
||||
- if (NOT CMAKE_VERSION VERSION_LESS 3.14)
|
||||
- # NOTE: setting the standard prevents an ICE involving passing -fconcepts through CMAKE_CXX_FLAGS
|
||||
- set (CMAKE_CXX_STANDARD 17)
|
||||
- message (STATUS "Fetch google benchmark:")
|
||||
-
|
||||
- include (FetchContent)
|
||||
- FetchContent_Declare (
|
||||
- gbenchmark_fetch_content
|
||||
- GIT_REPOSITORY "https://github.com/google/benchmark.git"
|
||||
- GIT_TAG "${gbenchmark_git_tag}"
|
||||
- )
|
||||
- option (BENCHMARK_ENABLE_TESTING "" OFF)
|
||||
- FetchContent_MakeAvailable(gbenchmark_fetch_content)
|
||||
-
|
||||
- # NOTE: google benchmark's CMakeLists.txt already defines Shlwapi
|
||||
- add_library (gbenchmark ALIAS benchmark_main)
|
||||
- unset (CMAKE_CXX_STANDARD)
|
||||
- else ()
|
||||
- message (STATUS "Use google benchmark as external project:")
|
||||
-
|
||||
- seqan3_require_benchmark_old ("${gtest_git_tag}")
|
||||
- endif ()
|
||||
-
|
||||
- add_custom_target (gbenchmark_build DEPENDS gbenchmark)
|
||||
+ find_package(benchmark REQUIRED)
|
||||
endmacro ()
|
||||
106
seqan3-unbundle_gtest.patch
Normal file
106
seqan3-unbundle_gtest.patch
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
--- 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
|
||||
@@ -5,72 +5,8 @@
|
||||
# shipped with this file and also available at: https://github.com/seqan/seqan3/blob/master/LICENSE.md
|
||||
# -----------------------------------------------------------------------------------------------------
|
||||
|
||||
-# Exposes the google-test targets `gtest` and `gtest_main`.
|
||||
-macro (seqan3_require_test_old gtest_git_tag)
|
||||
- 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"
|
||||
- GIT_TAG "${gtest_git_tag}"
|
||||
- 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")
|
||||
-
|
||||
- unset(gtest_main_path)
|
||||
- unset(gtest_path)
|
||||
-endmacro ()
|
||||
-
|
||||
macro (seqan3_require_test)
|
||||
enable_testing ()
|
||||
|
||||
- set (gtest_git_tag "252ce9c52d304659eff6be558209c811b7191963") # 26-04-2021
|
||||
-
|
||||
- if (NOT CMAKE_VERSION VERSION_LESS 3.14)
|
||||
- message (STATUS "Fetch googletest:")
|
||||
-
|
||||
- include (FetchContent)
|
||||
- FetchContent_Declare (
|
||||
- gtest_fetch_content
|
||||
- GIT_REPOSITORY "https://github.com/google/googletest.git"
|
||||
- GIT_TAG "${gtest_git_tag}"
|
||||
- )
|
||||
- option (BUILD_GMOCK "" OFF)
|
||||
- FetchContent_MakeAvailable(gtest_fetch_content)
|
||||
- else ()
|
||||
- message (STATUS "Use googletest as external project:")
|
||||
-
|
||||
- seqan3_require_test_old ("${gtest_git_tag}")
|
||||
- endif ()
|
||||
-
|
||||
- add_custom_target (gtest_build DEPENDS gtest_main gtest)
|
||||
+ find_package(GTest REQUIRED)
|
||||
endmacro ()
|
||||
167
seqan3.spec
167
seqan3.spec
|
|
@ -5,16 +5,15 @@
|
|||
%bcond_without test_api
|
||||
%bcond_without test_header
|
||||
%bcond_without benchmark
|
||||
# Documentation needs external online `cppreference-doc/releases/download/v20220201/html-book-20220201.tar.xz`
|
||||
%bcond_with doc
|
||||
%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 8c604d98e0d291bc3909ecbad78ca778b3ad5a5c
|
||||
%global date .20230403git
|
||||
%global commit ff61cb64effe2c61bc65e0380256dcd87acee353
|
||||
%global date .20210510git
|
||||
%global shortcommit %(c=%{commit}; echo ${c:0:8})
|
||||
%else
|
||||
%global commit %{nil}
|
||||
|
|
@ -24,43 +23,43 @@ ExclusiveArch: %{power64} x86_64 aarch64
|
|||
|
||||
Name: seqan3
|
||||
Summary: The modern C++ library for sequence analysis
|
||||
Version: 3.4.2
|
||||
Release: %autorelease
|
||||
License: BSD-3-Clause
|
||||
URL: https://www.seqan.de/
|
||||
# Source code archive generated by:
|
||||
# git clone -b 3.3.0 --depth 1 --single-branch --progress --recursive https://github.com/seqan/seqan3.git
|
||||
# find seqan3 -name '.git*' -exec rm -rf {} ';'
|
||||
# find seqan3 -name '.git*' -exec rm -f {} ';'
|
||||
# tar -czvf seqan3-%%{version}.tar.gz seqan3
|
||||
Version: 3.0.3
|
||||
Release: 1%{date}%{shortcommit}%{?dist}
|
||||
License: BSD
|
||||
URL: http://www.seqan.de/
|
||||
%if 0%{?middle_release}
|
||||
# git clone -b 3.0.3 --depth 1 --single-branch --progress --recursive https://github.com/seqan/seqan3.git
|
||||
# find . -name '.git*' -exec rm -rf {} ';'
|
||||
# find . -name '.git*' -exec rm -f {} ';'
|
||||
# cd .. && tar -czvf seqan3-%%{version}.tar.gz seqan3
|
||||
Source0: https://github.com/seqan/%{name}/archive/%{commit}/%{name}-%{commit}.tar.gz
|
||||
%else
|
||||
Source0: https://github.com/seqan/%{name}/archive/%{version}/%{name}-%{version}.tar.gz
|
||||
Source0: https://github.com/seqan/%{name}/archive/%{version}-rc.1/%{name}-%{version}.tar.gz
|
||||
%endif
|
||||
|
||||
BuildRequires: gcc
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: gcc, gcc-c++, dos2unix
|
||||
BuildRequires: ccache
|
||||
BuildRequires: cmake >= 3.4
|
||||
BuildRequires: cereal-devel >= 1.3.2
|
||||
BuildRequires: sdsl-lite-devel >= 3.0.1
|
||||
BuildRequires: cereal-devel >= 1.2.3
|
||||
BuildRequires: make
|
||||
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 >= 1.9.4
|
||||
BuildRequires: doxygen >= 1.9.1
|
||||
%endif
|
||||
# Use Fedora's CMake only
|
||||
Patch1: %{name}-3.4.0-disable_CPM.patch
|
||||
# Include missing header files
|
||||
Patch2: %{name}-fix_GCC15.patch
|
||||
|
||||
# Patches for unbundling libraries and fix some errors
|
||||
Patch0: %{name}-unbundle_benchmark.patch
|
||||
Patch1: %{name}-cppreference.patch
|
||||
Patch2: %{name}-unbundle_gtest.patch
|
||||
|
||||
%description
|
||||
SeqAn3 is the new version of the popular SeqAn template
|
||||
library for the analysis of biological sequences.
|
||||
|
|
@ -75,16 +74,15 @@ data structures for:
|
|||
|
||||
%package devel
|
||||
Summary: SeqAn3 header only files
|
||||
# bzip2stream and zipstream libraries are distributed under zlib/libpng
|
||||
License: BSD-3-Clause AND Zlib
|
||||
Requires: cmake%{?_isa} >= 3.4
|
||||
Requires: cereal-devel%{?_isa} >= 1.3.2
|
||||
Requires: sdsl-lite-devel%{?_isa} >= 3.0.1
|
||||
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(bzip2stream)
|
||||
Provides: bundled(zipstream)
|
||||
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.
|
||||
|
||||
|
|
@ -95,15 +93,23 @@ BuildArch: noarch
|
|||
SeqAn3 documentation.
|
||||
|
||||
%prep
|
||||
%autosetup -n %{name}-%{version} -N
|
||||
%autosetup -n %{name} -N
|
||||
|
||||
%patch 1 -p1 -b .backup
|
||||
%patch 2 -p1 -b .backup
|
||||
dos2unix test/cmake/seqan3_require_benchmark.cmake
|
||||
%patch0 -p1 -b .backup
|
||||
%patch1 -p1 -b .backup
|
||||
%patch2 -p1 -b .backup
|
||||
|
||||
# Unbundle libraries already available in Fedora
|
||||
# Unbundle libraries already on Fedora
|
||||
rm -rf submodules/cereal
|
||||
rm -rf submodules/range-v3
|
||||
rm -rf submodules/sdsl-lite
|
||||
rm -rf submodules/sdsl-lite/cereal
|
||||
rm -rf submodules/sdsl-lite/googletest
|
||||
|
||||
|
||||
# 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 '{}' \;
|
||||
|
|
@ -112,45 +118,37 @@ find . -type f -name "*.hpp" -exec chmod 0644 '{}' \;
|
|||
%if %{with check}
|
||||
%if %{with test_api}
|
||||
mkdir -p build
|
||||
export CXXFLAGS="%{build_cxxflags} -std=c++23"
|
||||
# Workaround for upstream bug#1993
|
||||
export CXXFLAGS="%{build_cxxflags} -std=c++20"
|
||||
%cmake -S test/unit -B build -DCMAKE_BUILD_TYPE=Release \
|
||||
-DCPM_USE_LOCAL_PACKAGES:BOOL=OFF -DCPM_LOCAL_PACKAGES_ONLY:BOOL=OFF \
|
||||
-DCPM_DONT_UPDATE_MODULE_PATH:BOOL=ON -DCPM_DONT_CREATE_PACKAGE_LOCK:BOOL=ON \
|
||||
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
|
||||
-DSEQAN3_CEREAL:BOOL=ON \
|
||||
-DSEQAN3_TEST_BUILD_OFFLINE:BOOL=ON -DFETCHCONTENT_FULLY_DISCONNECTED:BOOL=ON \
|
||||
-DFETCHCONTENT_UPDATES_DISCONNECTED:BOOL=ON \
|
||||
-DSEQAN3_NO_ZLIB=OFF
|
||||
-DSEQAN3_LEMON:BOOL=ON \
|
||||
-DSEQAN3_TEST_BUILD_OFFLINE:BOOL=ON
|
||||
|
||||
%define _vpath_builddir build
|
||||
%cmake_build
|
||||
%endif
|
||||
%if %{with test_header}
|
||||
mkdir -p build-header
|
||||
export CXXFLAGS="%{build_cxxflags} -std=c++23"
|
||||
export CXXFLAGS="%{build_cxxflags} -std=c++20"
|
||||
%cmake -S test/header -B build-header -DCMAKE_BUILD_TYPE=Release \
|
||||
-DCPM_USE_LOCAL_PACKAGES:BOOL=OFF -DCPM_LOCAL_PACKAGES_ONLY:BOOL=OFF \
|
||||
-DCPM_DONT_UPDATE_MODULE_PATH:BOOL=ON -DCPM_DONT_CREATE_PACKAGE_LOCK:BOOL=ON \
|
||||
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
|
||||
-DSEQAN3_CEREAL:BOOL=ON \
|
||||
-DSEQAN3_TEST_BUILD_OFFLINE:BOOL=ON -DFETCHCONTENT_FULLY_DISCONNECTED:BOOL=ON \
|
||||
-DFETCHCONTENT_UPDATES_DISCONNECTED:BOOL=ON \
|
||||
-DSEQAN3_NO_ZLIB=OFF
|
||||
-DSEQAN3_LEMON:BOOL=ON \
|
||||
-DSEQAN3_TEST_BUILD_OFFLINE:BOOL=ON
|
||||
|
||||
%define _vpath_builddir build-header
|
||||
%cmake_build
|
||||
%endif
|
||||
%if %{with benchmark}
|
||||
mkdir -p build-performance
|
||||
export CXXFLAGS="%{build_cxxflags} -std=c++23"
|
||||
export CXXFLAGS="%{build_cxxflags} -std=c++20"
|
||||
%cmake -S test/performance -B build-performance -DCMAKE_BUILD_TYPE=Release \
|
||||
-DCPM_USE_LOCAL_PACKAGES:BOOL=OFF -DCPM_LOCAL_PACKAGES_ONLY:BOOL=OFF \
|
||||
-DCPM_DONT_UPDATE_MODULE_PATH:BOOL=ON -DCPM_DONT_CREATE_PACKAGE_LOCK:BOOL=ON \
|
||||
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
|
||||
-DSEQAN3_CEREAL:BOOL=ON \
|
||||
-DSEQAN3_TEST_BUILD_OFFLINE:BOOL=ON -DFETCHCONTENT_FULLY_DISCONNECTED:BOOL=ON \
|
||||
-DFETCHCONTENT_UPDATES_DISCONNECTED:BOOL=ON \
|
||||
-DSEQAN3_NO_ZLIB=OFF
|
||||
-DSEQAN3_LEMON:BOOL=ON \
|
||||
-DSEQAN3_TEST_BUILD_OFFLINE:BOOL=ON
|
||||
|
||||
%define _vpath_builddir build-performance
|
||||
%cmake_build
|
||||
|
|
@ -158,25 +156,19 @@ export CXXFLAGS="%{build_cxxflags} -std=c++23"
|
|||
%endif
|
||||
%if %{with doc}
|
||||
mkdir -p build-doc
|
||||
%cmake -S test/documentation -B build-doc -DCMAKE_BUILD_TYPE=Release
|
||||
%define _vpath_builddir build-doc
|
||||
%cmake_build -- -j1
|
||||
export CXXFLAGS="%{build_cxxflags} -std=c++20"
|
||||
%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 %{buildroot}%{_includedir}/%{name}/contrib/std/.{clang-format,gitignore}
|
||||
|
||||
install -pm 644 cmake/seqan3-config-version.cmake %{buildroot}%{_libdir}/cmake/%{name}/
|
||||
install -pm 644 cmake/seqan3-config.cmake %{buildroot}%{_libdir}/cmake/%{name}/
|
||||
rm -f submodules/sdsl-lite/include/sdsl/.gitignore
|
||||
cp -a submodules/sdsl-lite/include %{buildroot}%{_prefix}/
|
||||
|
||||
%if %{with doc}
|
||||
mkdir -p build-doc
|
||||
%cmake -S test/documentation -B build-doc -DCMAKE_BUILD_TYPE=Release
|
||||
%define _vpath_builddir build-doc
|
||||
%cmake_install
|
||||
%endif
|
||||
install -pm 644 build_system/*.cmake %{buildroot}%{_libdir}/cmake/%{name}/
|
||||
|
||||
%if %{with check}
|
||||
%check
|
||||
|
|
@ -198,18 +190,57 @@ mkdir -p build-doc
|
|||
%endif
|
||||
|
||||
%files devel
|
||||
%license LICENSE.md
|
||||
%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
|
||||
%doc doc/*
|
||||
%doc build-doc/doc_usr/html
|
||||
%license LICENSE.md
|
||||
%doc README.md
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
%autochangelog
|
||||
* Fri May 28 2021 Antonio Trande <sagitter@fedoraproject.org> - 3.0.3-1
|
||||
- Release 3.0.3
|
||||
|
||||
* Wed May 26 2021 Antonio Trande <sagitter@fedoraproject.org> - 3.0.3-0.1.rc1
|
||||
- Pre-release 3.0.3-rc1
|
||||
|
||||
* Sun Feb 14 2021 Antonio Trande <sagitter@fedoraproject.org> - 3.0.2-7
|
||||
- Disable tests with GCC-11 (rhbz#1923593)
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
* Fri Dec 11 2020 Antonio Trande <sagitter@fedoraproject.org> - 3.0.2-6
|
||||
- Rebuild for GCC-11
|
||||
|
||||
* Tue Nov 03 2020 Antonio Trande <sagitter@fedoraproject.org> - 3.0.2-5
|
||||
- Bundle sdsl header files
|
||||
|
||||
* Sat Oct 17 2020 Antonio Trande <sagitter@fedoraproject.org> - 3.0.2-4
|
||||
- Remove old License file from bundled libraries
|
||||
- Redefine vpath builddir
|
||||
|
||||
* Fri Oct 16 2020 Antonio Trande <sagitter@fedoraproject.org> - 3.0.2-3
|
||||
- Fix Requires packages
|
||||
|
||||
* Wed Oct 14 2020 Antonio Trande <sagitter@fedoraproject.org> - 3.0.2-2
|
||||
- Use -std=c++2a flag
|
||||
- Patched for upstream bugs #2209 #2210
|
||||
|
||||
* Tue Oct 13 2020 Antonio Trande <sagitter@fedoraproject.org> - 3.0.2-1
|
||||
- Release 3.0.2
|
||||
|
||||
* Fri Aug 07 2020 Antonio Trande <sagitter@fedoraproject.org> - 3.0.2-0.2.20200806gitbf04354
|
||||
- Pre-release 3.0.2 with bundled range-v3
|
||||
|
||||
* Thu Aug 06 2020 Antonio Trande <sagitter@fedoraproject.org> - 3.0.2-0.1.20200806gitbf04354
|
||||
- Pre-release 3.0.2
|
||||
|
||||
* Thu Mar 05 2020 Antonio Trande <sagitter@fedoraproject.org> - 3.0.1-1
|
||||
- Execute header/performance tests
|
||||
- Build docs
|
||||
- First package
|
||||
|
|
|
|||
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
SHA512 (seqan3-3.4.2.tar.gz) = 6337bb3d49406e89e277ab4b9e751f6b2a0524c32c7aecf2093b795863870c2337bb1df1c798791aee82325cb3f0b19ecb57e109d73db847e6fe6a2a033bbaae
|
||||
SHA512 (seqan3-3.0.3.tar.gz) = 68c9eff9f8be4b2bf4015f2108d2aeeb3c085fed41480a3c9a5532f3392ccd2ece51707319e22b2f11a86dd6afb36674b8471518432c971c6a8f83aeb00ca18c
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue