From d8c33f59d2b8114d0f26913195e452b8b2edd319 Mon Sep 17 00:00:00 2001 From: regro-cf-autotick-bot <36490558+regro-cf-autotick-bot@users.noreply.github.com> Date: Thu, 6 Jun 2024 16:35:26 +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 numpy 2.0 package itself is currently only available from a special release channel (`conda-forge/label/numpy_rc`) and will not be available on the main `conda-forge` channel until the release of numpy 2.0 GA. 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, 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). Note that the numpy release candidate promises to be ABI-compatible with the final 2.0 release. This means that building against 2.0.0rc1 produces packages that can be published to our main channels. If you already want to use the numpy 2.0 release candidate yourself, you can do ``` conda config --add channels conda-forge/label/numpy_rc ``` or add this channel to your `.condarc` file directly. ### 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, nothing else should be necessary in most cases. * If upstream requires a minimum numpy version newer than 1.19, you can 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 | 74 ++++++++++++++++++++++++++++++ recipe/meta.yaml | 2 +- 2 files changed, 75 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..d70edeb --- /dev/null +++ b/.ci_support/migrations/numpy2.yaml @@ -0,0 +1,74 @@ +__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 numpy 2.0 package itself is currently only available from a special release + channel (`conda-forge/label/numpy_rc`) and will not be available on the main + `conda-forge` channel until the release of numpy 2.0 GA. + + 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, 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). + + Note that the numpy release candidate promises to be ABI-compatible with the + final 2.0 release. This means that building against 2.0.0rc1 produces packages + that can be published to our main channels. + + If you already want to use the numpy 2.0 release candidate yourself, you can do + ``` + conda config --add channels conda-forge/label/numpy_rc + ``` + or add this channel to your `.condarc` file directly. + + ### 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, nothing else should be necessary in most cases. + * If upstream requires a minimum numpy version newer than 1.19, you can 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 + exclude: + # needs local overrides that get stomped on by the migrator, which then fails + - scipy + # already done, but thinks its unsolvable + - pandas + ordering: + # prefer channels including numpy_rc (otherwise smithy doesn't + # know which of the two values should be taken on merge) + channel_sources: + - conda-forge + - conda-forge/label/numpy_rc,conda-forge + +# needs to match length of zip {python, python_impl, numpy} +# as it is in global CBC in order to override it +numpy: + - 1.22 # no py38 support for numpy 2.0 + - 2.0 + - 2.0 + - 2.0 + - 2.0 +channel_sources: + - conda-forge/label/numpy_rc,conda-forge +migrator_ts: 1713572489.295986 diff --git a/recipe/meta.yaml b/recipe/meta.yaml index bedf1a9..8f0b37c 100755 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -14,7 +14,7 @@ source: build: skip: True # [osx] skip: True # [win] - number: 4 + number: 5 requirements: build: - {{ compiler('cxx') }} From 6ddcde5a074d4e09c54527dc2796c186af83fd02 Mon Sep 17 00:00:00 2001 From: regro-cf-autotick-bot <36490558+regro-cf-autotick-bot@users.noreply.github.com> Date: Thu, 6 Jun 2024 16:36:31 +0000 Subject: [PATCH 2/2] MNT: Re-rendered with conda-build 24.5.1, conda-smithy 3.36.1, and conda-forge-pinning 2024.06.06.15.07.08 --- .azure-pipelines/azure-pipelines-linux.yml | 20 +++++---- ...nux_64_numpy1.22python3.8.____cpython.yaml | 2 +- ...ux_64_numpy2.0python3.10.____cpython.yaml} | 4 +- ...ux_64_numpy2.0python3.11.____cpython.yaml} | 4 +- ...nux_64_numpy2.0python3.12.____cpython.yaml | 45 +++++++++++++++++++ ...nux_64_numpy2.0python3.9.____cpython.yaml} | 4 +- .ci_support/migrations/boost1840.yaml | 10 ----- .gitattributes | 4 +- README.md | 23 ++++++---- 9 files changed, 81 insertions(+), 35 deletions(-) rename .ci_support/{linux_64_numpy1.22python3.10.____cpython.yaml => linux_64_numpy2.0python3.10.____cpython.yaml} (92%) rename .ci_support/{linux_64_numpy1.23python3.11.____cpython.yaml => linux_64_numpy2.0python3.11.____cpython.yaml} (92%) create mode 100644 .ci_support/linux_64_numpy2.0python3.12.____cpython.yaml rename .ci_support/{linux_64_numpy1.22python3.9.____cpython.yaml => linux_64_numpy2.0python3.9.____cpython.yaml} (92%) delete mode 100644 .ci_support/migrations/boost1840.yaml diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml index 0c1effd..c06a2c8 100755 --- a/.azure-pipelines/azure-pipelines-linux.yml +++ b/.azure-pipelines/azure-pipelines-linux.yml @@ -8,20 +8,24 @@ jobs: vmImage: ubuntu-latest strategy: matrix: - linux_64_numpy1.22python3.10.____cpython: - CONFIG: linux_64_numpy1.22python3.10.____cpython - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64 linux_64_numpy1.22python3.8.____cpython: CONFIG: linux_64_numpy1.22python3.8.____cpython UPLOAD_PACKAGES: 'True' DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64 - linux_64_numpy1.22python3.9.____cpython: - CONFIG: linux_64_numpy1.22python3.9.____cpython + linux_64_numpy2.0python3.10.____cpython: + CONFIG: linux_64_numpy2.0python3.10.____cpython + UPLOAD_PACKAGES: 'True' + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64 + linux_64_numpy2.0python3.11.____cpython: + CONFIG: linux_64_numpy2.0python3.11.____cpython + UPLOAD_PACKAGES: 'True' + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64 + linux_64_numpy2.0python3.12.____cpython: + CONFIG: linux_64_numpy2.0python3.12.____cpython UPLOAD_PACKAGES: 'True' DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64 - linux_64_numpy1.23python3.11.____cpython: - CONFIG: linux_64_numpy1.23python3.11.____cpython + linux_64_numpy2.0python3.9.____cpython: + CONFIG: linux_64_numpy2.0python3.9.____cpython UPLOAD_PACKAGES: 'True' DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64 timeoutInMinutes: 360 diff --git a/.ci_support/linux_64_numpy1.22python3.8.____cpython.yaml b/.ci_support/linux_64_numpy1.22python3.8.____cpython.yaml index 3874789..19379b7 100644 --- a/.ci_support/linux_64_numpy1.22python3.8.____cpython.yaml +++ b/.ci_support/linux_64_numpy1.22python3.8.____cpython.yaml @@ -5,7 +5,7 @@ c_stdlib_version: cdt_name: - cos6 channel_sources: -- conda-forge +- conda-forge/label/numpy_rc,conda-forge channel_targets: - conda-forge main cxx_compiler: diff --git a/.ci_support/linux_64_numpy1.22python3.10.____cpython.yaml b/.ci_support/linux_64_numpy2.0python3.10.____cpython.yaml similarity index 92% rename from .ci_support/linux_64_numpy1.22python3.10.____cpython.yaml rename to .ci_support/linux_64_numpy2.0python3.10.____cpython.yaml index d2098ac..9d4532e 100644 --- a/.ci_support/linux_64_numpy1.22python3.10.____cpython.yaml +++ b/.ci_support/linux_64_numpy2.0python3.10.____cpython.yaml @@ -5,7 +5,7 @@ c_stdlib_version: cdt_name: - cos6 channel_sources: -- conda-forge +- conda-forge/label/numpy_rc,conda-forge channel_targets: - conda-forge main cxx_compiler: @@ -25,7 +25,7 @@ libboost_devel: libboost_python_devel: - '1.84' numpy: -- '1.22' +- '2.0' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/linux_64_numpy1.23python3.11.____cpython.yaml b/.ci_support/linux_64_numpy2.0python3.11.____cpython.yaml similarity index 92% rename from .ci_support/linux_64_numpy1.23python3.11.____cpython.yaml rename to .ci_support/linux_64_numpy2.0python3.11.____cpython.yaml index 956b31c..eefb7a6 100644 --- a/.ci_support/linux_64_numpy1.23python3.11.____cpython.yaml +++ b/.ci_support/linux_64_numpy2.0python3.11.____cpython.yaml @@ -5,7 +5,7 @@ c_stdlib_version: cdt_name: - cos6 channel_sources: -- conda-forge +- conda-forge/label/numpy_rc,conda-forge channel_targets: - conda-forge main cxx_compiler: @@ -25,7 +25,7 @@ libboost_devel: libboost_python_devel: - '1.84' numpy: -- '1.23' +- '2.0' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/linux_64_numpy2.0python3.12.____cpython.yaml b/.ci_support/linux_64_numpy2.0python3.12.____cpython.yaml new file mode 100644 index 0000000..5a21136 --- /dev/null +++ b/.ci_support/linux_64_numpy2.0python3.12.____cpython.yaml @@ -0,0 +1,45 @@ +c_stdlib: +- sysroot +c_stdlib_version: +- '2.12' +cdt_name: +- cos6 +channel_sources: +- conda-forge/label/numpy_rc,conda-forge +channel_targets: +- conda-forge main +cxx_compiler: +- gxx +cxx_compiler_version: +- '12' +docker_image: +- quay.io/condaforge/linux-anvil-cos7-x86_64 +fortran_compiler: +- gfortran +fortran_compiler_version: +- '12' +hdf5: +- 1.14.3 +libboost_devel: +- '1.84' +libboost_python_devel: +- '1.84' +numpy: +- '2.0' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.12.* *_cpython +suitesparse: +- '7' +target_platform: +- linux-64 +zip_keys: +- - c_stdlib_version + - cdt_name +- - cxx_compiler_version + - fortran_compiler_version +- - python + - numpy diff --git a/.ci_support/linux_64_numpy1.22python3.9.____cpython.yaml b/.ci_support/linux_64_numpy2.0python3.9.____cpython.yaml similarity index 92% rename from .ci_support/linux_64_numpy1.22python3.9.____cpython.yaml rename to .ci_support/linux_64_numpy2.0python3.9.____cpython.yaml index 8548c55..d823d16 100644 --- a/.ci_support/linux_64_numpy1.22python3.9.____cpython.yaml +++ b/.ci_support/linux_64_numpy2.0python3.9.____cpython.yaml @@ -5,7 +5,7 @@ c_stdlib_version: cdt_name: - cos6 channel_sources: -- conda-forge +- conda-forge/label/numpy_rc,conda-forge channel_targets: - conda-forge main cxx_compiler: @@ -25,7 +25,7 @@ libboost_devel: libboost_python_devel: - '1.84' numpy: -- '1.22' +- '2.0' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/migrations/boost1840.yaml b/.ci_support/migrations/boost1840.yaml deleted file mode 100644 index 5d6e74c..0000000 --- a/.ci_support/migrations/boost1840.yaml +++ /dev/null @@ -1,10 +0,0 @@ -__migrator: - build_number: 1 - kind: version - commit_message: "Rebuild for libboost 1.84" - migration_number: 1 -libboost_devel: -- "1.84" -libboost_python_devel: -- "1.84" -migrator_ts: 1700834511.141209 diff --git a/.gitattributes b/.gitattributes index 7f32763..18f114a 100644 --- a/.gitattributes +++ b/.gitattributes @@ -20,8 +20,8 @@ bld.bat text eol=crlf .travis.yml linguist-generated=true .scripts/* linguist-generated=true .woodpecker.yml linguist-generated=true -LICENSE.txt linguist-generated=true -README.md linguist-generated=true +/LICENSE.txt linguist-generated=true +/README.md linguist-generated=true azure-pipelines.yml linguist-generated=true build-locally.py linguist-generated=true shippable.yml linguist-generated=true diff --git a/README.md b/README.md index 6a1c569..38dece4 100644 --- a/README.md +++ b/README.md @@ -33,31 +33,38 @@ Current build status - + - + + + + - + - +
VariantStatus
linux_64_numpy1.22python3.10.____cpythonlinux_64_numpy1.22python3.8.____cpython - variant + variant
linux_64_numpy1.22python3.8.____cpythonlinux_64_numpy2.0python3.10.____cpython - variant + variant + +
linux_64_numpy2.0python3.11.____cpython + + variant
linux_64_numpy1.22python3.9.____cpythonlinux_64_numpy2.0python3.12.____cpython - variant + variant
linux_64_numpy1.23python3.11.____cpythonlinux_64_numpy2.0python3.9.____cpython - variant + variant