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

Add testing against older clangs on osx #127

Merged
merged 2 commits into from
Aug 12, 2023
Merged

Conversation

h-vetinari
Copy link
Member

@h-vetinari h-vetinari commented Jul 30, 2023

This is my hypothesis, given that I hadn't noticed that the last libcxx-testing build still required clang 11! Should be fixed now by conda-forge/libcxx-testing-feedstock#2

See below

@conda-forge-webservices
Copy link

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

@h-vetinari h-vetinari changed the title Undo patch that was only necessary for outdated downstream test Restrict patch for outdated downstream test to linux64 Jul 30, 2023
isuruf
isuruf previously requested changes Jul 30, 2023
Copy link
Member

@isuruf isuruf left a comment

Choose a reason for hiding this comment

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

We are using older clangs with newer libcxx. For eg: cling, root, etc.

@h-vetinari
Copy link
Member Author

h-vetinari commented Jul 30, 2023

We are using older clangs with newer libcxx.

That's a tricky situation, but it simply does not work indefinitely. It would have stopped with LLVM 16 already if I hadn't managed to revert the patch that caused the test with clang 11 to fail. It's going to get harder and harder for ever-older clangs to use current libcxx (and that setup basically gets zero testing).

Which of course is a problem because everything is geared towards only using newest libcxx (which thus becomes a run-dep of most compiled packages), see also conda-forge/clangdev-feedstock#188

So how do we square that circle?

  • Stop upgrading LLVM?
  • Leave cling/root/etc. in a frozen ecosystem of old libcxx?
  • Manage a policy/transition somehow, where newer libcxx has a lower bound for the clang it supports?

Independently of which approach we choose, I really think we need to start testing these things, otherwise we're flying blind. What would you think about building libcxx-testing for a range of clang versions, and versioning libcxx-testing with something like 0.{{ CLANG_MAJOR }}. Then we could expand the downstream test here to something like:

      downstreams:              # [osx]
        - python-symengine      # [osx]
        - openturns             # [osx]
        # test current libcxx against a range of clang builds;
        # version correspondence is 0.{{ CLANG_MAJOR }} 
        - libcxx-testing 0.16   # [osx]
        - libcxx-testing 0.15   # [osx]
        - libcxx-testing 0.14   # [osx]
        - libcxx-testing 0.13   # [osx]
        - libcxx-testing 0.12   # [osx]
        - libcxx-testing 0.11   # [osx]
        - [however far down we manage...?]

Assuming this shows a bunch of failures, I suggest that it would be up to cling/root etc. to propose fixes. IMO it must remain a question of best-effort to support ancient compiler versions, where our entire infrastructure has moved on already. But with the above setup, at least we'd have a better picture of what would need fixing, resp. which combinations of new libcxx with old clang still work.

@h-vetinari
Copy link
Member Author

Note that, compared to libcxx's support policy, we're pretty far out on a limb here - officially supported are only the last two stable releases.

Obviously we've been able to stretch this quite a bit further, and I'm not against it if it works, but that just means that at any point we could encounter a degree of breakage with old clangs that's beyond salvaging (I'm against heavily patching libcxx for that purpose - that's potentially a huge amount of work but more importantly: way more risk to get something wrong).

In any case, I have a implemented the testing idea in conda-forge/libcxx-testing-feedstock#3.

@h-vetinari h-vetinari changed the title Restrict patch for outdated downstream test to linux64 Add testing against older clangs Aug 12, 2023
@h-vetinari h-vetinari changed the title Add testing against older clangs Add testing against older clangs on osx Aug 12, 2023
@h-vetinari h-vetinari marked this pull request as ready for review August 12, 2023 03:02
@h-vetinari h-vetinari dismissed isuruf’s stale review August 12, 2023 03:03

Still builds down to clang 11, as before (I kept the revert also on osx; contrary to the state of the PR at the time of the change request)

@h-vetinari h-vetinari merged commit 3a0e628 into conda-forge:main Aug 12, 2023
@h-vetinari h-vetinari deleted the C11 branch August 12, 2023 03:06
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.

2 participants