diff --git a/.ci_support/linux_64_python3.10.____cpython.yaml b/.ci_support/linux_64_python3.10.____cpython.yaml index cfaee97..25ec599 100644 --- a/.ci_support/linux_64_python3.10.____cpython.yaml +++ b/.ci_support/linux_64_python3.10.____cpython.yaml @@ -5,9 +5,9 @@ c_compiler_version: c_stdlib: - sysroot c_stdlib_version: -- '2.12' +- '2.17' cdt_name: -- cos6 +- cos7 channel_sources: - conda-forge channel_targets: diff --git a/.ci_support/linux_64_python3.11.____cpython.yaml b/.ci_support/linux_64_python3.11.____cpython.yaml index 176f935..4176ed1 100644 --- a/.ci_support/linux_64_python3.11.____cpython.yaml +++ b/.ci_support/linux_64_python3.11.____cpython.yaml @@ -5,9 +5,9 @@ c_compiler_version: c_stdlib: - sysroot c_stdlib_version: -- '2.12' +- '2.17' cdt_name: -- cos6 +- cos7 channel_sources: - conda-forge channel_targets: diff --git a/.ci_support/linux_64_python3.12.____cpython.yaml b/.ci_support/linux_64_python3.12.____cpython.yaml index 3795d8d..c41c62b 100644 --- a/.ci_support/linux_64_python3.12.____cpython.yaml +++ b/.ci_support/linux_64_python3.12.____cpython.yaml @@ -5,9 +5,9 @@ c_compiler_version: c_stdlib: - sysroot c_stdlib_version: -- '2.12' +- '2.17' cdt_name: -- cos6 +- cos7 channel_sources: - conda-forge channel_targets: diff --git a/.ci_support/linux_64_python3.8.____cpython.yaml b/.ci_support/linux_64_python3.8.____cpython.yaml index 298d1de..270bf23 100644 --- a/.ci_support/linux_64_python3.8.____cpython.yaml +++ b/.ci_support/linux_64_python3.8.____cpython.yaml @@ -5,9 +5,9 @@ c_compiler_version: c_stdlib: - sysroot c_stdlib_version: -- '2.12' +- '2.17' cdt_name: -- cos6 +- cos7 channel_sources: - conda-forge channel_targets: diff --git a/.ci_support/linux_64_python3.9.____cpython.yaml b/.ci_support/linux_64_python3.9.____cpython.yaml index 014b623..dbb80cb 100644 --- a/.ci_support/linux_64_python3.9.____cpython.yaml +++ b/.ci_support/linux_64_python3.9.____cpython.yaml @@ -5,9 +5,9 @@ c_compiler_version: c_stdlib: - sysroot c_stdlib_version: -- '2.12' +- '2.17' cdt_name: -- cos6 +- cos7 channel_sources: - conda-forge channel_targets: diff --git a/.ci_support/migrations/numpy2.yaml b/.ci_support/migrations/numpy2.yaml new file mode 100644 index 0000000..4e6d3ca --- /dev/null +++ b/.ci_support/migrations/numpy2.yaml @@ -0,0 +1,48 @@ +__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, 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, 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 + +# 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 +migrator_ts: 1713572489.295986 diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh index cf74978..bea78c6 100755 --- a/.scripts/build_steps.sh +++ b/.scripts/build_steps.sh @@ -80,6 +80,13 @@ else --suppress-variables ${EXTRA_CB_OPTIONS:-} \ --clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml" \ --extra-meta flow_run_id="${flow_run_id:-}" remote_url="${remote_url:-}" sha="${sha:-}" + + ( startgroup "Inspecting artifacts" ) 2> /dev/null + + # inspect_artifacts was only added in conda-forge-ci-setup 4.6.0 + command -v inspect_artifacts >/dev/null 2>&1 && inspect_artifacts || echo "inspect_artifacts needs conda-forge-ci-setup >=4.6.0" + + ( endgroup "Inspecting artifacts" ) 2> /dev/null ( startgroup "Validating outputs" ) 2> /dev/null validate_recipe_outputs "${FEEDSTOCK_NAME}" diff --git a/.scripts/run_osx_build.sh b/.scripts/run_osx_build.sh index 07dff21..ba0c879 100755 --- a/.scripts/run_osx_build.sh +++ b/.scripts/run_osx_build.sh @@ -85,6 +85,13 @@ else --suppress-variables ${EXTRA_CB_OPTIONS:-} \ --clobber-file ./.ci_support/clobber_${CONFIG}.yaml \ --extra-meta flow_run_id="$flow_run_id" remote_url="$remote_url" sha="$sha" + + ( startgroup "Inspecting artifacts" ) 2> /dev/null + + # inspect_artifacts was only added in conda-forge-ci-setup 4.6.0 + command -v inspect_artifacts >/dev/null 2>&1 && inspect_artifacts || echo "inspect_artifacts needs conda-forge-ci-setup >=4.6.0" + + ( endgroup "Inspecting artifacts" ) 2> /dev/null ( startgroup "Validating outputs" ) 2> /dev/null validate_recipe_outputs "${FEEDSTOCK_NAME}" diff --git a/.scripts/run_win_build.bat b/.scripts/run_win_build.bat index 6d54697..65650bf 100755 --- a/.scripts/run_win_build.bat +++ b/.scripts/run_win_build.bat @@ -58,6 +58,11 @@ echo Building recipe conda-build.exe "recipe" -m .ci_support\%CONFIG%.yaml --suppress-variables %EXTRA_CB_OPTIONS% if !errorlevel! neq 0 exit /b !errorlevel! +call :start_group "Inspecting artifacts" +:: inspect_artifacts was only added in conda-forge-ci-setup 4.6.0 +WHERE inspect_artifacts >nul 2>nul && inspect_artifacts || echo "inspect_artifacts needs conda-forge-ci-setup >=4.6.0" +call :end_group + :: Prepare some environment variables for the upload step if /i "%CI%" == "github_actions" ( set "FEEDSTOCK_NAME=%GITHUB_REPOSITORY:*/=%" diff --git a/conda-forge.yml b/conda-forge.yml index f1f9d86..ec88772 100644 --- a/conda-forge.yml +++ b/conda-forge.yml @@ -1,6 +1,6 @@ build_platform: - osx_arm64: osx_64 linux_aarch64: linux_64 + osx_arm64: osx_64 conda_build: pkg_format: '2' conda_forge_output_validation: true diff --git a/recipe/meta.yaml b/recipe/meta.yaml index c862d8f..6cee2d3 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -16,7 +16,7 @@ build: # https://conda-forge.org/blog/posts/2020-03-10-pypy/ # https://conda-forge.org/docs/maintainer/knowledge_base.html?highlight=pypy skip: True # [python_impl == 'pypy'] - number: 2 + number: 3 preserve_egg_dir: yes script: {{ PYTHON }} -m pip install . --no-deps --ignore-installed --no-cache-dir -vvv entry_points: @@ -37,16 +37,16 @@ requirements: build: - python # [build_platform != target_platform] - cross-python_{{ target_platform }} # [build_platform != target_platform] - - numpy <2 # [build_platform != target_platform] + - numpy <2.0dev0 # [build_platform != target_platform] - {{ compiler('c') }} - {{ stdlib("c") }} host: - python - pip - setuptools - - numpy <2 + - numpy <2.0dev0 - scipy - - matplotlib-base + - matplotlib-base <3.9 - lxml - sqlalchemy - requests @@ -54,9 +54,9 @@ requirements: run: - python - setuptools - - numpy >=1.20,<2 + - numpy >=1.20,<2.0dev0 - scipy >=1.7 - - matplotlib-base >=3.3 + - matplotlib-base >=3.3,<3.9 - lxml - sqlalchemy <2.0 - requests