-
-
Notifications
You must be signed in to change notification settings - Fork 15
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
RFC: remove track_features to weigh down newer sysroot #68
Comments
I noticed that For removing track_features to be a complete solution, sysroot would need a runtime constraint on
The exact technical solution is less relevant, and may need one or more additional (meta-)packages. My main goal is confining the weighing-down of sysroot to conda-forge builds, as it isn't appropriate elsewhere. |
which I think looks a bit similar to what we have now, but instead of weighing down each sysroot > 2.17 in inverse version order, we have:
(and apply this to all sysroot versions), such that:
(if that is in fact how weighing-down features behaves) That leaves only one situation that we haven't technically had an issue with (I think), but might want to be able to express explicitly: "runtime-compilation", which should exclude the unsatisfiable sysroots, e.g. a metapackage that only depends directly on an exact sysroot and matching glibc bound: - sysroot x.y
- __glibc >= x.y I'm not sure this is worth having or not. |
We discussed this and related topics at today's core meeting; see conda-forge/conda-forge.github.io#2267 . I gave Bioconda as an example for those downstream users (previously mentioned at conda-forge/conda-forge-pinning-feedstock#6070 (comment) ) whose recipes have not yet been adjusted to use the Furthermore (and this is a rough paraphrasing from memory, so feel free to correct me), in the meeting @isuruf pointed out that we should take care to understand the different uses/intended use cases thoroughly so we can come up with solutions that accomplish the intended goals (without breaking others or missing the actual goals). |
+100%, absolutely. If I have time, I'll try to propose a solution and what will happen in as many real situations as I can come up with, which should help with deciding when the deprecation window should end and what needs to be communicated and where |
Summary
I think we should remove
track_features
from this package to allow the latest supported sysroot to be installed by default by the solver, instead relying on pinning such asc_stdlib_version
. It seems thec_stdlib
migration means we can do that soon, if not now.Action items:
Background
This discussion has been spread out over various issues and merged PRs without resolution as part of the
c_stdlib
andcos7
migrations. I'm trying to consolidate this discussion to a single topic so it can come to a resolution independent of all the other related issues where it has come up without being resolved.Refs:
strong_constrains
onsysroot_{{ target_platform }}
? #63{{ stdlib("c") }}
migration conda-forge.github.io#2102Key points:
sysroot
at build time governs the minimum version of the glibc runtime requirement. The lower the sysroot, the more widely distributable the results will be.c_stdlib_version
is how we specify the sysroot version in conda-forge infrastructure (starting in March, 2024)track_features
is used to "weigh down" thesysroot_linux
packages, so that we can influence the 'default' sysroot version installed when no pinning is appliedtrack_features
is removed, the latest sysroot compatible with the host environment would be installed when no pinning is appliedReasons to remove
track_features
strong_constrains
onsysroot_{{ target_platform }}
? #63), default sysroot is often older than the oldest glibc supported by dependenciesc_stdlib_version
Reasons to keep
track_features
__glibc<=2.27
Rest
As I understand the various issues, removing the
track_features
changes the "maximum compatibility" sysroot/glibc behavior from opt-out to opt-in, but breaks nothing, and simplifies things for users and packagers alike.Is there anything I'm missing? @isuruf made comments suggesting that things would be 'broken' by doing this, but I don't see how this is the case. The main situations I can see are summarized as:
c_stdlib_version
, not affected)Which, to me, is a general improvement over the situation currently produced by track_features in all situations.
The text was updated successfully, but these errors were encountered: