Skip to content

Separate long-term migration for error_overlinking: true? #2015

Open
@h-vetinari

Description

@h-vetinari

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions