Description
In the context of the boost migration, we ran into some issues and then added a defensive run-export from libboost-python-devel
to libboost
(rather than just libboost-python
).
This is not the cleanest way to do it, and Isuru suggested adding error_overlinking
in the migrator. I don't want to couple this with the boost migration though, because I spent a lot of time looking at the CI of basically all the boost migration PRs, to check whether packages actually needed the boost libraries, or just the headers (or vice versa).
And it's pretty clear that many feedstocks do not care much about their link check, as long as the CI is green (i.e. probably >90% of the PRs I inspected had some linkage issues flagged).
Still, while very painful, I think it'd be a worthwhile clean-up to do in conda-forge as a whole. So I thought I'd open this issue so that we can do this in a way where we don't single out one specific migration to bear the brunt of that pain, and can move from feedstock to feedstock at a more leisurely pace.
However, this would need a couple of things to figure out IMO, at least where some packages show up in the link check in a way that's not the fault of the recipe, or despite being actually needed:
- compiler-runtimes on windows:
ucrt
/vc14_runtime
are added defensively, even though they're not always used - same for
libcxx
for C++ on osx - numpy has a linkage mechanism that apparently(?) isn't understood by the link check
- python itself often shows up
- etc.
We might be able to improve the first two by using {{ stdlib("c") }}
and perhaps even {{ stdlib("cxx") }}
(once it lands...) as explicit dependencies in recipes, rather than always adding it in the compiler, but in general, I think we should have answers (or exceptions) for these cases, so we don't force all feedstocks to pointlessly add ignore_run_exports_from:
everywhere.
Thoughts?