Compare commits

..

No commits in common. "rawhide" and "f42" have entirely different histories.

5 changed files with 236 additions and 3 deletions

1
.gitignore vendored
View file

@ -14,4 +14,3 @@
/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

47
seqan3-fix_gcc-16.patch Normal file
View file

@ -0,0 +1,47 @@
From e6ddc2529cad39497f15199f9fdc4eb99672018c Mon Sep 17 00:00:00 2001
From: Enrico Seiler <enrico.seiler@hotmail.de>
Date: Tue, 20 Jan 2026 13:11:14 +0100
Subject: [PATCH] fix(gcc-16): bogus warning with fedora
---
.../alphabet/container/bitpacked_sequence.hpp | 26 +++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/include/seqan3/alphabet/container/bitpacked_sequence.hpp b/include/seqan3/alphabet/container/bitpacked_sequence.hpp
index 67abc29d22..eb353200a7 100644
--- a/include/seqan3/alphabet/container/bitpacked_sequence.hpp
+++ b/include/seqan3/alphabet/container/bitpacked_sequence.hpp
@@ -87,7 +87,33 @@ class bitpacked_sequence
//!\brief Update the sdsl-proxy.
constexpr void on_update() noexcept
{
+ // Alternative patch in the SDSL.
+ // The problem is that, in the Fedora build type, there is a warning about accessing lo_set[65],
+ // which is out of bounds (size is 64).
+ // However, during runtime, lo_set[65] is never actually accessed (bogus warning).
+ // Making `len > 64` undefined behaviour resolves the warning.
+ // Note that the SDSL uses an older C++ standard and has not `std::unreachable()` available.
+ // Also, `__builtin_unreachable()` is only valid for GCC and Clang. The SDSL also supports MSVC,
+ // where there is an equivalent but different builtin for that.
+ // The diff is for the amalgamated seqan3/contrib/sdsl-lite.hpp; but the patch should be applied upstream.
+ // ```diff
+ // diff --git a/include/seqan3/contrib/sdsl-lite.hpp b/include/seqan3/contrib/sdsl-lite.hpp
+ // index a82da4ac2..b59628a56 100644
+ // --- a/include/seqan3/contrib/sdsl-lite.hpp
+ // +++ b/include/seqan3/contrib/sdsl-lite.hpp
+ // @@ -510,6 +510,8 @@ constexpr uint32_t bits_impl<T>::sel11(uint64_t x, uint32_t i, uint32_t c)
+ // template <typename T>
+ // constexpr void bits_impl<T>::write_int(uint64_t * word, uint64_t x, uint8_t offset, const uint8_t len)
+ // {
+ // + if (len > 64)
+ // + __builtin_unreachable();
+ // x &= bits_impl<T>::lo_set[len];
+ // if (offset + len < 64)
+ // {
+ // ```
+ SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_START(-Warray-bounds)
internal_proxy = base_t::to_rank();
+ SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_STOP
}
public:

View file

