conda-forge / fenics-feedstock

A conda-smithy repository for fenics.
BSD 3-Clause "New" or "Revised" License
13 stars 12 forks source link

Rebuild for numpy 2.0 #223

Open regro-cf-autotick-bot opened 2 months ago

regro-cf-autotick-bot commented 2 months ago

This PR has been triggered in an effort to update numpy2.

Notes and instructions for merging this PR:

  1. Please merge the PR only after the tests have passed.
  2. Feel free to push to the bot's branch to update this PR if needed.

Please note that if you close this PR we presume that the feedstock has been rebuilt, so if you are going to perform the rebuild yourself don't close this PR until the your rebuild has been merged.


Here are some more details about this specific migrator:

TL;DR: The way we build against numpy has changed as of numpy 2.0. This bot PR has updated the recipe to account for the changes (see below for details).

The biggest change is that we no longer need to use the oldest available numpy version at build time in order to support old numpy version at runtime - numpy will by default use a compatible ABI for the oldest still-supported numpy versions.

Additionally, we no longer need to use {{ pin_compatible("numpy") }} as a run requirement - this has been handled for more than two years now by a run-export on the numpy package itself. The migrator will therefore remove any occurrences of this.

However, you will still need to add the lower bound for the numpy version, in line with what the upstream package requires. The default lower bound from the run-export is >=1.19; if your package needs a newer version than that, please add numpy >=x.y under run:.

Finally, by default, building against numpy 2.0 will assume that the package is compatible with numpy 2.0, which is not necessarily the case. You should check that the upstream package explicitly supports numpy 2.0, otherwise you need to add a - numpy <2.0dev0 run requirement until that happens (check numpy issue 26191 for an overview of the most important packages).

To-Dos:

  • [ ] Match run-requirements for numpy (i.e. check upstream pyproject.toml or however the project specifies numpy compatibility)
    • If upstream is not yet compatible with numpy 2.0, add numpy <2.0dev0 upper bound under run:.
    • If upstream is already compatible with numpy 2.0, double-check their supported numpy versions.
    • If upstream requires a minimum numpy version newer than 1.19, you need to add numpy >=x.y under run:.
  • [ ] Remove any remaining occurrences of {{ pin_compatible("numpy") }} that the bot may have missed.

PS. If the build does not compile anymore, this is almost certainly a sign that the upstream project is not yet ready for numpy 2.0; do not close this PR until a version compatible with numpy 2.0 has been released upstream and on this feedstock (in the meantime, you can keep the bot from reopening this PR in case of git conflicts by marking it as a draft).


If this PR was opened in error or needs to be updated please add the bot-rerun label to this PR. The bot will close this PR and schedule another one. If you do not have permissions to add this label, you can use the phrase code>@<space/conda-forge-admin, please rerun bot in a PR comment to have the conda-forge-admin add it for you.

This PR was created by the regro-cf-autotick-bot. The regro-cf-autotick-bot is a service to automatically track the dependency graph, migrate packages, and propose package version updates for conda-forge. Feel free to drop us a line if there are any issues! This PR was generated by - please use this URL for debugging.

conda-forge-webservices[bot] commented 2 months ago

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.

I do have some suggestions for making it better though...

For recipe/meta.yaml: