diff --git a/.codecov.yml b/.codecov.yml index 8996185ebc..1ce8f07a1e 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -4,7 +4,6 @@ # See https://docs.codecov.io/docs/codecovyml-reference codecov: - token: a75b1e95-134c-4ada-adac-5846045f188e require_ci_to_pass: no # codecov reports its results independent of whether CI passed notify: wait_for_ci: no # codecov has not to wait until the CI is finished to post its results diff --git a/.github/workflows/ci_cmake.yml b/.github/workflows/ci_cmake.yml index d5781ea8af..0bd5d86db2 100644 --- a/.github/workflows/ci_cmake.yml +++ b/.github/workflows/ci_cmake.yml @@ -35,20 +35,18 @@ jobs: matrix: include: - name: "Non-cyclic tests" - compiler: "gcc-14" + compiler: "gcc-latest" build: unit use_include_dependencies: "ON" cmake_depends_use_compiler: "OFF" - name: "External project" - compiler: "gcc-14" + compiler: "gcc-latest" build: external_project use_include_dependencies: "OFF" cmake_depends_use_compiler: "ON" container: image: ghcr.io/seqan/${{ matrix.compiler }} - volumes: - - /home/runner:/home/runner steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/ci_coverage.yml b/.github/workflows/ci_coverage.yml index 289d90dc91..68be372528 100644 --- a/.github/workflows/ci_coverage.yml +++ b/.github/workflows/ci_coverage.yml @@ -33,11 +33,9 @@ jobs: strategy: fail-fast: false matrix: - compiler: ["gcc-14"] + compiler: ["gcc-latest"] container: image: ghcr.io/seqan/${{ matrix.compiler }} - volumes: - - /home/runner:/home/runner steps: - name: Checkout uses: actions/checkout@v4 @@ -75,18 +73,20 @@ jobs: --filter ${GITHUB_WORKSPACE}/test/include/seqan3/test \ --exclude ${GITHUB_WORKSPACE}/include/seqan3/contrib \ --exclude ${GITHUB_WORKSPACE}/include/seqan3/std \ - --exclude-lines-by-pattern '^\s*$' \ - --exclude-lines-by-pattern '^\s*};$' \ - --exclude-unreachable-branches \ + --exclude-lines-by-pattern '^\s*}|^\s*};' \ --exclude-throw-branches \ --exclude-noncode-lines \ + --exclude-unreachable-branches \ --merge-mode-functions separate \ -j \ --cobertura \ --output ${GITHUB_WORKSPACE}/build/coverage_report.xml - name: Submit coverage build - uses: codecov/codecov-action@v3.1.5 + uses: codecov/codecov-action@v5.4.3 with: - files: build/coverage_report.xml + disable_search: true fail_ci_if_error: false + files: build/coverage_report.xml + plugins: noop + token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/ci_license.yml b/.github/workflows/ci_license.yml index 3b226646ef..e155addcd4 100644 --- a/.github/workflows/ci_license.yml +++ b/.github/workflows/ci_license.yml @@ -27,7 +27,7 @@ defaults: jobs: check: name: REUSE Compliance - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest timeout-minutes: 120 if: github.repository_owner == 'seqan' || github.event_name == 'workflow_dispatch' || github.event.label.name == 'lint' steps: diff --git a/.github/workflows/ci_lint.yml b/.github/workflows/ci_lint.yml index 73722fbfa4..91322d63af 100644 --- a/.github/workflows/ci_lint.yml +++ b/.github/workflows/ci_lint.yml @@ -16,67 +16,26 @@ defaults: jobs: # Cancel other workflows that are dependent on this workflow by adding jobs that have the same concurrency group. - cancel_linux: - name: Cancel running Workflows + cancel_running_workflows: + name: Cancel ${{ matrix.workflow}} + strategy: + fail-fast: false + matrix: + workflow: ["linux", "macos", "misc", "coverage", "cmake", "documentation"] concurrency: - group: linux-${{ github.event.pull_request.number }} + group: ${{ matrix.workflow }}-${{ github.event.pull_request.number }} cancel-in-progress: true - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest steps: - - name: "Cancel Linux" - run: echo "Cancelling Linux" - cancel_macos: - name: Cancel running Workflows - concurrency: - group: macos-${{ github.event.pull_request.number }} - cancel-in-progress: true - runs-on: ubuntu-22.04 - steps: - - name: "Cancel macOS" - run: echo "Cancelling macOS" - cancel_misc: - name: Cancel running Workflows - concurrency: - group: misc-${{ github.event.pull_request.number }} - cancel-in-progress: true - runs-on: ubuntu-22.04 - steps: - - name: "Cancel Misc" - run: echo "Cancelling Misc" - cancel_coverage: - name: Cancel running Workflows - concurrency: - group: coverage-${{ github.event.pull_request.number }} - cancel-in-progress: true - runs-on: ubuntu-22.04 - steps: - - name: "Cancel Coverage" - run: echo "Cancelling Coverage" - cancel_cmake: - name: Cancel running Workflows - concurrency: - group: cmake-${{ github.event.pull_request.number }} - cancel-in-progress: true - runs-on: ubuntu-22.04 - steps: - - name: "Cancel CMake" - run: echo "Cancelling CMake" - cancel_documentation: - name: Cancel running Workflows - concurrency: - group: documentation-${{ github.event.pull_request.number }} - cancel-in-progress: true - runs-on: ubuntu-22.04 - steps: - - name: "Cancel Documentation" - run: echo "Cancelling Documentation" + - name: "Cancel ${{ matrix.workflow }}" + run: echo "Cancelling ${{ matrix.workflow }}" lint: name: Lint concurrency: group: lint-${{ github.event.pull_request.number }} cancel-in-progress: true - needs: [cancel_linux, cancel_macos, cancel_misc, cancel_coverage, cancel_cmake, cancel_documentation] - runs-on: ubuntu-22.04 + needs: cancel_running_workflows + runs-on: ubuntu-latest timeout-minutes: 15 steps: - name: Run lint diff --git a/.github/workflows/ci_linux.yml b/.github/workflows/ci_linux.yml index 03127d9ec5..e1fdba9b18 100644 --- a/.github/workflows/ci_linux.yml +++ b/.github/workflows/ci_linux.yml @@ -33,14 +33,9 @@ jobs: strategy: fail-fast: false matrix: - compiler: ["clang-19", "clang-18", "clang-17", "gcc-14", "gcc-13", "gcc-12", "intel"] - include: - - compiler: "intel" - cxx_flags: "-fp-model=strict -Wno-overriding-option" + compiler: ["clang-latest", "clang-second-latest", "clang-third-latest", "gcc-latest", "gcc-second-latest", "gcc-third-latest", "intel"] container: image: ghcr.io/seqan/${{ matrix.compiler }} - volumes: - - /home/runner:/home/runner steps: - name: Checkout uses: actions/checkout@v4 @@ -53,8 +48,7 @@ jobs: $CXX --version || true cmake --version || true mkdir build && cd build - cmake ../test/unit -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_FLAGS="${{ matrix.cxx_flags }}" + cmake ../test/unit -DCMAKE_BUILD_TYPE=Release make gtest_main - name: Build tests diff --git a/.github/workflows/ci_macos.yml b/.github/workflows/ci_macos.yml index 3549a5ad6a..751bbca1ba 100644 --- a/.github/workflows/ci_macos.yml +++ b/.github/workflows/ci_macos.yml @@ -28,12 +28,12 @@ defaults: jobs: build: name: ${{ matrix.compiler }} - runs-on: macos-14 + runs-on: macos-latest if: github.repository_owner == 'seqan' || github.event_name == 'workflow_dispatch' || github.event.label.name == 'lint' strategy: fail-fast: false matrix: - compiler: ["clang-19", "clang-18", "clang-17", "gcc-14", "gcc-13", "gcc-12"] + compiler: ["clang-latest", "clang-second-latest", "clang-third-latest", "gcc-latest", "gcc-second-latest", "gcc-third-latest"] steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/ci_misc.yml b/.github/workflows/ci_misc.yml index 3509a9cac6..358498cc00 100644 --- a/.github/workflows/ci_misc.yml +++ b/.github/workflows/ci_misc.yml @@ -33,15 +33,10 @@ jobs: strategy: fail-fast: false matrix: - compiler: ["clang-19", "gcc-14", "gcc-12", "intel"] + compiler: ["clang-latest", "gcc-latest", "gcc-third-latest", "intel"] build: ["snippet", "performance", "header"] - include: - - compiler: "intel" - cxx_flags: "-fp-model=strict -Wno-overriding-option" container: image: ghcr.io/seqan/${{ matrix.compiler }} - volumes: - - /home/runner:/home/runner steps: - name: Checkout uses: actions/checkout@v4 @@ -53,7 +48,6 @@ jobs: run: | mkdir build && cd build cmake ../test/${{ matrix.build }} -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_FLAGS="${{ matrix.cxx_flags }}" \ -DSEQAN3_BENCHMARK_MIN_TIME=0.01s case "${{ matrix.build }}" in snippet) make gtest_main;; diff --git a/.github/workflows/ci_update_cookbook.yml b/.github/workflows/ci_update_cookbook.yml index ce7a085f27..ef8c7a55ec 100644 --- a/.github/workflows/ci_update_cookbook.yml +++ b/.github/workflows/ci_update_cookbook.yml @@ -23,7 +23,7 @@ defaults: jobs: update-cookbook: name: Update Cookbook - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest if: github.repository_owner == 'seqan' timeout-minutes: 15 steps: diff --git a/.github/workflows/cron_api.yml b/.github/workflows/cron_api.yml index 070eba36db..33594dc6a8 100644 --- a/.github/workflows/cron_api.yml +++ b/.github/workflows/cron_api.yml @@ -32,11 +32,9 @@ jobs: strategy: fail-fast: false matrix: - compiler: ["gcc-14", "gcc-13", "gcc-12"] + compiler: ["gcc-latest", "gcc-second-latest", "gcc-third-latest"] container: image: ghcr.io/seqan/${{ matrix.compiler }} - volumes: - - /home/runner:/home/runner steps: - name: Checkout uses: actions/checkout@v4 @@ -44,8 +42,7 @@ jobs: - name: Configure tests run: | mkdir build && cd build - cmake ../test/api_stability -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_FLAGS="${{ matrix.cxx_flags }}" + cmake ../test/api_stability -DCMAKE_BUILD_TYPE=Release - name: Build tests working-directory: build diff --git a/.github/workflows/cron_avx2.yml b/.github/workflows/cron_avx2.yml index f2b96c21f9..2a91d846cb 100644 --- a/.github/workflows/cron_avx2.yml +++ b/.github/workflows/cron_avx2.yml @@ -27,21 +27,16 @@ defaults: jobs: build: name: ${{ matrix.build }} ${{ matrix.compiler }} - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest timeout-minutes: 300 if: github.repository_owner == 'seqan' || github.event_name == 'workflow_dispatch' strategy: fail-fast: false matrix: - compiler: ["clang-19", "clang-18", "clang-17", "gcc-14", "gcc-13", "gcc-12", "intel"] + compiler: ["clang-latest", "clang-second-latest", "clang-third-latest", "gcc-latest", "gcc-second-latest", "gcc-third-latest", "intel"] build: [unit, snippet, performance, header] - include: - - compiler: "intel" - cxx_flags: "-fp-model=strict -Wno-overriding-option" container: image: ghcr.io/seqan/${{ matrix.compiler }} - volumes: - - /home/runner:/home/runner steps: - name: Checkout uses: actions/checkout@v4 @@ -50,7 +45,6 @@ jobs: run: | mkdir build && cd build cmake ../test/${{ matrix.build }} -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_FLAGS="-mavx2 ${{ matrix.cxx_flags }}" \ -DSEQAN3_BENCHMARK_MIN_TIME=0.01s case "${{ matrix.build }}" in unit) make gtest_main;; diff --git a/.github/workflows/cron_codechecker.yml b/.github/workflows/cron_codechecker.yml index b44e133407..5eb4bd9e3b 100644 --- a/.github/workflows/cron_codechecker.yml +++ b/.github/workflows/cron_codechecker.yml @@ -28,8 +28,6 @@ jobs: if: github.repository_owner == 'seqan' || github.event_name == 'workflow_dispatch' container: image: ghcr.io/seqan/codechecker - volumes: - - /home/runner:/home/runner steps: - name: Run CodeChecker uses: seqan/actions/codechecker@main diff --git a/.github/workflows/cron_codeql.yml b/.github/workflows/cron_codeql.yml index d9156824f3..a962e2e8ab 100644 --- a/.github/workflows/cron_codeql.yml +++ b/.github/workflows/cron_codeql.yml @@ -15,6 +15,7 @@ concurrency: env: SEQAN3_NO_VERSION_CHECK: 1 + CODEQL_EXTRACTOR_CPP_AUTOINSTALL_DEPENDENCIES: false TZ: Europe/Berlin defaults: @@ -29,9 +30,7 @@ jobs: permissions: security-events: write container: - image: ghcr.io/seqan/gcc-14 - volumes: - - /home/runner:/home/runner + image: ghcr.io/seqan/gcc-second-latest steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/cron_latest_libraries.yml b/.github/workflows/cron_latest_libraries.yml index c9b8c990fe..5a7ea156c9 100644 --- a/.github/workflows/cron_latest_libraries.yml +++ b/.github/workflows/cron_latest_libraries.yml @@ -27,21 +27,16 @@ defaults: jobs: build: name: ${{ matrix.build }} ${{ matrix.compiler }} - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest timeout-minutes: 300 if: github.repository_owner == 'seqan' || github.event_name == 'workflow_dispatch' strategy: fail-fast: false matrix: - compiler: ["clang-19", "clang-18", "clang-17", "gcc-14", "gcc-13", "gcc-12", "intel"] + compiler: ["clang-latest", "clang-second-latest", "clang-third-latest", "gcc-latest", "gcc-second-latest", "gcc-third-latest", "intel"] build: [unit, snippet, performance, header] - include: - - compiler: "intel" - cxx_flags: "-fp-model=strict -Wno-overriding-option" container: image: ghcr.io/seqan/${{ matrix.compiler }} - volumes: - - /home/runner:/home/runner steps: - name: Checkout uses: actions/checkout@v4 @@ -59,7 +54,6 @@ jobs: run: | mkdir build && cd build cmake ../test/${{ matrix.build }} -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_CXX_FLAGS="${{ matrix.cxx_flags }}" \ -DSEQAN3_BENCHMARK_MIN_TIME=0.01s case "${{ matrix.build }}" in unit) make gtest_main;; diff --git a/.github/workflows/cron_no_optional_libraries.yml b/.github/workflows/cron_no_optional_libraries.yml index 57792e8111..c8c031c50d 100644 --- a/.github/workflows/cron_no_optional_libraries.yml +++ b/.github/workflows/cron_no_optional_libraries.yml @@ -31,7 +31,7 @@ jobs: # Either all optional dependencies are disabled (true, true, true) # Or only Bzip2 is disabled (false, true, false) matrix: - os: [ubuntu-latest, macos-14] + os: [ubuntu-latest, macos-latest] build_type: [Release, Debug] zlib: [true, false] include: @@ -41,18 +41,16 @@ jobs: - zlib: false bzip2: true cereal: false - - os: macos-14 - compiler: clang-19 + - os: macos-latest + compiler: clang-latest - os: ubuntu-latest - compiler: gcc-14 - image: ghcr.io/seqan/gcc-14 + compiler: gcc-latest + image: ghcr.io/seqan/gcc-latest container: # If an image is defined for a matrix entry, use it. # Otherwise, use the "empty"/'' image which means do not use a container at all. image: ${{ matrix.image || '' }} - volumes: - - /home/runner:/home/runner steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/cron_sanitizer.yml b/.github/workflows/cron_sanitizer.yml index a6ee2ce4af..d06fd87725 100644 --- a/.github/workflows/cron_sanitizer.yml +++ b/.github/workflows/cron_sanitizer.yml @@ -34,25 +34,25 @@ jobs: fail-fast: false matrix: name: [ASan, TSan, UBSan] - os: [ubuntu-latest, macos-14] + os: [ubuntu-latest, macos-latest] build_type: [Release, RelWithDebInfo, Debug] exclude: # macOS llvm packages do not contain libarcher, which is required for TSan to handle OpenMP. # TSan runs on ubuntu with clang. Packages there contain libarcher. - name: "TSan" - os: macos-14 + os: macos-latest include: - - os: macos-14 - compiler: clang-19 + - os: macos-latest + compiler: clang-latest - os: ubuntu-latest - compiler: gcc-14 - image: ghcr.io/seqan/gcc-14 + compiler: gcc-latest + image: ghcr.io/seqan/gcc-latest - name: "TSan" os: ubuntu-latest - compiler: clang-19 - image: ghcr.io/seqan/clang-19 + compiler: clang-latest + image: ghcr.io/seqan/clang-latest cxx_flags: "-fsanitize=thread" ctest_excludes: "-E async_input_buffer_snippet" @@ -60,14 +60,14 @@ jobs: os: ubuntu-latest cxx_flags: "-fsanitize=address -Wno-maybe-uninitialized" - name: "ASan" - os: macos-14 + os: macos-latest cxx_flags: "-fsanitize=address" - name: "UBSan" os: ubuntu-latest cxx_flags: "-fsanitize=undefined,float-divide-by-zero -Wno-maybe-uninitialized -Wno-stringop-overflow" - name: "UBSan" - os: macos-14 + os: macos-latest cxx_flags: "-fsanitize=undefined,float-divide-by-zero,local-bounds,nullability" ctest_excludes: "-E tmp_directory_snippet_cmp_output" @@ -75,8 +75,6 @@ jobs: # If an image is defined for a matrix entry, use it. # Otherwise, use the "empty"/'' image which means do not use a container at all. image: ${{ matrix.image || '' }} - volumes: - - /home/runner:/home/runner steps: - name: Checkout uses: actions/checkout@v4 diff --git a/.github/workflows/ram_usage.yml b/.github/workflows/ram_usage.yml index 21cad43ff5..6a173c136b 100644 --- a/.github/workflows/ram_usage.yml +++ b/.github/workflows/ram_usage.yml @@ -30,7 +30,7 @@ defaults: jobs: build: name: RAM-Usage gcc${{ github.event.inputs.compiler }} - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest timeout-minutes: 300 if: github.repository_owner == 'seqan' || github.event_name == 'workflow_dispatch' steps: diff --git a/include/seqan3/core/algorithm/algorithm_result_generator_range.hpp b/include/seqan3/core/algorithm/algorithm_result_generator_range.hpp index c1a0179233..74ef3bb43a 100644 --- a/include/seqan3/core/algorithm/algorithm_result_generator_range.hpp +++ b/include/seqan3/core/algorithm/algorithm_result_generator_range.hpp @@ -78,9 +78,11 @@ class algorithm_result_generator_range * * Constructs a new algorithm range by taking ownership over the passed algorithm buffer. */ + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_START(-Warray-bounds) explicit algorithm_result_generator_range(algorithm_executor_type && algorithm_executor) : algorithm_executor_ptr{std::make_unique(std::move(algorithm_executor))} {} + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_STOP //!\} /*!\name Iterators diff --git a/include/seqan3/utility/detail/type_name_as_string.hpp b/include/seqan3/utility/detail/type_name_as_string.hpp index ff5834fb2e..01e900a739 100644 --- a/include/seqan3/utility/detail/type_name_as_string.hpp +++ b/include/seqan3/utility/detail/type_name_as_string.hpp @@ -13,6 +13,7 @@ # include #endif // defined(__GNUC__) || defined(__clang__) +#include #include #include #include diff --git a/test/documentation/seqan3_doxygen_cfg.in b/test/documentation/seqan3_doxygen_cfg.in index 645c89651c..5bbaf5311e 100644 --- a/test/documentation/seqan3_doxygen_cfg.in +++ b/test/documentation/seqan3_doxygen_cfg.in @@ -353,7 +353,10 @@ PREDEFINED = CEREAL_SERIALIZE_FUNCTION_NAME=serialize \ "SEQAN3_DOXYGEN_ONLY(x)= x" \ ${SEQAN3_DOXYGEN_PREDEFINED_NDEBUG} \ SEQAN3_WORKAROUND_LITERAL=constexpr \ - SEQAN3_DEPRECATED_HEADER(x)= + SEQAN3_DEPRECATED_HEADER(x)= \ + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_START(x)= \ + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_START(x, y)= \ + SEQAN3_WORKAROUND_GCC_BOGUS_MEMCPY_STOP= EXPAND_AS_DEFINED = SEQAN3_CPO_OVERLOAD_BODY \ SEQAN3_CPO_OVERLOAD SKIP_FUNCTION_MACROS = NO diff --git a/test/external_project/install-sharg.cmake b/test/external_project/install-sharg.cmake index d5bec2d76a..550a0f1600 100644 --- a/test/external_project/install-sharg.cmake +++ b/test/external_project/install-sharg.cmake @@ -12,8 +12,8 @@ endif () ExternalProject_Add ( sharg_test_prerequisite PREFIX sharg_test_prerequisite - URL "https://github.com/seqan/sharg-parser/releases/download/1.1.1/sharg-1.1.1-Source.tar.xz" - URL_HASH SHA256=7330f06501718e7871e55e5fd70d0e41472cc8b34bd0e3519f8c5547510c671c + URL "https://github.com/seqan/sharg-parser/archive/be113bcffe49c0d62cbd65a191820f05386aa8da.tar.gz" + URL_HASH SHA256=d4a723f58865d0a737299d3c6bd85addc912add89b93e6aba43d4836ed4980d1 CMAKE_ARGS ${SEQAN3_EXTERNAL_PROJECT_CMAKE_ARGS} # "-DCMAKE_INSTALL_PREFIX=${SEQAN3_SYSTEM_PREFIX}" STEP_TARGETS configure install