@ -0,0 +1,174 @@
From d1d486500e842433d9203ce97b0c3323acd4ad90 Mon Sep 17 00:00:00 2001
From: Enrico Seiler <enrico.seiler@hotmail.de>
Date: Sun, 18 Jan 2026 18:30:43 +0100
Subject: [PATCH] fix: latest google benchmark
---
test/performance/range/gap_decorator_helper.hpp | 10 +++++++++-
.../dream_index/interleaved_bloom_filter_benchmark.cpp | 10 +++++++++-
.../search/index_construction_benchmark.cpp | 10 +++++++++-
.../search/views/view_kmer_hash_benchmark.cpp | 10 +++++++++-
.../search/views/view_minimiser_hash_benchmark.cpp | 10 +++++++++-
.../utility/bloom_filter/bloom_filter_benchmark.cpp | 10 +++++++++-
6 files changed, 54 insertions(+), 6 deletions(-)
diff --git a/test/performance/range/gap_decorator_helper.hpp b/test/performance/range/gap_decorator_helper.hpp
index 638d1b998a..6d1fada68b 100644
--- a/test/performance/range/gap_decorator_helper.hpp
+++ b/test/performance/range/gap_decorator_helper.hpp
@@ -16,6 +16,14 @@
#include <seqan3/alignment/exception.hpp>
#include <seqan3/alphabet/all.hpp>
+namespace benchmark
+{
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+using Benchmark = benchmark::internal::Benchmark;
+#pragma GCC diagnostic pop
+} // namespace benchmark
+
#define SEQAN3_LEN_LONG 1 << 18
#define SEQAN3_LEN_SHORT 1 << 12
@@ -29,7 +37,7 @@
* | !SEQAN3_LONG_TESTS | 1 << [4:2:12] | [1, 5, 50] %
* | SEQAN3_LONG_TESTS | 1 << [4:2:18] | [1, 5, 25, 50, 75] %
*/
-void custom_arguments(benchmark::internal::Benchmark * b)
+void custom_arguments(benchmark::Benchmark * b)
{
std::vector<long long int> gap_percentages{1, 5, 50};
long long int seq_len_max = SEQAN3_LEN_SHORT;
diff --git a/test/performance/search/dream_index/interleaved_bloom_filter_benchmark.cpp b/test/performance/search/dream_index/interleaved_bloom_filter_benchmark.cpp
index a4cad0a0c6..cca693982a 100644
--- a/test/performance/search/dream_index/interleaved_bloom_filter_benchmark.cpp
+++ b/test/performance/search/dream_index/interleaved_bloom_filter_benchmark.cpp
@@ -9,12 +9,20 @@
#include <seqan3/utility/range/to.hpp>
#include <seqan3/utility/views/zip.hpp>
+namespace benchmark
+{
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+using Benchmark = benchmark::internal::Benchmark;
+#pragma GCC diagnostic pop
+} // namespace benchmark
+
inline benchmark::Counter hashes_per_second(size_t const count)
{
return benchmark::Counter(count, benchmark::Counter::kIsIterationInvariantRate, benchmark::Counter::OneK::kIs1000);
}
-static void arguments(benchmark::internal::Benchmark * b)
+static void arguments(benchmark::Benchmark * b)
{
// Bins must be powers of two
for (int32_t bins : {64, 8192})
diff --git a/test/performance/search/index_construction_benchmark.cpp b/test/performance/search/index_construction_benchmark.cpp
index d83943bcd7..86ebfb48e2 100644
--- a/test/performance/search/index_construction_benchmark.cpp
+++ b/test/performance/search/index_construction_benchmark.cpp
@@ -17,10 +17,18 @@
# include <seqan/index.h>
#endif
+namespace benchmark
+{
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+using Benchmark = benchmark::internal::Benchmark;
+#pragma GCC diagnostic pop
+} // namespace benchmark
+
static constexpr int32_t max_length{50000};
static constexpr size_t seed{0x6'12'6f};
-static void arguments(benchmark::internal::Benchmark * b)
+static void arguments(benchmark::Benchmark * b)
{
#ifndef NDEBUG
constexpr std::array<int32_t, 2> values{50, 5000};
diff --git a/test/performance/search/views/view_kmer_hash_benchmark.cpp b/test/performance/search/views/view_kmer_hash_benchmark.cpp
index 09b98d7d24..8d9a5d313a 100644
--- a/test/performance/search/views/view_kmer_hash_benchmark.cpp
+++ b/test/performance/search/views/view_kmer_hash_benchmark.cpp
@@ -13,6 +13,14 @@
# include <seqan/index.h>
#endif // SEQAN3_HAS_SEQAN2
+namespace benchmark
+{
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+using Benchmark = benchmark::internal::Benchmark;
+#pragma GCC diagnostic pop
+} // namespace benchmark
+
inline benchmark::Counter bp_per_second(size_t const basepairs)
{
return benchmark::Counter(basepairs,
@@ -32,7 +40,7 @@ inline seqan3::shape make_gapped_shape(size_t const k)
return shape;
}
-static void arguments(benchmark::internal::Benchmark * b)
+static void arguments(benchmark::Benchmark * b)
{
for (int32_t sequence_length : {1000, 50000, /*1'000'000*/})
{
diff --git a/test/performance/search/views/view_minimiser_hash_benchmark.cpp b/test/performance/search/views/view_minimiser_hash_benchmark.cpp
index 39c8c8395a..d2c012990d 100644
--- a/test/performance/search/views/view_minimiser_hash_benchmark.cpp
+++ b/test/performance/search/views/view_minimiser_hash_benchmark.cpp
@@ -16,6 +16,14 @@
# include <seqan/index.h>
#endif // SEQAN3_HAS_SEQAN2
+namespace benchmark
+{
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+using Benchmark = benchmark::internal::Benchmark;
+#pragma GCC diagnostic pop
+} // namespace benchmark
+
inline benchmark::Counter bp_per_second(size_t const basepairs)
{
return benchmark::Counter(basepairs,
@@ -35,7 +43,7 @@ inline seqan3::shape make_gapped_shape(size_t const k)
return shape;
}
-static void arguments(benchmark::internal::Benchmark * b)
+static void arguments(benchmark::Benchmark * b)
{
for (int32_t sequence_length : {50000, /*1'000'000*/})
{
diff --git a/test/performance/utility/bloom_filter/bloom_filter_benchmark.cpp b/test/performance/utility/bloom_filter/bloom_filter_benchmark.cpp
index 07f56fa4e0..71737edd9d 100644
--- a/test/performance/utility/bloom_filter/bloom_filter_benchmark.cpp
+++ b/test/performance/utility/bloom_filter/bloom_filter_benchmark.cpp
@@ -7,12 +7,20 @@
#include <seqan3/test/performance/sequence_generator.hpp>
#include <seqan3/utility/bloom_filter/bloom_filter.hpp>
+namespace benchmark
+{
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+using Benchmark = benchmark::internal::Benchmark;
+#pragma GCC diagnostic pop
+} // namespace benchmark
+
inline benchmark::Counter hashes_per_second(size_t const count)
{
return benchmark::Counter(count, benchmark::Counter::kIsIterationInvariantRate, benchmark::Counter::OneK::kIs1000);
}
-static void arguments(benchmark::internal::Benchmark * b)
+static void arguments(benchmark::Benchmark * b)
{
// Size of the IBF will be 2^bits bits
for (int32_t bits = 15; bits <= 20; bits += 5)

View file

@ -24,7 +24,7 @@ ExclusiveArch: %{power64} x86_64 aarch64
Name: seqan3
Summary: The modern C++ library for sequence analysis
Version: 3.4.2
Version: 3.4.0
Release: %autorelease
License: BSD-3-Clause
URL: https://www.seqan.de/
@ -57,10 +57,19 @@ BuildRequires: gtest-devel >= 1.10.0
BuildRequires: texlive-newunicodechar
BuildRequires: doxygen >= 1.9.4
%endif
# Use Fedora's CMake only
Patch1: %{name}-3.4.0-disable_CPM.patch
# Include missing header files
Patch2: %{name}-fix_GCC15.patch
# Fix (gcc-16) bogus warning
Patch3: %{name}-fix_gcc-16.patch
# Fix google benchmark
Patch4: %{name}-fix_latest_google_benchmark.patch
%description
SeqAn3 is the new version of the popular SeqAn template
library for the analysis of biological sequences.
@ -83,8 +92,10 @@ Requires: sdsl-lite-devel%{?_isa} >= 3.0.1
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)
%description devel
C++ headers files of SeqAn3, including CMake configuration files.
@ -99,6 +110,8 @@ SeqAn3 documentation.
%patch 1 -p1 -b .backup
%patch 2 -p1 -b .backup
%patch 3 -p1 -b .backup
%patch 4 -p1 -b .backup
# Unbundle libraries already available in Fedora
rm -rf submodules/cereal

View file

@ -1 +1 @@
SHA512 (seqan3-3.4.2.tar.gz) = 6337bb3d49406e89e277ab4b9e751f6b2a0524c32c7aecf2093b795863870c2337bb1df1c798791aee82325cb3f0b19ecb57e109d73db847e6fe6a2a033bbaae
SHA512 (seqan3-3.4.0.tar.gz) = c8541ac8166c70f521c2613d7c3ad7760ae3025ed5f196740176789c2f0400cecfd4aea2c500a1c0a2f801e35a5ab4df4dfc7c3d116518ab08b30da7cf69df06