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

Drop -ng suffix for runtime libraries, but keep compat-wrappers #148

Merged
merged 10 commits into from
Aug 27, 2024

Conversation

h-vetinari
Copy link
Member

This is a follow-up to a long-standing transition that has been in stasis. As noted in #134

Longterm it would be nice to get rid of the runtime suffix everywhere; the last respective linux builds are:

This should be fixable with some simple run-constraints (plus keeping -ng as a wrapper until we've switched over the strong run-exports for maybe a few years).

The windows variants never introduced the suffix in the first place; drop it for the others too, but keep compatibility wrappers for a good while.

@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/meta.yaml) and found it was in an excellent condition.

@h-vetinari
Copy link
Member Author

h-vetinari commented Aug 6, 2024

@conda-forge-admin, please rerender

@h-vetinari
Copy link
Member Author

h-vetinari commented Aug 6, 2024

Draft due to rerendering errors: conda-forge/conda-smithy#2012

@h-vetinari h-vetinari marked this pull request as ready for review August 7, 2024 04:00
@h-vetinari
Copy link
Member Author

This is ready now @conda-forge/ctng-compilers; I recommend to review commit by commit, the diff makes more sense that way.

@h-vetinari
Copy link
Member Author

For some reason, ee7613f had fallen out of the last rebase - sorry.

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.

This would break all downstream recipes with error_overlinking: true. Probably needs a run_exports section in libgcc-ng to fix that.

@isuruf
Copy link
Member

isuruf commented Aug 12, 2024

We also need to run a mini-migrator that changes

ignore_run_exports:
  - libstdcxx-ng

to

ignore_run_exports_from:
  - {{ compiler('cxx') }}

@h-vetinari
Copy link
Member Author

This would break all downstream recipes with error_overlinking: true. Probably needs a run_exports section in libgcc-ng to fix that.

My plan was to update the compiler activation as well of course. I don't think many recipes depend directly on libgcc-ng or libgfortran...? There's 5 feedstocks that have an explicit build or host dep on the -ng libraries (plus a handful that have a run-dep that should instead rely on the run-export). That said, I don't mind putting a run-export on libgcc-ng as an additional safety.

We also need to run a mini-migrator [...]

Looking around, this only affects about 20 recipes. I think it would be less effort to fix them manually (I can do that) than write a migrator for all corner cases (and attach it to which migration...?).

@h-vetinari
Copy link
Member Author

OK, I've opened PRs for every feedstock that uses one of the -ng libraries somewhere in meta.yaml, with the following exceptions:

This leaves the following to-dos (not counting above-linked PRs that are green already):

@h-vetinari
Copy link
Member Author

h-vetinari commented Aug 26, 2024

@isuruf, with the exception of ncurses & tzdata awaiting merge (and cuda-nvcc-impl/deno which need this PR), all buildable feedstocks (i.e non-failing CI) are now free of -ng packages in build/host/ignore. For run-deps I'm going to add a lint-check, but this needs this PR first. Could you PTAL?

recipe/meta.yaml Outdated Show resolved Hide resolved
h-vetinari and others added 2 commits August 27, 2024 09:34
Avoid conflicts between new packages and older `-ng` builds with the
same version; this commit can be reverted once we drop GCC 14 support.

Co-authored-by: Isuru Fernando <[email protected]>
@h-vetinari
Copy link
Member Author

All good now?

@isuruf isuruf merged commit 8853ee7 into conda-forge:main Aug 27, 2024
64 checks passed
@isuruf
Copy link
Member

isuruf commented Aug 27, 2024

Thanks

@SylvainCorlay
Copy link
Member

Hey @h-vetinari this seems to be causing clobbering between libgcc and libgcc-ng. Is this expected ?

@SylvainCorlay
Copy link
Member

If we have an environment with just libgcc-ng 14.1.0 and no libgcc, when a user modifies the environment it results in libgcc 14.1.0 being added, with the warning:

Warning  libmamba [libgcc-14.1.0-h77fa898_1] The following files were already present in the environment:
    - lib/libatomic.so
    - lib/libatomic.so.1
    - lib/libatomic.so.1.2.0
    - lib/libgcc_s.so
    - lib/libgcc_s.so.1
    - lib/libitm.so
    - lib/libitm.so.1
    - lib/libitm.so.1.0.0
    - lib/libquadmath.so
    - lib/libquadmath.so.0
    - lib/libquadmath.so.0.0.0
    - share/info/libgomp.info
    - share/info/libquadmath.info
    - share/licenses/gcc-libs/RUNTIME.LIBRARY.EXCEPTION
and then this results in all of those "colliding" files not being in the environment anymore!

@h-vetinari
Copy link
Member Author

Hey @h-vetinari this seems to be causing clobbering between libgcc and libgcc-ng. Is this expected ?

Sorry about that. This shouldn't be possible based on the very tight run-constraints that we've added. Could you please open an issue with more details?

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