Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[INFRA] CI and Compilers #3270

Merged
merged 10 commits into from
Jul 18, 2024
Merged

[INFRA] CI and Compilers #3270

merged 10 commits into from
Jul 18, 2024

Conversation

eseiler
Copy link
Member

@eseiler eseiler commented Jul 17, 2024

  • Uses docker images from seqan/actions
  • Removes CMake 3.5 test (prone to errors with newer operating systems, and hard to get running)
  • gcc-14 support
  • clang-18 support
  • Change default of SEQAN3_VERBOSE_TESTS to OFF. ON is a bad default because we basically always set it to OFF explicitly
  • Simplify coverage generation. I don't think we ever use it to build local HTML reports. And not doing everything in CMake makes it much easier to maintain (and read).

I did not yet update the cron jobs (follow-up).

Copy link

vercel bot commented Jul 17, 2024

The latest updates on your projects. Learn more about Vercel for Git ↗︎

Name Status Preview Updated (UTC)
seqan3 ✅ Ready (Inspect) Visit Preview Jul 18, 2024 3:52pm

@seqan-actions seqan-actions added lint [INTERNAL] signal for linting and removed lint [INTERNAL] signal for linting labels Jul 17, 2024
@seqan-actions seqan-actions added lint [INTERNAL] signal for linting and removed lint [INTERNAL] signal for linting labels Jul 17, 2024
@seqan-actions seqan-actions added the lint [INTERNAL] signal for linting label Jul 17, 2024
@seqan-actions seqan-actions removed the lint [INTERNAL] signal for linting label Jul 17, 2024
@seqan-actions seqan-actions added lint [INTERNAL] signal for linting and removed lint [INTERNAL] signal for linting labels Jul 17, 2024
@seqan-actions seqan-actions added lint [INTERNAL] signal for linting and removed lint [INTERNAL] signal for linting labels Jul 17, 2024
@seqan-actions seqan-actions added lint [INTERNAL] signal for linting and removed lint [INTERNAL] signal for linting labels Jul 17, 2024
Copy link

codecov bot commented Jul 17, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 98.12%. Comparing base (69284e8) to head (a151471).

Current head a151471 differs from pull request most recent head 82e9727

Please upload reports for the commit 82e9727 to get more accurate results.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3270      +/-   ##
==========================================
- Coverage   98.18%   98.12%   -0.07%     
==========================================
  Files         270      270              
  Lines       11885    11921      +36     
  Branches        0      105     +105     
==========================================
+ Hits        11669    11697      +28     
- Misses        216      224       +8     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@seqan-actions seqan-actions added lint [INTERNAL] signal for linting and removed lint [INTERNAL] signal for linting labels Jul 17, 2024
@seqan-actions seqan-actions added lint [INTERNAL] signal for linting and removed lint [INTERNAL] signal for linting labels Jul 17, 2024
Copy link
Contributor

@rrahn rrahn left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks all good to me.
I have only some open questions. Otherwise this can be merged after squahsing the debug commit.

- name: Install CMake
uses: seqan/actions/setup-cmake@main
with:
cmake: 3.16.9

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not running inside a docker container?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not yet, because I didnt do doxygen-containers, and we don't need compilers for the documentation build.

I just use the default cmake version.

if: github.repository_owner == 'seqan' || github.event_name == 'workflow_dispatch' || github.event.label.name == 'lint'
strategy:
fail-fast: true
fail-fast: false
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is this change necessary?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not necessary, but I come to find it rather annoying that all jobs are cancelled when a single job fails :)

@@ -4,6 +4,8 @@

cmake_minimum_required (VERSION 3.14)

cmake_policy (SET CMP0135 NEW)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please add a comment what this policy is for.
Maybe that explains why it is set already. Otherwise, please enlighten me :)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

eseiler added 7 commits July 18, 2024 17:51
There was a segfault in `enforce_random_iterator_test::adaptor`.
`auto v3 = test_range | seqan3::views::enforce_random_access |
std::views::drop(1);`

llvm-18 caches some iterator. It will then call `begin() + pos`, where
position is the cached distance, in this case 1 from the drop view.

This then calls `operator+` from, at some point, the
inherited_iterator_base.

The actual iterator is
`sentinel_pseudo_random_access_range::test_iterator`.

With `derived_t{as_base() - skip}`, the constructor with only the base
iterator is called `inherited_iterator_base(base_t it)`.
However, the `test_iterator` also has a member `last`, which in this
case would be defaulted to a `nullptr` (the std::vector<int> iterator
decays to a int*). This means that for `std::ranges::copy` `first !=
last` will always be false.

The fix is to properly implement `inherited_iterator_base`'s operators
that return a copy to first copy the derived iterator instead of
constructing a new one.
@seqan-actions seqan-actions added lint [INTERNAL] signal for linting and removed lint [INTERNAL] signal for linting labels Jul 18, 2024
@eseiler eseiler enabled auto-merge July 18, 2024 16:08
@eseiler eseiler merged commit 7c80e35 into seqan:main Jul 18, 2024
38 checks passed
@eseiler eseiler deleted the infra/ci branch July 18, 2024 16:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants