From b1830b93f055e902efffe27aaac98afec7ef11f8 Mon Sep 17 00:00:00 2001 From: regro-cf-autotick-bot <36490558+regro-cf-autotick-bot@users.noreply.github.com> Date: Sun, 8 Sep 2024 11:51:00 +0000 Subject: [PATCH 1/2] Rebuild for numpy 2.0 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). --- .ci_support/migrations/numpy2.yaml | 52 ++++++++++++++++++++++++++++++ recipe/meta.yaml | 2 +- 2 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 .ci_support/migrations/numpy2.yaml diff --git a/.ci_support/migrations/numpy2.yaml b/.ci_support/migrations/numpy2.yaml new file mode 100644 index 0000000..fd981b8 --- /dev/null +++ b/.ci_support/migrations/numpy2.yaml @@ -0,0 +1,52 @@ +__migrator: + build_number: 1 + kind: version + commit_message: | + Rebuild for numpy 2.0 + + 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). + + migration_number: 1 + +# needs to match length of zip {python, python_impl, numpy} +# as it is in global CBC in order to override it +numpy: + - 2.0 + - 2.0 + - 2.0 + - 2.0 +migrator_ts: 1713572489.295986 diff --git a/recipe/meta.yaml b/recipe/meta.yaml index 2cb7c99..f872037 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -12,7 +12,7 @@ source: - 305.patch build: - number: 1 + number: 2 outputs: - name: manif From 64b2dbcf50ecdf9b770878d5865fd2bbe43eb22a Mon Sep 17 00:00:00 2001 From: regro-cf-autotick-bot <36490558+regro-cf-autotick-bot@users.noreply.github.com> Date: Sun, 8 Sep 2024 11:51:54 +0000 Subject: [PATCH 2/2] MNT: Re-rendered with conda-build 24.7.1, conda-smithy 3.39.1, and conda-forge-pinning 2024.09.07.19.33.02 --- .ci_support/linux_64_.yaml | 8 ++++---- .ci_support/linux_aarch64_.yaml | 8 ++++---- .ci_support/linux_ppc64le_.yaml | 8 ++++---- .ci_support/osx_64_.yaml | 8 ++++---- .ci_support/osx_arm64_.yaml | 8 ++++---- .ci_support/win_64_.yaml | 8 ++++---- 6 files changed, 24 insertions(+), 24 deletions(-) diff --git a/.ci_support/linux_64_.yaml b/.ci_support/linux_64_.yaml index 4366939..a561a97 100644 --- a/.ci_support/linux_64_.yaml +++ b/.ci_support/linux_64_.yaml @@ -19,10 +19,10 @@ cxx_compiler_version: docker_image: - quay.io/condaforge/linux-anvil-cos7-x86_64 numpy: -- '1.22' -- '1.23' -- '1.26' -- '1.22' +- '2.0' +- '2.0' +- '2.0' +- '2.0' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/linux_aarch64_.yaml b/.ci_support/linux_aarch64_.yaml index a3e0abf..ac8c5bb 100644 --- a/.ci_support/linux_aarch64_.yaml +++ b/.ci_support/linux_aarch64_.yaml @@ -23,10 +23,10 @@ cxx_compiler_version: docker_image: - quay.io/condaforge/linux-anvil-aarch64 numpy: -- '1.22' -- '1.23' -- '1.26' -- '1.22' +- '2.0' +- '2.0' +- '2.0' +- '2.0' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/linux_ppc64le_.yaml b/.ci_support/linux_ppc64le_.yaml index c7e9480..e7b261e 100644 --- a/.ci_support/linux_ppc64le_.yaml +++ b/.ci_support/linux_ppc64le_.yaml @@ -19,10 +19,10 @@ cxx_compiler_version: docker_image: - quay.io/condaforge/linux-anvil-ppc64le numpy: -- '1.22' -- '1.23' -- '1.26' -- '1.22' +- '2.0' +- '2.0' +- '2.0' +- '2.0' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/osx_64_.yaml b/.ci_support/osx_64_.yaml index 3c18d8d..0ce054b 100644 --- a/.ci_support/osx_64_.yaml +++ b/.ci_support/osx_64_.yaml @@ -21,10 +21,10 @@ cxx_compiler_version: macos_machine: - x86_64-apple-darwin13.4.0 numpy: -- '1.22' -- '1.23' -- '1.26' -- '1.22' +- '2.0' +- '2.0' +- '2.0' +- '2.0' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/osx_arm64_.yaml b/.ci_support/osx_arm64_.yaml index 37aa044..828d7da 100644 --- a/.ci_support/osx_arm64_.yaml +++ b/.ci_support/osx_arm64_.yaml @@ -21,10 +21,10 @@ cxx_compiler_version: macos_machine: - arm64-apple-darwin20.0.0 numpy: -- '1.22' -- '1.23' -- '1.26' -- '1.22' +- '2.0' +- '2.0' +- '2.0' +- '2.0' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/win_64_.yaml b/.ci_support/win_64_.yaml index 14d70e8..8dcadb9 100644 --- a/.ci_support/win_64_.yaml +++ b/.ci_support/win_64_.yaml @@ -9,10 +9,10 @@ channel_targets: cxx_compiler: - vs2019 numpy: -- '1.22' -- '1.23' -- '1.26' -- '1.22' +- '2.0' +- '2.0' +- '2.0' +- '2.0' pin_run_as_build: python: min_pin: x.x