From 5502c7bc100093f04dd4d13f51d920290a949311 Mon Sep 17 00:00:00 2001 From: regro-cf-autotick-bot <36490558+regro-cf-autotick-bot@users.noreply.github.com> Date: Thu, 25 Jul 2024 12:34:13 +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, 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). --- .ci_support/migrations/numpy2.yaml | 48 ++++++++++++++++++++++++++++++ recipe/meta.yaml | 4 +-- 2 files changed, 50 insertions(+), 2 deletions(-) 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..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/recipe/meta.yaml b/recipe/meta.yaml index 377bd06..410e406 100644 --- a/recipe/meta.yaml +++ b/recipe/meta.yaml @@ -11,13 +11,14 @@ source: sha256: 63f22faaa593cb7256feb41c26a355c53448bc5b13b5f2dcb976025c3dad4eaf build: - number: 0 + number: 1 skip: true # [python_impl == 'pypy'] script: {{ PYTHON }} -m pip install . -vv requirements: build: - {{ compiler('c') }} + - {{ stdlib("c") }} host: - cython - numpy @@ -28,7 +29,6 @@ requirements: run: - typing-extensions - python - - {{ pin_compatible('numpy') }} - pyparsing - scipy - typing_extensions From d1bceeae114289b875ea0e7c5a51cd5a5c64b8c8 Mon Sep 17 00:00:00 2001 From: regro-cf-autotick-bot <36490558+regro-cf-autotick-bot@users.noreply.github.com> Date: Thu, 25 Jul 2024 12:35:07 +0000 Subject: [PATCH 2/2] MNT: Re-rendered with conda-build 24.5.1, conda-smithy 3.37.1, and conda-forge-pinning 2024.07.25.12.16.20 --- .azure-pipelines/azure-pipelines-linux.yml | 29 ++-- .azure-pipelines/azure-pipelines-osx.yml | 25 ++-- .azure-pipelines/azure-pipelines-win.yml | 75 +++-------- ...hon3.8.____cpythonpython_implcpython.yaml} | 10 +- ...on3.10.____cpythonpython_implcpython.yaml} | 10 +- ...on3.11.____cpythonpython_implcpython.yaml} | 10 +- ...hon3.12.____cpythonpython_implcpython.yaml | 34 +++++ ...hon3.9.____cpythonpython_implcpython.yaml} | 10 +- .ci_support/migrations/python311.yaml | 37 ------ ...hon3.8.____cpythonpython_implcpython.yaml} | 12 +- ...on3.10.____cpythonpython_implcpython.yaml} | 12 +- ...on3.11.____cpythonpython_implcpython.yaml} | 12 +- ...hon3.12.____cpythonpython_implcpython.yaml | 34 +++++ ...hon3.9.____cpythonpython_implcpython.yaml} | 12 +- ...hon3.8.____cpythonpython_implcpython.yaml} | 4 +- ...on3.10.____cpythonpython_implcpython.yaml} | 4 +- ...on3.11.____cpythonpython_implcpython.yaml} | 4 +- ...hon3.12.____cpythonpython_implcpython.yaml | 24 ++++ ...hon3.9.____cpythonpython_implcpython.yaml} | 4 +- .gitattributes | 4 +- .gitignore | 25 +++- .scripts/build_steps.sh | 22 ++- .scripts/logging_utils.sh | 4 +- .scripts/run_docker_build.sh | 9 ++ .scripts/run_osx_build.sh | 26 +++- .scripts/run_win_build.bat | 125 ++++++++++++++++++ README.md | 71 ++++++---- azure-pipelines.yml | 4 +- build-locally.py | 5 +- 29 files changed, 473 insertions(+), 184 deletions(-) rename .ci_support/{linux_64_numpy1.21python3.8.____cpythonpython_implcpython.yaml => linux_64_numpy1.22python3.8.____cpythonpython_implcpython.yaml} (79%) rename .ci_support/{linux_64_numpy1.21python3.10.____cpythonpython_implcpython.yaml => linux_64_numpy2.0python3.10.____cpythonpython_implcpython.yaml} (79%) rename .ci_support/{linux_64_numpy1.23python3.11.____cpythonpython_implcpython.yaml => linux_64_numpy2.0python3.11.____cpythonpython_implcpython.yaml} (79%) create mode 100644 .ci_support/linux_64_numpy2.0python3.12.____cpythonpython_implcpython.yaml rename .ci_support/{linux_64_numpy1.21python3.9.____cpythonpython_implcpython.yaml => linux_64_numpy2.0python3.9.____cpythonpython_implcpython.yaml} (79%) delete mode 100644 .ci_support/migrations/python311.yaml rename .ci_support/{osx_64_numpy1.21python3.8.____cpythonpython_implcpython.yaml => osx_64_numpy1.22python3.8.____cpythonpython_implcpython.yaml} (75%) rename .ci_support/{osx_64_numpy1.21python3.10.____cpythonpython_implcpython.yaml => osx_64_numpy2.0python3.10.____cpythonpython_implcpython.yaml} (75%) rename .ci_support/{osx_64_numpy1.23python3.11.____cpythonpython_implcpython.yaml => osx_64_numpy2.0python3.11.____cpythonpython_implcpython.yaml} (75%) create mode 100644 .ci_support/osx_64_numpy2.0python3.12.____cpythonpython_implcpython.yaml rename .ci_support/{osx_64_numpy1.21python3.9.____cpythonpython_implcpython.yaml => osx_64_numpy2.0python3.9.____cpythonpython_implcpython.yaml} (75%) rename .ci_support/{win_64_numpy1.21python3.8.____cpythonpython_implcpython.yaml => win_64_numpy1.22python3.8.____cpythonpython_implcpython.yaml} (92%) rename .ci_support/{win_64_numpy1.21python3.10.____cpythonpython_implcpython.yaml => win_64_numpy2.0python3.10.____cpythonpython_implcpython.yaml} (92%) rename .ci_support/{win_64_numpy1.23python3.11.____cpythonpython_implcpython.yaml => win_64_numpy2.0python3.11.____cpythonpython_implcpython.yaml} (92%) create mode 100644 .ci_support/win_64_numpy2.0python3.12.____cpythonpython_implcpython.yaml rename .ci_support/{win_64_numpy1.21python3.9.____cpythonpython_implcpython.yaml => win_64_numpy2.0python3.9.____cpythonpython_implcpython.yaml} (92%) create mode 100755 .scripts/run_win_build.bat diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml index 87900d0..cb2d841 100755 --- a/.azure-pipelines/azure-pipelines-linux.yml +++ b/.azure-pipelines/azure-pipelines-linux.yml @@ -8,30 +8,30 @@ jobs: vmImage: ubuntu-latest strategy: matrix: - linux_64_numpy1.21python3.10.____cpythonpython_implcpython: - CONFIG: linux_64_numpy1.21python3.10.____cpythonpython_implcpython + linux_64_numpy1.22python3.8.____cpythonpython_implcpython: + CONFIG: linux_64_numpy1.22python3.8.____cpythonpython_implcpython UPLOAD_PACKAGES: 'True' DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64 - linux_64_numpy1.21python3.8.____cpythonpython_implcpython: - CONFIG: linux_64_numpy1.21python3.8.____cpythonpython_implcpython + linux_64_numpy2.0python3.10.____cpythonpython_implcpython: + CONFIG: linux_64_numpy2.0python3.10.____cpythonpython_implcpython UPLOAD_PACKAGES: 'True' DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64 - linux_64_numpy1.21python3.9.____cpythonpython_implcpython: - CONFIG: linux_64_numpy1.21python3.9.____cpythonpython_implcpython + linux_64_numpy2.0python3.11.____cpythonpython_implcpython: + CONFIG: linux_64_numpy2.0python3.11.____cpythonpython_implcpython UPLOAD_PACKAGES: 'True' DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64 - linux_64_numpy1.23python3.11.____cpythonpython_implcpython: - CONFIG: linux_64_numpy1.23python3.11.____cpythonpython_implcpython + linux_64_numpy2.0python3.12.____cpythonpython_implcpython: + CONFIG: linux_64_numpy2.0python3.12.____cpythonpython_implcpython + UPLOAD_PACKAGES: 'True' + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64 + linux_64_numpy2.0python3.9.____cpythonpython_implcpython: + CONFIG: linux_64_numpy2.0python3.9.____cpythonpython_implcpython UPLOAD_PACKAGES: 'True' DOCKER_IMAGE: quay.io/condaforge/linux-anvil-cos7-x86_64 timeoutInMinutes: 360 + variables: {} steps: - - script: | - rm -rf /opt/ghc - df -h - displayName: Manage disk space - # configure qemu binfmt-misc running. This allows us to run docker containers # embedded qemu-static - script: | @@ -42,6 +42,9 @@ jobs: - script: | export CI=azure + export flow_run_id=azure_$(Build.BuildNumber).$(System.JobAttempt) + export remote_url=$(Build.Repository.Uri) + export sha=$(Build.SourceVersion) export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME}) if [[ "${BUILD_REASON:-}" == "PullRequest" ]]; then diff --git a/.azure-pipelines/azure-pipelines-osx.yml b/.azure-pipelines/azure-pipelines-osx.yml index 8241dc8..57bb4b2 100755 --- a/.azure-pipelines/azure-pipelines-osx.yml +++ b/.azure-pipelines/azure-pipelines-osx.yml @@ -5,27 +5,34 @@ jobs: - job: osx pool: - vmImage: macOS-11 + vmImage: macOS-12 strategy: matrix: - osx_64_numpy1.21python3.10.____cpythonpython_implcpython: - CONFIG: osx_64_numpy1.21python3.10.____cpythonpython_implcpython + osx_64_numpy1.22python3.8.____cpythonpython_implcpython: + CONFIG: osx_64_numpy1.22python3.8.____cpythonpython_implcpython UPLOAD_PACKAGES: 'True' - osx_64_numpy1.21python3.8.____cpythonpython_implcpython: - CONFIG: osx_64_numpy1.21python3.8.____cpythonpython_implcpython + osx_64_numpy2.0python3.10.____cpythonpython_implcpython: + CONFIG: osx_64_numpy2.0python3.10.____cpythonpython_implcpython UPLOAD_PACKAGES: 'True' - osx_64_numpy1.21python3.9.____cpythonpython_implcpython: - CONFIG: osx_64_numpy1.21python3.9.____cpythonpython_implcpython + osx_64_numpy2.0python3.11.____cpythonpython_implcpython: + CONFIG: osx_64_numpy2.0python3.11.____cpythonpython_implcpython UPLOAD_PACKAGES: 'True' - osx_64_numpy1.23python3.11.____cpythonpython_implcpython: - CONFIG: osx_64_numpy1.23python3.11.____cpythonpython_implcpython + osx_64_numpy2.0python3.12.____cpythonpython_implcpython: + CONFIG: osx_64_numpy2.0python3.12.____cpythonpython_implcpython + UPLOAD_PACKAGES: 'True' + osx_64_numpy2.0python3.9.____cpythonpython_implcpython: + CONFIG: osx_64_numpy2.0python3.9.____cpythonpython_implcpython UPLOAD_PACKAGES: 'True' timeoutInMinutes: 360 + variables: {} steps: # TODO: Fast finish on azure pipelines? - script: | export CI=azure + export flow_run_id=azure_$(Build.BuildNumber).$(System.JobAttempt) + export remote_url=$(Build.Repository.Uri) + export sha=$(Build.SourceVersion) export OSX_FORCE_SDK_DOWNLOAD="1" export GIT_BRANCH=$BUILD_SOURCEBRANCHNAME export FEEDSTOCK_NAME=$(basename ${BUILD_REPOSITORY_NAME}) diff --git a/.azure-pipelines/azure-pipelines-win.yml b/.azure-pipelines/azure-pipelines-win.yml index 093082c..18f5e9c 100755 --- a/.azure-pipelines/azure-pipelines-win.yml +++ b/.azure-pipelines/azure-pipelines-win.yml @@ -8,17 +8,20 @@ jobs: vmImage: windows-2022 strategy: matrix: - win_64_numpy1.21python3.10.____cpythonpython_implcpython: - CONFIG: win_64_numpy1.21python3.10.____cpythonpython_implcpython + win_64_numpy1.22python3.8.____cpythonpython_implcpython: + CONFIG: win_64_numpy1.22python3.8.____cpythonpython_implcpython UPLOAD_PACKAGES: 'True' - win_64_numpy1.21python3.8.____cpythonpython_implcpython: - CONFIG: win_64_numpy1.21python3.8.____cpythonpython_implcpython + win_64_numpy2.0python3.10.____cpythonpython_implcpython: + CONFIG: win_64_numpy2.0python3.10.____cpythonpython_implcpython UPLOAD_PACKAGES: 'True' - win_64_numpy1.21python3.9.____cpythonpython_implcpython: - CONFIG: win_64_numpy1.21python3.9.____cpythonpython_implcpython + win_64_numpy2.0python3.11.____cpythonpython_implcpython: + CONFIG: win_64_numpy2.0python3.11.____cpythonpython_implcpython UPLOAD_PACKAGES: 'True' - win_64_numpy1.23python3.11.____cpythonpython_implcpython: - CONFIG: win_64_numpy1.23python3.11.____cpythonpython_implcpython + win_64_numpy2.0python3.12.____cpythonpython_implcpython: + CONFIG: win_64_numpy2.0python3.12.____cpythonpython_implcpython + UPLOAD_PACKAGES: 'True' + win_64_numpy2.0python3.9.____cpythonpython_implcpython: + CONFIG: win_64_numpy2.0python3.9.____cpythonpython_implcpython UPLOAD_PACKAGES: 'True' timeoutInMinutes: 360 variables: @@ -26,6 +29,7 @@ jobs: UPLOAD_TEMP: D:\\tmp steps: + - task: PythonScript@0 displayName: 'Download Miniforge' inputs: @@ -44,52 +48,17 @@ jobs: displayName: Add conda to PATH - script: | - call activate base - mamba.exe install "python=3.10" conda-build conda pip boa conda-forge-ci-setup=3 -c conda-forge --strict-channel-priority --yes - displayName: Install conda-build - - - script: set PYTHONUNBUFFERED=1 - displayName: Set PYTHONUNBUFFERED - - # Configure the VM - - script: | - call activate base - setup_conda_rc .\ ".\recipe" .\.ci_support\%CONFIG%.yaml - displayName: conda-forge CI setup - - # Configure the VM. - - script: | - set "CI=azure" - call activate base - run_conda_forge_build_setup - displayName: conda-forge build setup - - - script: | - call activate base - if EXIST LICENSE.txt ( - copy LICENSE.txt "recipe\\recipe-scripts-license.txt" - ) - conda.exe mambabuild "recipe" -m .ci_support\%CONFIG%.yaml --suppress-variables %EXTRA_CB_OPTIONS% - displayName: Build recipe + call ".scripts\run_win_build.bat" + displayName: Run Windows build env: PYTHONUNBUFFERED: 1 - - script: | - set "FEEDSTOCK_NAME=%BUILD_REPOSITORY_NAME:*/=%" - call activate base - validate_recipe_outputs "%FEEDSTOCK_NAME%" - displayName: Validate Recipe Outputs - - - script: | - set "GIT_BRANCH=%BUILD_SOURCEBRANCHNAME%" - set "FEEDSTOCK_NAME=%BUILD_REPOSITORY_NAME:*/=%" - set "TEMP=$(UPLOAD_TEMP)" - if not exist "%TEMP%\" md "%TEMP%" - set "TMP=%TEMP%" - call activate base - upload_package --validate --feedstock-name="%FEEDSTOCK_NAME%" .\ ".\recipe" .ci_support\%CONFIG%.yaml - displayName: Upload package - env: + CONFIG: $(CONFIG) + CI: azure + flow_run_id: azure_$(Build.BuildNumber).$(System.JobAttempt) + remote_url: $(Build.Repository.Uri) + sha: $(Build.SourceVersion) + UPLOAD_PACKAGES: $(UPLOAD_PACKAGES) + UPLOAD_TEMP: $(UPLOAD_TEMP) BINSTAR_TOKEN: $(BINSTAR_TOKEN) FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN) - STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) - condition: and(succeeded(), not(eq(variables['UPLOAD_PACKAGES'], 'False')), not(eq(variables['Build.Reason'], 'PullRequest'))) \ No newline at end of file + STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) \ No newline at end of file diff --git a/.ci_support/linux_64_numpy1.21python3.8.____cpythonpython_implcpython.yaml b/.ci_support/linux_64_numpy1.22python3.8.____cpythonpython_implcpython.yaml similarity index 79% rename from .ci_support/linux_64_numpy1.21python3.8.____cpythonpython_implcpython.yaml rename to .ci_support/linux_64_numpy1.22python3.8.____cpythonpython_implcpython.yaml index fde76d1..d903089 100644 --- a/.ci_support/linux_64_numpy1.21python3.8.____cpythonpython_implcpython.yaml +++ b/.ci_support/linux_64_numpy1.22python3.8.____cpythonpython_implcpython.yaml @@ -2,8 +2,12 @@ c_compiler: - gcc c_compiler_version: - '12' +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' cdt_name: -- cos6 +- cos7 channel_sources: - conda-forge channel_targets: @@ -11,7 +15,7 @@ channel_targets: docker_image: - quay.io/condaforge/linux-anvil-cos7-x86_64 numpy: -- '1.21' +- '1.22' pin_run_as_build: python: min_pin: x.x @@ -23,6 +27,8 @@ python_impl: target_platform: - linux-64 zip_keys: +- - c_stdlib_version + - cdt_name - - python - numpy - python_impl diff --git a/.ci_support/linux_64_numpy1.21python3.10.____cpythonpython_implcpython.yaml b/.ci_support/linux_64_numpy2.0python3.10.____cpythonpython_implcpython.yaml similarity index 79% rename from .ci_support/linux_64_numpy1.21python3.10.____cpythonpython_implcpython.yaml rename to .ci_support/linux_64_numpy2.0python3.10.____cpythonpython_implcpython.yaml index 7f6a9ca..50b8b45 100644 --- a/.ci_support/linux_64_numpy1.21python3.10.____cpythonpython_implcpython.yaml +++ b/.ci_support/linux_64_numpy2.0python3.10.____cpythonpython_implcpython.yaml @@ -2,8 +2,12 @@ c_compiler: - gcc c_compiler_version: - '12' +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' cdt_name: -- cos6 +- cos7 channel_sources: - conda-forge channel_targets: @@ -11,7 +15,7 @@ channel_targets: docker_image: - quay.io/condaforge/linux-anvil-cos7-x86_64 numpy: -- '1.21' +- '2.0' pin_run_as_build: python: min_pin: x.x @@ -23,6 +27,8 @@ python_impl: target_platform: - linux-64 zip_keys: +- - c_stdlib_version + - cdt_name - - python - numpy - python_impl diff --git a/.ci_support/linux_64_numpy1.23python3.11.____cpythonpython_implcpython.yaml b/.ci_support/linux_64_numpy2.0python3.11.____cpythonpython_implcpython.yaml similarity index 79% rename from .ci_support/linux_64_numpy1.23python3.11.____cpythonpython_implcpython.yaml rename to .ci_support/linux_64_numpy2.0python3.11.____cpythonpython_implcpython.yaml index 2ef8cb6..228c2d3 100644 --- a/.ci_support/linux_64_numpy1.23python3.11.____cpythonpython_implcpython.yaml +++ b/.ci_support/linux_64_numpy2.0python3.11.____cpythonpython_implcpython.yaml @@ -2,8 +2,12 @@ c_compiler: - gcc c_compiler_version: - '12' +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' cdt_name: -- cos6 +- cos7 channel_sources: - conda-forge channel_targets: @@ -11,7 +15,7 @@ channel_targets: docker_image: - quay.io/condaforge/linux-anvil-cos7-x86_64 numpy: -- '1.23' +- '2.0' pin_run_as_build: python: min_pin: x.x @@ -23,6 +27,8 @@ python_impl: target_platform: - linux-64 zip_keys: +- - c_stdlib_version + - cdt_name - - python - numpy - python_impl diff --git a/.ci_support/linux_64_numpy2.0python3.12.____cpythonpython_implcpython.yaml b/.ci_support/linux_64_numpy2.0python3.12.____cpythonpython_implcpython.yaml new file mode 100644 index 0000000..3842b30 --- /dev/null +++ b/.ci_support/linux_64_numpy2.0python3.12.____cpythonpython_implcpython.yaml @@ -0,0 +1,34 @@ +c_compiler: +- gcc +c_compiler_version: +- '12' +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' +cdt_name: +- cos7 +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +docker_image: +- quay.io/condaforge/linux-anvil-cos7-x86_64 +numpy: +- '2.0' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.12.* *_cpython +python_impl: +- cpython +target_platform: +- linux-64 +zip_keys: +- - c_stdlib_version + - cdt_name +- - python + - numpy + - python_impl diff --git a/.ci_support/linux_64_numpy1.21python3.9.____cpythonpython_implcpython.yaml b/.ci_support/linux_64_numpy2.0python3.9.____cpythonpython_implcpython.yaml similarity index 79% rename from .ci_support/linux_64_numpy1.21python3.9.____cpythonpython_implcpython.yaml rename to .ci_support/linux_64_numpy2.0python3.9.____cpythonpython_implcpython.yaml index 24ed019..56c223f 100644 --- a/.ci_support/linux_64_numpy1.21python3.9.____cpythonpython_implcpython.yaml +++ b/.ci_support/linux_64_numpy2.0python3.9.____cpythonpython_implcpython.yaml @@ -2,8 +2,12 @@ c_compiler: - gcc c_compiler_version: - '12' +c_stdlib: +- sysroot +c_stdlib_version: +- '2.17' cdt_name: -- cos6 +- cos7 channel_sources: - conda-forge channel_targets: @@ -11,7 +15,7 @@ channel_targets: docker_image: - quay.io/condaforge/linux-anvil-cos7-x86_64 numpy: -- '1.21' +- '2.0' pin_run_as_build: python: min_pin: x.x @@ -23,6 +27,8 @@ python_impl: target_platform: - linux-64 zip_keys: +- - c_stdlib_version + - cdt_name - - python - numpy - python_impl diff --git a/.ci_support/migrations/python311.yaml b/.ci_support/migrations/python311.yaml deleted file mode 100644 index e4c79db..0000000 --- a/.ci_support/migrations/python311.yaml +++ /dev/null @@ -1,37 +0,0 @@ -migrator_ts: 1666686085 -__migrator: - migration_number: 1 - operation: key_add - primary_key: python - ordering: - python: - - 3.6.* *_cpython - - 3.7.* *_cpython - - 3.8.* *_cpython - - 3.9.* *_cpython - - 3.10.* *_cpython - - 3.11.* *_cpython # new entry - - 3.6.* *_73_pypy - - 3.7.* *_73_pypy - - 3.8.* *_73_pypy - - 3.9.* *_73_pypy - paused: false - longterm: True - pr_limit: 60 - max_solver_attempts: 10 # this will make the bot retry "not solvable" stuff 10 times - exclude: - # this shouldn't attempt to modify the python feedstocks - - python - - pypy3.6 - - pypy-meta - - cross-python - - python_abi - exclude_pinned_pkgs: false - -python: - - 3.11.* *_cpython -# additional entries to add for zip_keys -numpy: - - 1.23 -python_impl: - - cpython diff --git a/.ci_support/osx_64_numpy1.21python3.8.____cpythonpython_implcpython.yaml b/.ci_support/osx_64_numpy1.22python3.8.____cpythonpython_implcpython.yaml similarity index 75% rename from .ci_support/osx_64_numpy1.21python3.8.____cpythonpython_implcpython.yaml rename to .ci_support/osx_64_numpy1.22python3.8.____cpythonpython_implcpython.yaml index e0d867f..b0ff497 100644 --- a/.ci_support/osx_64_numpy1.21python3.8.____cpythonpython_implcpython.yaml +++ b/.ci_support/osx_64_numpy1.22python3.8.____cpythonpython_implcpython.yaml @@ -1,9 +1,15 @@ MACOSX_DEPLOYMENT_TARGET: -- '10.9' +- '10.13' +MACOSX_SDK_VERSION: +- '10.13' c_compiler: - clang c_compiler_version: -- '15' +- '16' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '10.13' channel_sources: - conda-forge channel_targets: @@ -11,7 +17,7 @@ channel_targets: macos_machine: - x86_64-apple-darwin13.4.0 numpy: -- '1.21' +- '1.22' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/osx_64_numpy1.21python3.10.____cpythonpython_implcpython.yaml b/.ci_support/osx_64_numpy2.0python3.10.____cpythonpython_implcpython.yaml similarity index 75% rename from .ci_support/osx_64_numpy1.21python3.10.____cpythonpython_implcpython.yaml rename to .ci_support/osx_64_numpy2.0python3.10.____cpythonpython_implcpython.yaml index 0778273..13634a7 100644 --- a/.ci_support/osx_64_numpy1.21python3.10.____cpythonpython_implcpython.yaml +++ b/.ci_support/osx_64_numpy2.0python3.10.____cpythonpython_implcpython.yaml @@ -1,9 +1,15 @@ MACOSX_DEPLOYMENT_TARGET: -- '10.9' +- '10.13' +MACOSX_SDK_VERSION: +- '10.13' c_compiler: - clang c_compiler_version: -- '15' +- '16' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '10.13' channel_sources: - conda-forge channel_targets: @@ -11,7 +17,7 @@ channel_targets: macos_machine: - x86_64-apple-darwin13.4.0 numpy: -- '1.21' +- '2.0' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/osx_64_numpy1.23python3.11.____cpythonpython_implcpython.yaml b/.ci_support/osx_64_numpy2.0python3.11.____cpythonpython_implcpython.yaml similarity index 75% rename from .ci_support/osx_64_numpy1.23python3.11.____cpythonpython_implcpython.yaml rename to .ci_support/osx_64_numpy2.0python3.11.____cpythonpython_implcpython.yaml index 64d0d31..9034a0a 100644 --- a/.ci_support/osx_64_numpy1.23python3.11.____cpythonpython_implcpython.yaml +++ b/.ci_support/osx_64_numpy2.0python3.11.____cpythonpython_implcpython.yaml @@ -1,9 +1,15 @@ MACOSX_DEPLOYMENT_TARGET: -- '10.9' +- '10.13' +MACOSX_SDK_VERSION: +- '10.13' c_compiler: - clang c_compiler_version: -- '15' +- '16' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '10.13' channel_sources: - conda-forge channel_targets: @@ -11,7 +17,7 @@ channel_targets: macos_machine: - x86_64-apple-darwin13.4.0 numpy: -- '1.23' +- '2.0' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/osx_64_numpy2.0python3.12.____cpythonpython_implcpython.yaml b/.ci_support/osx_64_numpy2.0python3.12.____cpythonpython_implcpython.yaml new file mode 100644 index 0000000..3a55462 --- /dev/null +++ b/.ci_support/osx_64_numpy2.0python3.12.____cpythonpython_implcpython.yaml @@ -0,0 +1,34 @@ +MACOSX_DEPLOYMENT_TARGET: +- '10.13' +MACOSX_SDK_VERSION: +- '10.13' +c_compiler: +- clang +c_compiler_version: +- '16' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '10.13' +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +macos_machine: +- x86_64-apple-darwin13.4.0 +numpy: +- '2.0' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.12.* *_cpython +python_impl: +- cpython +target_platform: +- osx-64 +zip_keys: +- - python + - numpy + - python_impl diff --git a/.ci_support/osx_64_numpy1.21python3.9.____cpythonpython_implcpython.yaml b/.ci_support/osx_64_numpy2.0python3.9.____cpythonpython_implcpython.yaml similarity index 75% rename from .ci_support/osx_64_numpy1.21python3.9.____cpythonpython_implcpython.yaml rename to .ci_support/osx_64_numpy2.0python3.9.____cpythonpython_implcpython.yaml index 5179b7c..ca9fd16 100644 --- a/.ci_support/osx_64_numpy1.21python3.9.____cpythonpython_implcpython.yaml +++ b/.ci_support/osx_64_numpy2.0python3.9.____cpythonpython_implcpython.yaml @@ -1,9 +1,15 @@ MACOSX_DEPLOYMENT_TARGET: -- '10.9' +- '10.13' +MACOSX_SDK_VERSION: +- '10.13' c_compiler: - clang c_compiler_version: -- '15' +- '16' +c_stdlib: +- macosx_deployment_target +c_stdlib_version: +- '10.13' channel_sources: - conda-forge channel_targets: @@ -11,7 +17,7 @@ channel_targets: macos_machine: - x86_64-apple-darwin13.4.0 numpy: -- '1.21' +- '2.0' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/win_64_numpy1.21python3.8.____cpythonpython_implcpython.yaml b/.ci_support/win_64_numpy1.22python3.8.____cpythonpython_implcpython.yaml similarity index 92% rename from .ci_support/win_64_numpy1.21python3.8.____cpythonpython_implcpython.yaml rename to .ci_support/win_64_numpy1.22python3.8.____cpythonpython_implcpython.yaml index 2d65261..908bbbc 100644 --- a/.ci_support/win_64_numpy1.21python3.8.____cpythonpython_implcpython.yaml +++ b/.ci_support/win_64_numpy1.22python3.8.____cpythonpython_implcpython.yaml @@ -1,11 +1,13 @@ c_compiler: - vs2019 +c_stdlib: +- vs channel_sources: - conda-forge channel_targets: - conda-forge main numpy: -- '1.21' +- '1.22' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/win_64_numpy1.21python3.10.____cpythonpython_implcpython.yaml b/.ci_support/win_64_numpy2.0python3.10.____cpythonpython_implcpython.yaml similarity index 92% rename from .ci_support/win_64_numpy1.21python3.10.____cpythonpython_implcpython.yaml rename to .ci_support/win_64_numpy2.0python3.10.____cpythonpython_implcpython.yaml index d772855..066b5a2 100644 --- a/.ci_support/win_64_numpy1.21python3.10.____cpythonpython_implcpython.yaml +++ b/.ci_support/win_64_numpy2.0python3.10.____cpythonpython_implcpython.yaml @@ -1,11 +1,13 @@ c_compiler: - vs2019 +c_stdlib: +- vs channel_sources: - conda-forge channel_targets: - conda-forge main numpy: -- '1.21' +- '2.0' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/win_64_numpy1.23python3.11.____cpythonpython_implcpython.yaml b/.ci_support/win_64_numpy2.0python3.11.____cpythonpython_implcpython.yaml similarity index 92% rename from .ci_support/win_64_numpy1.23python3.11.____cpythonpython_implcpython.yaml rename to .ci_support/win_64_numpy2.0python3.11.____cpythonpython_implcpython.yaml index 0abe6df..5280396 100644 --- a/.ci_support/win_64_numpy1.23python3.11.____cpythonpython_implcpython.yaml +++ b/.ci_support/win_64_numpy2.0python3.11.____cpythonpython_implcpython.yaml @@ -1,11 +1,13 @@ c_compiler: - vs2019 +c_stdlib: +- vs channel_sources: - conda-forge channel_targets: - conda-forge main numpy: -- '1.23' +- '2.0' pin_run_as_build: python: min_pin: x.x diff --git a/.ci_support/win_64_numpy2.0python3.12.____cpythonpython_implcpython.yaml b/.ci_support/win_64_numpy2.0python3.12.____cpythonpython_implcpython.yaml new file mode 100644 index 0000000..07a024d --- /dev/null +++ b/.ci_support/win_64_numpy2.0python3.12.____cpythonpython_implcpython.yaml @@ -0,0 +1,24 @@ +c_compiler: +- vs2019 +c_stdlib: +- vs +channel_sources: +- conda-forge +channel_targets: +- conda-forge main +numpy: +- '2.0' +pin_run_as_build: + python: + min_pin: x.x + max_pin: x.x +python: +- 3.12.* *_cpython +python_impl: +- cpython +target_platform: +- win-64 +zip_keys: +- - python + - numpy + - python_impl diff --git a/.ci_support/win_64_numpy1.21python3.9.____cpythonpython_implcpython.yaml b/.ci_support/win_64_numpy2.0python3.9.____cpythonpython_implcpython.yaml similarity index 92% rename from .ci_support/win_64_numpy1.21python3.9.____cpythonpython_implcpython.yaml rename to .ci_support/win_64_numpy2.0python3.9.____cpythonpython_implcpython.yaml index 20466fe..06f3165 100644 --- a/.ci_support/win_64_numpy1.21python3.9.____cpythonpython_implcpython.yaml +++ b/.ci_support/win_64_numpy2.0python3.9.____cpythonpython_implcpython.yaml @@ -1,11 +1,13 @@ c_compiler: - vs2019 +c_stdlib: +- vs channel_sources: - conda-forge channel_targets: - conda-forge main numpy: -- '1.21' +- '2.0' pin_run_as_build: python: min_pin: x.x 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/.gitignore b/.gitignore index c89ecb7..179afe5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,24 @@ -*.pyc +# User content belongs under recipe/. +# Feedstock configuration goes in `conda-forge.yml` +# Everything else is managed by the conda-smithy rerender process. +# Please do not modify + +# Ignore all files and folders in root +* +!/conda-forge.yml + +# Don't ignore any files/folders if the parent folder is 'un-ignored' +# This also avoids warnings when adding an already-checked file with an ignored parent. +!/**/ +# Don't ignore any files/folders recursively in the following folders +!/recipe/** +!/.ci_support/** -build_artifacts +# Since we ignore files/folders recursively, any folders inside +# build_artifacts gets ignored which trips some build systems. +# To avoid that we 'un-ignore' all files/folders recursively +# and only ignore the root build_artifacts folder. +!/build_artifacts/** +/build_artifacts + +*.pyc diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh index 595f8b5..6c805a9 100755 --- a/.scripts/build_steps.sh +++ b/.scripts/build_steps.sh @@ -28,14 +28,15 @@ conda-build: pkgs_dirs: - ${FEEDSTOCK_ROOT}/build_artifacts/pkg_cache - /opt/conda/pkgs +solver: libmamba CONDARC +export CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1 - -mamba install --update-specs --yes --quiet --channel conda-forge \ - conda-build pip boa conda-forge-ci-setup=3 -mamba update --update-specs --yes --quiet --channel conda-forge \ - conda-build pip boa conda-forge-ci-setup=3 +mamba install --update-specs --yes --quiet --channel conda-forge --strict-channel-priority \ + pip mamba conda-build conda-forge-ci-setup=4 "conda-build>=24.1" +mamba update --update-specs --yes --quiet --channel conda-forge --strict-channel-priority \ + pip mamba conda-build conda-forge-ci-setup=4 "conda-build>=24.1" # set up the condarc setup_conda_rc "${FEEDSTOCK_ROOT}" "${RECIPE_ROOT}" "${CONFIG_FILE}" @@ -64,9 +65,16 @@ if [[ "${BUILD_WITH_CONDA_DEBUG:-0}" == 1 ]]; then # Drop into an interactive shell /bin/bash else - conda mambabuild "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \ + conda-build "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \ --suppress-variables ${EXTRA_CB_OPTIONS:-} \ - --clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml" + --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/logging_utils.sh b/.scripts/logging_utils.sh index 57bc95c..aff009f 100644 --- a/.scripts/logging_utils.sh +++ b/.scripts/logging_utils.sh @@ -12,7 +12,7 @@ function startgroup { echo "##[group]$1";; travis ) echo "$1" - echo -en 'travis_fold:start:'"${1// /}"'\\r';; + echo -en 'travis_fold:start:'"${1// /}"'\r';; github_actions ) echo "::group::$1";; * ) @@ -28,7 +28,7 @@ function endgroup { azure ) echo "##[endgroup]";; travis ) - echo -en 'travis_fold:end:'"${1// /}"'\\r';; + echo -en 'travis_fold:end:'"${1// /}"'\r';; github_actions ) echo "::endgroup::";; esac diff --git a/.scripts/run_docker_build.sh b/.scripts/run_docker_build.sh index 9236239..00f377a 100755 --- a/.scripts/run_docker_build.sh +++ b/.scripts/run_docker_build.sh @@ -21,6 +21,12 @@ if [ -z ${FEEDSTOCK_NAME} ]; then export FEEDSTOCK_NAME=$(basename ${FEEDSTOCK_ROOT}) fi +if [[ "${sha:-}" == "" ]]; then + pushd "${FEEDSTOCK_ROOT}" + sha=$(git rev-parse HEAD) + popd +fi + docker info # In order for the conda-build process in the container to write to the mounted @@ -91,6 +97,9 @@ docker run ${DOCKER_RUN_ARGS} \ -e CPU_COUNT \ -e BUILD_WITH_CONDA_DEBUG \ -e BUILD_OUTPUT_ID \ + -e flow_run_id \ + -e remote_url \ + -e sha \ -e BINSTAR_TOKEN \ -e FEEDSTOCK_TOKEN \ -e STAGING_BINSTAR_TOKEN \ diff --git a/.scripts/run_osx_build.sh b/.scripts/run_osx_build.sh index 5ef2a19..0c9e992 100755 --- a/.scripts/run_osx_build.sh +++ b/.scripts/run_osx_build.sh @@ -22,11 +22,13 @@ bash $MINIFORGE_FILE -b -p ${MINIFORGE_HOME} source ${MINIFORGE_HOME}/etc/profile.d/conda.sh conda activate base +export CONDA_SOLVER="libmamba" +export CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1 -mamba install --update-specs --quiet --yes --channel conda-forge \ - conda-build pip boa conda-forge-ci-setup=3 -mamba update --update-specs --yes --quiet --channel conda-forge \ - conda-build pip boa conda-forge-ci-setup=3 +mamba install --update-specs --quiet --yes --channel conda-forge --strict-channel-priority \ + pip mamba conda-build conda-forge-ci-setup=4 "conda-build>=24.1" +mamba update --update-specs --yes --quiet --channel conda-forge --strict-channel-priority \ + pip mamba conda-build conda-forge-ci-setup=4 "conda-build>=24.1" @@ -45,6 +47,10 @@ else echo -e "\n\nNot mangling homebrew as we are not running in CI" fi +if [[ "${sha:-}" == "" ]]; then + sha=$(git rev-parse HEAD) +fi + echo -e "\n\nRunning the build setup script." source run_conda_forge_build_setup @@ -71,9 +77,17 @@ if [[ "${BUILD_WITH_CONDA_DEBUG:-0}" == 1 ]]; then /bin/bash else - conda mambabuild ./recipe -m ./.ci_support/${CONFIG}.yaml \ + conda-build ./recipe -m ./.ci_support/${CONFIG}.yaml \ --suppress-variables ${EXTRA_CB_OPTIONS:-} \ - --clobber-file ./.ci_support/clobber_${CONFIG}.yaml + --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 new file mode 100755 index 0000000..24ef201 --- /dev/null +++ b/.scripts/run_win_build.bat @@ -0,0 +1,125 @@ +:: PLEASE NOTE: This script has been automatically generated by conda-smithy. Any changes here +:: will be lost next time ``conda smithy rerender`` is run. If you would like to make permanent +:: changes to this script, consider a proposal to conda-smithy so that other feedstocks can also +:: benefit from the improvement. + +:: Note: we assume a Miniforge installation is available + +:: INPUTS (required environment variables) +:: CONFIG: name of the .ci_support/*.yaml file for this job +:: CI: azure, github_actions, or unset +:: UPLOAD_PACKAGES: true or false +:: UPLOAD_ON_BRANCH: true or false + +setlocal enableextensions enabledelayedexpansion + +call :start_group "Configuring conda" + +:: Activate the base conda environment +call activate base +:: Configure the solver +set "CONDA_SOLVER=libmamba" +if !errorlevel! neq 0 exit /b !errorlevel! +set "CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1" + +:: Provision the necessary dependencies to build the recipe later +echo Installing dependencies +mamba.exe install "python=3.10" pip mamba conda-build conda-forge-ci-setup=4 "conda-build>=24.1" -c conda-forge --strict-channel-priority --yes +if !errorlevel! neq 0 exit /b !errorlevel! + +:: Set basic configuration +echo Setting up configuration +setup_conda_rc .\ ".\recipe" .\.ci_support\%CONFIG%.yaml +if !errorlevel! neq 0 exit /b !errorlevel! +echo Running build setup +CALL run_conda_forge_build_setup + + +if !errorlevel! neq 0 exit /b !errorlevel! + +if EXIST LICENSE.txt ( + echo Copying feedstock license + copy LICENSE.txt "recipe\\recipe-scripts-license.txt" +) + +if NOT [%flow_run_id%] == [] ( + set "EXTRA_CB_OPTIONS=%EXTRA_CB_OPTIONS% --extra-meta flow_run_id=%flow_run_id% remote_url=%remote_url% sha=%sha%" +) + +call :end_group + +:: Build the recipe +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:*/=%" + set "GIT_BRANCH=%GITHUB_REF:refs/heads/=%" + if /i "%GITHUB_EVENT_NAME%" == "pull_request" ( + set "IS_PR_BUILD=True" + ) else ( + set "IS_PR_BUILD=False" + ) + set "TEMP=%RUNNER_TEMP%" +) +if /i "%CI%" == "azure" ( + set "FEEDSTOCK_NAME=%BUILD_REPOSITORY_NAME:*/=%" + set "GIT_BRANCH=%BUILD_SOURCEBRANCHNAME%" + if /i "%BUILD_REASON%" == "PullRequest" ( + set "IS_PR_BUILD=True" + ) else ( + set "IS_PR_BUILD=False" + ) + set "TEMP=%UPLOAD_TEMP%" +) + +:: Validate +call :start_group "Validating outputs" +validate_recipe_outputs "%FEEDSTOCK_NAME%" +if !errorlevel! neq 0 exit /b !errorlevel! +call :end_group + +if /i "%UPLOAD_PACKAGES%" == "true" ( + if /i "%IS_PR_BUILD%" == "false" ( + call :start_group "Uploading packages" + if not exist "%TEMP%\" md "%TEMP%" + set "TMP=%TEMP%" + upload_package --validate --feedstock-name="%FEEDSTOCK_NAME%" .\ ".\recipe" .ci_support\%CONFIG%.yaml + if !errorlevel! neq 0 exit /b !errorlevel! + call :end_group + ) +) + +exit + +:: Logging subroutines + +:start_group +if /i "%CI%" == "github_actions" ( + echo ::group::%~1 + exit /b +) +if /i "%CI%" == "azure" ( + echo ##[group]%~1 + exit /b +) +echo %~1 +exit /b + +:end_group +if /i "%CI%" == "github_actions" ( + echo ::endgroup:: + exit /b +) +if /i "%CI%" == "azure" ( + echo ##[endgroup] + exit /b +) +exit /b \ No newline at end of file diff --git a/README.md b/README.md index 773a383..f4b6c3c 100644 --- a/README.md +++ b/README.md @@ -27,87 +27,108 @@ Current build status - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + @@ -191,7 +212,7 @@ available continuous integration services. Thanks to the awesome service provide [CircleCI](https://circleci.com/), [AppVeyor](https://www.appveyor.com/), [Drone](https://cloud.drone.io/welcome), and [TravisCI](https://travis-ci.com/) it is possible to build and upload installable packages to the -[conda-forge](https://anaconda.org/conda-forge) [Anaconda-Cloud](https://anaconda.org/) +[conda-forge](https://anaconda.org/conda-forge) [anaconda.org](https://anaconda.org/) channel for Linux, Windows and OSX respectively. To manage the continuous integration and simplify feedstock maintenance diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 6b346f5..e5306da 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -4,5 +4,5 @@ jobs: - template: ./.azure-pipelines/azure-pipelines-linux.yml - - template: ./.azure-pipelines/azure-pipelines-win.yml - - template: ./.azure-pipelines/azure-pipelines-osx.yml \ No newline at end of file + - template: ./.azure-pipelines/azure-pipelines-osx.yml + - template: ./.azure-pipelines/azure-pipelines-win.yml \ No newline at end of file diff --git a/build-locally.py b/build-locally.py index 3f4b7a7..e0d408d 100755 --- a/build-locally.py +++ b/build-locally.py @@ -64,8 +64,9 @@ def verify_config(ns): elif ns.config.startswith("osx"): if "OSX_SDK_DIR" not in os.environ: raise RuntimeError( - "Need OSX_SDK_DIR env variable set. Run 'export OSX_SDK_DIR=SDKs' " - "to download the SDK automatically to 'SDKs/MacOSX.sdk'. " + "Need OSX_SDK_DIR env variable set. Run 'export OSX_SDK_DIR=$PWD/SDKs' " + "to download the SDK automatically to '$PWD/SDKs/MacOSX.sdk'. " + "Note: OSX_SDK_DIR must be set to an absolute path. " "Setting this variable implies agreement to the licensing terms of the SDK by Apple." )
VariantStatus
linux_64_numpy1.21python3.10.____cpythonpython_implcpythonlinux_64_numpy1.22python3.8.____cpythonpython_implcpython - variant + variant
linux_64_numpy1.21python3.8.____cpythonpython_implcpythonlinux_64_numpy2.0python3.10.____cpythonpython_implcpython - variant + variant
linux_64_numpy1.21python3.9.____cpythonpython_implcpythonlinux_64_numpy2.0python3.11.____cpythonpython_implcpython - variant + variant
linux_64_numpy1.23python3.11.____cpythonpython_implcpythonlinux_64_numpy2.0python3.12.____cpythonpython_implcpython - variant + variant
osx_64_numpy1.21python3.10.____cpythonpython_implcpythonlinux_64_numpy2.0python3.9.____cpythonpython_implcpython - variant + variant
osx_64_numpy1.21python3.8.____cpythonpython_implcpythonosx_64_numpy1.22python3.8.____cpythonpython_implcpython - variant + variant
osx_64_numpy1.21python3.9.____cpythonpython_implcpythonosx_64_numpy2.0python3.10.____cpythonpython_implcpython - variant + variant
osx_64_numpy1.23python3.11.____cpythonpython_implcpythonosx_64_numpy2.0python3.11.____cpythonpython_implcpython - variant + variant
win_64_numpy1.21python3.10.____cpythonpython_implcpythonosx_64_numpy2.0python3.12.____cpythonpython_implcpython - variant + variant
win_64_numpy1.21python3.8.____cpythonpython_implcpythonosx_64_numpy2.0python3.9.____cpythonpython_implcpython - variant + variant
win_64_numpy1.21python3.9.____cpythonpython_implcpythonwin_64_numpy1.22python3.8.____cpythonpython_implcpython - variant + variant
win_64_numpy1.23python3.11.____cpythonpython_implcpythonwin_64_numpy2.0python3.10.____cpythonpython_implcpython - variant + variant + +
win_64_numpy2.0python3.11.____cpythonpython_implcpython + + variant + +
win_64_numpy2.0python3.12.____cpythonpython_implcpython + + variant + +
win_64_numpy2.0python3.9.____cpythonpython_implcpython + + variant