diff --git a/.azure-pipelines/azure-pipelines-linux.yml b/.azure-pipelines/azure-pipelines-linux.yml deleted file mode 100755 index b8e38ee0..00000000 --- a/.azure-pipelines/azure-pipelines-linux.yml +++ /dev/null @@ -1,146 +0,0 @@ -# This file was generated automatically from conda-smithy. To update this configuration, -# update the conda-forge.yml and/or the recipe/meta.yaml. -# -*- mode: yaml -*- - -jobs: -- job: linux - pool: - vmImage: ubuntu-latest - strategy: - matrix: - linux_64_is_freethreadingfalsepython3.10.____cpython: - CONFIG: linux_64_is_freethreadingfalsepython3.10.____cpython - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_64_is_freethreadingfalsepython3.11.____cpython: - CONFIG: linux_64_is_freethreadingfalsepython3.11.____cpython - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_64_is_freethreadingfalsepython3.12.____cpython: - CONFIG: linux_64_is_freethreadingfalsepython3.12.____cpython - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_64_is_freethreadingfalsepython3.13.____cp313: - CONFIG: linux_64_is_freethreadingfalsepython3.13.____cp313 - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_64_is_freethreadingfalsepython3.14.____cp314: - CONFIG: linux_64_is_freethreadingfalsepython3.14.____cp314 - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_64_is_freethreadingtruepython3.14.____cp314t: - CONFIG: linux_64_is_freethreadingtruepython3.14.____cp314t - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.10.____cpython: - CONFIG: linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.10.____cpython - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.11.____cpython: - CONFIG: linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.11.____cpython - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.12.____cpython: - CONFIG: linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.12.____cpython - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.13.____cp313: - CONFIG: linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.13.____cp313 - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.14.____cp314: - CONFIG: linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.14.____cp314 - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_aarch64_cufile_supportedFalseis_freethreadingtruepython3.14.____cp314t: - CONFIG: linux_aarch64_cufile_supportedFalseis_freethreadingtruepython3.14.____cp314t - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.10.____cpython: - CONFIG: linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.10.____cpython - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.11.____cpython: - CONFIG: linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.11.____cpython - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.12.____cpython: - CONFIG: linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.12.____cpython - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.13.____cp313: - CONFIG: linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.13.____cp313 - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.14.____cp314: - CONFIG: linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.14.____cp314 - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - linux_aarch64_cufile_supportedTrueis_freethreadingtruepython3.14.____cp314t: - CONFIG: linux_aarch64_cufile_supportedTrueis_freethreadingtruepython3.14.____cp314t - UPLOAD_PACKAGES: 'True' - DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 - timeoutInMinutes: 360 - variables: {} - - steps: - - script: | - sudo mkdir -p /opt/empty_dir || true - for d in \ - /opt/ghc \ - /opt/hostedtoolcache \ - /usr/lib/jvm \ - /usr/local/.ghcup \ - /usr/local/lib/android \ - /usr/local/share/powershell \ - /usr/share/dotnet \ - /usr/share/swift \ - ; do - sudo rsync --stats -a --delete /opt/empty_dir/ $d || true - done - sudo apt-get purge -y -f firefox \ - google-chrome-stable \ - microsoft-edge-stable - sudo apt-get autoremove -y >& /dev/null - sudo apt-get autoclean -y >& /dev/null - df -h - displayName: Manage disk space - - script: | - SWAPFILE=/swapfile - # If there is already a swapfile, disable it and remove it - if swapon --show | grep -q $SWAPFILE; then - echo "Disabling existing swapfile..." - sudo swapoff $SWAPFILE || true - fi - [ -f "$SWAPFILE" ] && sudo rm -f $SWAPFILE - sudo fallocate -l 10GiB $SWAPFILE - sudo chmod 600 $SWAPFILE - sudo mkswap $SWAPFILE - sudo swapon $SWAPFILE - displayName: Create swap file - # configure qemu binfmt-misc running. This allows us to run docker containers - # embedded qemu-static - - script: | - docker run --rm --privileged multiarch/qemu-user-static:register --reset --credential yes - ls /proc/sys/fs/binfmt_misc/ - condition: not(startsWith(variables['CONFIG'], 'linux_64')) - displayName: Configure binfmt_misc - - - 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 - export IS_PR_BUILD="True" - else - export IS_PR_BUILD="False" - fi - .scripts/run_docker_build.sh - displayName: Run docker build - env: - BINSTAR_TOKEN: $(BINSTAR_TOKEN) - FEEDSTOCK_TOKEN: $(FEEDSTOCK_TOKEN) - STAGING_BINSTAR_TOKEN: $(STAGING_BINSTAR_TOKEN) diff --git a/.azure-pipelines/azure-pipelines-win.yml b/.azure-pipelines/azure-pipelines-win.yml index 324665f0..a4c29f2e 100755 --- a/.azure-pipelines/azure-pipelines-win.yml +++ b/.azure-pipelines/azure-pipelines-win.yml @@ -8,46 +8,84 @@ jobs: vmImage: windows-2022 strategy: matrix: - win_64_is_freethreadingfalsepython3.10.____cpython: - CONFIG: win_64_is_freethreadingfalsepython3.10.____cpython + win_64_python3.10.____cpython: + CONFIG: win_64_python3.10.____cpython UPLOAD_PACKAGES: 'True' - win_64_is_freethreadingfalsepython3.11.____cpython: - CONFIG: win_64_is_freethreadingfalsepython3.11.____cpython + build_workspace_dir: D:\\bld\\ + free_disk_space: quick + pagefile_size: 0 + resize_partitions: false + store_build_artifacts: false + tools_install_dir: D:\Miniforge + win_64_python3.11.____cpython: + CONFIG: win_64_python3.11.____cpython UPLOAD_PACKAGES: 'True' - win_64_is_freethreadingfalsepython3.12.____cpython: - CONFIG: win_64_is_freethreadingfalsepython3.12.____cpython + build_workspace_dir: D:\\bld\\ + free_disk_space: quick + pagefile_size: 0 + resize_partitions: false + store_build_artifacts: false + tools_install_dir: D:\Miniforge + win_64_python3.12.____cpython: + CONFIG: win_64_python3.12.____cpython UPLOAD_PACKAGES: 'True' - win_64_is_freethreadingfalsepython3.13.____cp313: - CONFIG: win_64_is_freethreadingfalsepython3.13.____cp313 + build_workspace_dir: D:\\bld\\ + free_disk_space: quick + pagefile_size: 0 + resize_partitions: false + store_build_artifacts: false + tools_install_dir: D:\Miniforge + win_64_python3.13.____cp313: + CONFIG: win_64_python3.13.____cp313 UPLOAD_PACKAGES: 'True' - win_64_is_freethreadingfalsepython3.14.____cp314: - CONFIG: win_64_is_freethreadingfalsepython3.14.____cp314 + build_workspace_dir: D:\\bld\\ + free_disk_space: quick + pagefile_size: 0 + resize_partitions: false + store_build_artifacts: false + tools_install_dir: D:\Miniforge + win_64_python3.14.____cp314: + CONFIG: win_64_python3.14.____cp314 UPLOAD_PACKAGES: 'True' - win_64_is_freethreadingtruepython3.14.____cp314t: - CONFIG: win_64_is_freethreadingtruepython3.14.____cp314t + build_workspace_dir: D:\\bld\\ + free_disk_space: quick + pagefile_size: 0 + resize_partitions: false + store_build_artifacts: false + tools_install_dir: D:\Miniforge + win_64_python3.14.____cp314t: + CONFIG: win_64_python3.14.____cp314t UPLOAD_PACKAGES: 'True' + build_workspace_dir: D:\\bld\\ + free_disk_space: quick + pagefile_size: 0 + resize_partitions: false + store_build_artifacts: false + tools_install_dir: D:\Miniforge timeoutInMinutes: 360 variables: - CONDA_BLD_PATH: D:\\bld\\ - MINIFORGE_HOME: D:\Miniforge UPLOAD_TEMP: D:\\tmp steps: - + - bash: | + .scripts/free_disk_space.sh "$(free_disk_space)" + displayName: Manage disk space + env: + OS: windows - script: | call ".scripts\run_win_build.bat" displayName: Run Windows build env: - MINIFORGE_HOME: $(MINIFORGE_HOME) - CONDA_BLD_PATH: $(CONDA_BLD_PATH) - PYTHONUNBUFFERED: 1 - CONFIG: $(CONFIG) CI: azure + CONFIG: $(CONFIG) + CONDA_BLD_PATH: $(build_workspace_dir) + MINIFORGE_HOME: $(tools_install_dir) + PYTHONUNBUFFERED: 1 + UPLOAD_PACKAGES: $(UPLOAD_PACKAGES) + UPLOAD_TEMP: $(UPLOAD_TEMP) 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) diff --git a/.ci_support/linux_64_is_freethreadingfalsepython3.10.____cpython.yaml b/.ci_support/linux_64_python3.10.____cpython.yaml similarity index 85% rename from .ci_support/linux_64_is_freethreadingfalsepython3.10.____cpython.yaml rename to .ci_support/linux_64_python3.10.____cpython.yaml index 03d6002a..5735c1eb 100644 --- a/.ci_support/linux_64_is_freethreadingfalsepython3.10.____cpython.yaml +++ b/.ci_support/linux_64_python3.10.____cpython.yaml @@ -11,17 +11,13 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'True' +- true cxx_compiler: - gxx cxx_compiler_version: - '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -is_freethreading: -- false -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -35,5 +31,3 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - is_freethreading diff --git a/.ci_support/linux_64_is_freethreadingfalsepython3.11.____cpython.yaml b/.ci_support/linux_64_python3.11.____cpython.yaml similarity index 85% rename from .ci_support/linux_64_is_freethreadingfalsepython3.11.____cpython.yaml rename to .ci_support/linux_64_python3.11.____cpython.yaml index 5e4582d2..1d3881a9 100644 --- a/.ci_support/linux_64_is_freethreadingfalsepython3.11.____cpython.yaml +++ b/.ci_support/linux_64_python3.11.____cpython.yaml @@ -11,17 +11,13 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'True' +- true cxx_compiler: - gxx cxx_compiler_version: - '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -is_freethreading: -- false -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -35,5 +31,3 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - is_freethreading diff --git a/.ci_support/linux_64_is_freethreadingfalsepython3.12.____cpython.yaml b/.ci_support/linux_64_python3.12.____cpython.yaml similarity index 85% rename from .ci_support/linux_64_is_freethreadingfalsepython3.12.____cpython.yaml rename to .ci_support/linux_64_python3.12.____cpython.yaml index b34e762a..b52d4751 100644 --- a/.ci_support/linux_64_is_freethreadingfalsepython3.12.____cpython.yaml +++ b/.ci_support/linux_64_python3.12.____cpython.yaml @@ -11,17 +11,13 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'True' +- true cxx_compiler: - gxx cxx_compiler_version: - '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -is_freethreading: -- false -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -35,5 +31,3 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - is_freethreading diff --git a/.ci_support/linux_64_is_freethreadingfalsepython3.13.____cp313.yaml b/.ci_support/linux_64_python3.13.____cp313.yaml similarity index 85% rename from .ci_support/linux_64_is_freethreadingfalsepython3.13.____cp313.yaml rename to .ci_support/linux_64_python3.13.____cp313.yaml index dcf83eba..0e68c605 100644 --- a/.ci_support/linux_64_is_freethreadingfalsepython3.13.____cp313.yaml +++ b/.ci_support/linux_64_python3.13.____cp313.yaml @@ -11,17 +11,13 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'True' +- true cxx_compiler: - gxx cxx_compiler_version: - '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -is_freethreading: -- false -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -35,5 +31,3 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - is_freethreading diff --git a/.ci_support/linux_64_is_freethreadingfalsepython3.14.____cp314.yaml b/.ci_support/linux_64_python3.14.____cp314.yaml similarity index 85% rename from .ci_support/linux_64_is_freethreadingfalsepython3.14.____cp314.yaml rename to .ci_support/linux_64_python3.14.____cp314.yaml index e6987e12..eabc9035 100644 --- a/.ci_support/linux_64_is_freethreadingfalsepython3.14.____cp314.yaml +++ b/.ci_support/linux_64_python3.14.____cp314.yaml @@ -11,17 +11,13 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'True' +- true cxx_compiler: - gxx cxx_compiler_version: - '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -is_freethreading: -- false -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -35,5 +31,3 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - is_freethreading diff --git a/.ci_support/linux_64_is_freethreadingtruepython3.14.____cp314t.yaml b/.ci_support/linux_64_python3.14.____cp314t.yaml similarity index 87% rename from .ci_support/linux_64_is_freethreadingtruepython3.14.____cp314t.yaml rename to .ci_support/linux_64_python3.14.____cp314t.yaml index 335276c8..c8554700 100644 --- a/.ci_support/linux_64_is_freethreadingtruepython3.14.____cp314t.yaml +++ b/.ci_support/linux_64_python3.14.____cp314t.yaml @@ -11,17 +11,13 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'True' +- true cxx_compiler: - gxx cxx_compiler_version: - '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -is_freethreading: -- true -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -35,5 +31,3 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - is_freethreading diff --git a/.ci_support/linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.10.____cpython.yaml b/.ci_support/linux_aarch64_cufile_supportedfalsepython3.10.____cpython.yaml similarity index 87% rename from .ci_support/linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.10.____cpython.yaml rename to .ci_support/linux_aarch64_cufile_supportedfalsepython3.10.____cpython.yaml index a0e3339c..28f5a94a 100644 --- a/.ci_support/linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.10.____cpython.yaml +++ b/.ci_support/linux_aarch64_cufile_supportedfalsepython3.10.____cpython.yaml @@ -11,17 +11,13 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'True' +- false cxx_compiler: - gxx cxx_compiler_version: - '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -is_freethreading: -- false -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -35,5 +31,3 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - is_freethreading diff --git a/.ci_support/linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.11.____cpython.yaml b/.ci_support/linux_aarch64_cufile_supportedfalsepython3.11.____cpython.yaml similarity index 87% rename from .ci_support/linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.11.____cpython.yaml rename to .ci_support/linux_aarch64_cufile_supportedfalsepython3.11.____cpython.yaml index c1f1ba52..d2dec9b1 100644 --- a/.ci_support/linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.11.____cpython.yaml +++ b/.ci_support/linux_aarch64_cufile_supportedfalsepython3.11.____cpython.yaml @@ -11,17 +11,13 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'True' +- false cxx_compiler: - gxx cxx_compiler_version: - '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -is_freethreading: -- false -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -35,5 +31,3 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - is_freethreading diff --git a/.ci_support/linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.12.____cpython.yaml b/.ci_support/linux_aarch64_cufile_supportedfalsepython3.12.____cpython.yaml similarity index 87% rename from .ci_support/linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.12.____cpython.yaml rename to .ci_support/linux_aarch64_cufile_supportedfalsepython3.12.____cpython.yaml index 6a88ea0f..cf1b3e95 100644 --- a/.ci_support/linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.12.____cpython.yaml +++ b/.ci_support/linux_aarch64_cufile_supportedfalsepython3.12.____cpython.yaml @@ -11,17 +11,13 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'True' +- false cxx_compiler: - gxx cxx_compiler_version: - '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -is_freethreading: -- false -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -35,5 +31,3 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - is_freethreading diff --git a/.ci_support/linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.13.____cp313.yaml b/.ci_support/linux_aarch64_cufile_supportedfalsepython3.13.____cp313.yaml similarity index 87% rename from .ci_support/linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.13.____cp313.yaml rename to .ci_support/linux_aarch64_cufile_supportedfalsepython3.13.____cp313.yaml index 895accf4..d06f88be 100644 --- a/.ci_support/linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.13.____cp313.yaml +++ b/.ci_support/linux_aarch64_cufile_supportedfalsepython3.13.____cp313.yaml @@ -11,17 +11,13 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'True' +- false cxx_compiler: - gxx cxx_compiler_version: - '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -is_freethreading: -- false -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -35,5 +31,3 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - is_freethreading diff --git a/.ci_support/linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.14.____cp314.yaml b/.ci_support/linux_aarch64_cufile_supportedfalsepython3.14.____cp314.yaml similarity index 87% rename from .ci_support/linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.14.____cp314.yaml rename to .ci_support/linux_aarch64_cufile_supportedfalsepython3.14.____cp314.yaml index 23bd022d..eaa4839e 100644 --- a/.ci_support/linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.14.____cp314.yaml +++ b/.ci_support/linux_aarch64_cufile_supportedfalsepython3.14.____cp314.yaml @@ -11,17 +11,13 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'True' +- false cxx_compiler: - gxx cxx_compiler_version: - '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -is_freethreading: -- false -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -35,5 +31,3 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - is_freethreading diff --git a/.ci_support/linux_aarch64_cufile_supportedFalseis_freethreadingtruepython3.14.____cp314t.yaml b/.ci_support/linux_aarch64_cufile_supportedfalsepython3.14.____cp314t.yaml similarity index 85% rename from .ci_support/linux_aarch64_cufile_supportedFalseis_freethreadingtruepython3.14.____cp314t.yaml rename to .ci_support/linux_aarch64_cufile_supportedfalsepython3.14.____cp314t.yaml index 75cb959c..6b3684a4 100644 --- a/.ci_support/linux_aarch64_cufile_supportedFalseis_freethreadingtruepython3.14.____cp314t.yaml +++ b/.ci_support/linux_aarch64_cufile_supportedfalsepython3.14.____cp314t.yaml @@ -11,17 +11,13 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'False' +- false cxx_compiler: - gxx cxx_compiler_version: - '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -is_freethreading: -- true -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -35,5 +31,3 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - is_freethreading diff --git a/.ci_support/linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.10.____cpython.yaml b/.ci_support/linux_aarch64_cufile_supportedtruepython3.10.____cpython.yaml similarity index 85% rename from .ci_support/linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.10.____cpython.yaml rename to .ci_support/linux_aarch64_cufile_supportedtruepython3.10.____cpython.yaml index 5c3459d4..4c85ec8c 100644 --- a/.ci_support/linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.10.____cpython.yaml +++ b/.ci_support/linux_aarch64_cufile_supportedtruepython3.10.____cpython.yaml @@ -11,17 +11,13 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'False' +- true cxx_compiler: - gxx cxx_compiler_version: - '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -is_freethreading: -- false -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -35,5 +31,3 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - is_freethreading diff --git a/.ci_support/linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.11.____cpython.yaml b/.ci_support/linux_aarch64_cufile_supportedtruepython3.11.____cpython.yaml similarity index 85% rename from .ci_support/linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.11.____cpython.yaml rename to .ci_support/linux_aarch64_cufile_supportedtruepython3.11.____cpython.yaml index c79de687..5693c49a 100644 --- a/.ci_support/linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.11.____cpython.yaml +++ b/.ci_support/linux_aarch64_cufile_supportedtruepython3.11.____cpython.yaml @@ -11,17 +11,13 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'False' +- true cxx_compiler: - gxx cxx_compiler_version: - '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -is_freethreading: -- false -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -35,5 +31,3 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - is_freethreading diff --git a/.ci_support/linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.12.____cpython.yaml b/.ci_support/linux_aarch64_cufile_supportedtruepython3.12.____cpython.yaml similarity index 85% rename from .ci_support/linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.12.____cpython.yaml rename to .ci_support/linux_aarch64_cufile_supportedtruepython3.12.____cpython.yaml index bba161f2..44ef8afc 100644 --- a/.ci_support/linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.12.____cpython.yaml +++ b/.ci_support/linux_aarch64_cufile_supportedtruepython3.12.____cpython.yaml @@ -11,17 +11,13 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'False' +- true cxx_compiler: - gxx cxx_compiler_version: - '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -is_freethreading: -- false -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -35,5 +31,3 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - is_freethreading diff --git a/.ci_support/linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.13.____cp313.yaml b/.ci_support/linux_aarch64_cufile_supportedtruepython3.13.____cp313.yaml similarity index 85% rename from .ci_support/linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.13.____cp313.yaml rename to .ci_support/linux_aarch64_cufile_supportedtruepython3.13.____cp313.yaml index dee1c31b..9afb2385 100644 --- a/.ci_support/linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.13.____cp313.yaml +++ b/.ci_support/linux_aarch64_cufile_supportedtruepython3.13.____cp313.yaml @@ -11,17 +11,13 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'False' +- true cxx_compiler: - gxx cxx_compiler_version: - '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -is_freethreading: -- false -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -35,5 +31,3 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - is_freethreading diff --git a/.ci_support/linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.14.____cp314.yaml b/.ci_support/linux_aarch64_cufile_supportedtruepython3.14.____cp314.yaml similarity index 85% rename from .ci_support/linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.14.____cp314.yaml rename to .ci_support/linux_aarch64_cufile_supportedtruepython3.14.____cp314.yaml index 79d79b87..78fef3c9 100644 --- a/.ci_support/linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.14.____cp314.yaml +++ b/.ci_support/linux_aarch64_cufile_supportedtruepython3.14.____cp314.yaml @@ -11,17 +11,13 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'False' +- true cxx_compiler: - gxx cxx_compiler_version: - '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -is_freethreading: -- false -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -35,5 +31,3 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - is_freethreading diff --git a/.ci_support/linux_aarch64_cufile_supportedTrueis_freethreadingtruepython3.14.____cp314t.yaml b/.ci_support/linux_aarch64_cufile_supportedtruepython3.14.____cp314t.yaml similarity index 87% rename from .ci_support/linux_aarch64_cufile_supportedTrueis_freethreadingtruepython3.14.____cp314t.yaml rename to .ci_support/linux_aarch64_cufile_supportedtruepython3.14.____cp314t.yaml index 4d224baf..b8fc2ac8 100644 --- a/.ci_support/linux_aarch64_cufile_supportedTrueis_freethreadingtruepython3.14.____cp314t.yaml +++ b/.ci_support/linux_aarch64_cufile_supportedtruepython3.14.____cp314t.yaml @@ -11,17 +11,13 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'True' +- true cxx_compiler: - gxx cxx_compiler_version: - '14' docker_image: - quay.io/condaforge/linux-anvil-x86_64:alma9 -is_freethreading: -- true -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -35,5 +31,3 @@ target_platform: zip_keys: - - c_compiler_version - cxx_compiler_version -- - python - - is_freethreading diff --git a/.ci_support/win_64_is_freethreadingfalsepython3.10.____cpython.yaml b/.ci_support/win_64_python3.10.____cpython.yaml similarity index 75% rename from .ci_support/win_64_is_freethreadingfalsepython3.10.____cpython.yaml rename to .ci_support/win_64_python3.10.____cpython.yaml index 7310cf86..8e7c968f 100644 --- a/.ci_support/win_64_is_freethreadingfalsepython3.10.____cpython.yaml +++ b/.ci_support/win_64_python3.10.____cpython.yaml @@ -7,13 +7,9 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'True' +- true cxx_compiler: - vs2022 -is_freethreading: -- false -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -24,6 +20,3 @@ python_min: - '3.10' target_platform: - win-64 -zip_keys: -- - python - - is_freethreading diff --git a/.ci_support/win_64_is_freethreadingfalsepython3.11.____cpython.yaml b/.ci_support/win_64_python3.11.____cpython.yaml similarity index 75% rename from .ci_support/win_64_is_freethreadingfalsepython3.11.____cpython.yaml rename to .ci_support/win_64_python3.11.____cpython.yaml index dd317d16..89185c9b 100644 --- a/.ci_support/win_64_is_freethreadingfalsepython3.11.____cpython.yaml +++ b/.ci_support/win_64_python3.11.____cpython.yaml @@ -7,13 +7,9 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'True' +- true cxx_compiler: - vs2022 -is_freethreading: -- false -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -24,6 +20,3 @@ python_min: - '3.10' target_platform: - win-64 -zip_keys: -- - python - - is_freethreading diff --git a/.ci_support/win_64_is_freethreadingfalsepython3.12.____cpython.yaml b/.ci_support/win_64_python3.12.____cpython.yaml similarity index 75% rename from .ci_support/win_64_is_freethreadingfalsepython3.12.____cpython.yaml rename to .ci_support/win_64_python3.12.____cpython.yaml index 1e7b7111..6fd8561c 100644 --- a/.ci_support/win_64_is_freethreadingfalsepython3.12.____cpython.yaml +++ b/.ci_support/win_64_python3.12.____cpython.yaml @@ -7,13 +7,9 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'True' +- true cxx_compiler: - vs2022 -is_freethreading: -- false -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -24,6 +20,3 @@ python_min: - '3.10' target_platform: - win-64 -zip_keys: -- - python - - is_freethreading diff --git a/.ci_support/win_64_is_freethreadingfalsepython3.13.____cp313.yaml b/.ci_support/win_64_python3.13.____cp313.yaml similarity index 75% rename from .ci_support/win_64_is_freethreadingfalsepython3.13.____cp313.yaml rename to .ci_support/win_64_python3.13.____cp313.yaml index 09a4707e..c0894b17 100644 --- a/.ci_support/win_64_is_freethreadingfalsepython3.13.____cp313.yaml +++ b/.ci_support/win_64_python3.13.____cp313.yaml @@ -7,13 +7,9 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'True' +- true cxx_compiler: - vs2022 -is_freethreading: -- false -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -24,6 +20,3 @@ python_min: - '3.10' target_platform: - win-64 -zip_keys: -- - python - - is_freethreading diff --git a/.ci_support/win_64_is_freethreadingfalsepython3.14.____cp314.yaml b/.ci_support/win_64_python3.14.____cp314.yaml similarity index 75% rename from .ci_support/win_64_is_freethreadingfalsepython3.14.____cp314.yaml rename to .ci_support/win_64_python3.14.____cp314.yaml index f28f9e6d..c8b1b67e 100644 --- a/.ci_support/win_64_is_freethreadingfalsepython3.14.____cp314.yaml +++ b/.ci_support/win_64_python3.14.____cp314.yaml @@ -7,13 +7,9 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'True' +- true cxx_compiler: - vs2022 -is_freethreading: -- false -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -24,6 +20,3 @@ python_min: - '3.10' target_platform: - win-64 -zip_keys: -- - python - - is_freethreading diff --git a/.ci_support/win_64_is_freethreadingtruepython3.14.____cp314t.yaml b/.ci_support/win_64_python3.14.____cp314t.yaml similarity index 77% rename from .ci_support/win_64_is_freethreadingtruepython3.14.____cp314t.yaml rename to .ci_support/win_64_python3.14.____cp314t.yaml index 0ac3003c..822bf92b 100644 --- a/.ci_support/win_64_is_freethreadingtruepython3.14.____cp314t.yaml +++ b/.ci_support/win_64_python3.14.____cp314t.yaml @@ -7,13 +7,9 @@ channel_sources: channel_targets: - conda-forge main cufile_supported: -- 'True' +- true cxx_compiler: - vs2022 -is_freethreading: -- true -numpy: -- '2' pin_run_as_build: python: min_pin: x.x @@ -24,6 +20,3 @@ python_min: - '3.10' target_platform: - win-64 -zip_keys: -- - python - - is_freethreading diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b9406591..ac836bb4 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @bdice @cpcloud @jakirkham @kkraus14 @leofang @m3vaz @mmccarty @oleksandr-pavlyk @vyasr @vzhurba01 \ No newline at end of file +* @bdice @jakirkham @kkraus14 @leofang @m3vaz @mmccarty @oleksandr-pavlyk @vyasr @vzhurba01 \ No newline at end of file diff --git a/.github/workflows/conda-build.yml b/.github/workflows/conda-build.yml new file mode 100644 index 00000000..342faf53 --- /dev/null +++ b/.github/workflows/conda-build.yml @@ -0,0 +1,335 @@ +# This file was generated automatically from conda-smithy. To update this configuration, +# update the conda-forge.yml and/or the recipe/meta.yaml. +# -*- mode: yaml -*- + +name: Build conda package +on: + push: + + pull_request: + +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }} + cancel-in-progress: true + +jobs: + build: + name: ${{ matrix.CONFIG }} + runs-on: ${{ matrix.runs_on }} + timeout-minutes: 360 + strategy: + fail-fast: false + max-parallel: 50 + matrix: + include: + - CONFIG: linux_64_python3.10.____cpython + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + build_workspace_dir: build_artifacts + docker_run_args: + free_disk_space: skip + os: ubuntu + pagefile_size: 0 + resize_partitions: False + runs_on: ['ubuntu-latest'] + tools_install_dir: ~/miniforge3 + - CONFIG: linux_64_python3.11.____cpython + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + build_workspace_dir: build_artifacts + docker_run_args: + free_disk_space: skip + os: ubuntu + pagefile_size: 0 + resize_partitions: False + runs_on: ['ubuntu-latest'] + tools_install_dir: ~/miniforge3 + - CONFIG: linux_64_python3.12.____cpython + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + build_workspace_dir: build_artifacts + docker_run_args: + free_disk_space: skip + os: ubuntu + pagefile_size: 0 + resize_partitions: False + runs_on: ['ubuntu-latest'] + tools_install_dir: ~/miniforge3 + - CONFIG: linux_64_python3.13.____cp313 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + build_workspace_dir: build_artifacts + docker_run_args: + free_disk_space: skip + os: ubuntu + pagefile_size: 0 + resize_partitions: False + runs_on: ['ubuntu-latest'] + tools_install_dir: ~/miniforge3 + - CONFIG: linux_64_python3.14.____cp314 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + build_workspace_dir: build_artifacts + docker_run_args: + free_disk_space: skip + os: ubuntu + pagefile_size: 0 + resize_partitions: False + runs_on: ['ubuntu-latest'] + tools_install_dir: ~/miniforge3 + - CONFIG: linux_64_python3.14.____cp314t + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + build_workspace_dir: build_artifacts + docker_run_args: + free_disk_space: skip + os: ubuntu + pagefile_size: 0 + resize_partitions: False + runs_on: ['ubuntu-latest'] + tools_install_dir: ~/miniforge3 + - CONFIG: linux_aarch64_cufile_supportedfalsepython3.10.____cpython + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + build_workspace_dir: build_artifacts + docker_run_args: + free_disk_space: skip + os: ubuntu + pagefile_size: 0 + resize_partitions: False + runs_on: ['ubuntu-latest'] + tools_install_dir: ~/miniforge3 + - CONFIG: linux_aarch64_cufile_supportedfalsepython3.11.____cpython + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + build_workspace_dir: build_artifacts + docker_run_args: + free_disk_space: skip + os: ubuntu + pagefile_size: 0 + resize_partitions: False + runs_on: ['ubuntu-latest'] + tools_install_dir: ~/miniforge3 + - CONFIG: linux_aarch64_cufile_supportedfalsepython3.12.____cpython + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + build_workspace_dir: build_artifacts + docker_run_args: + free_disk_space: skip + os: ubuntu + pagefile_size: 0 + resize_partitions: False + runs_on: ['ubuntu-latest'] + tools_install_dir: ~/miniforge3 + - CONFIG: linux_aarch64_cufile_supportedfalsepython3.13.____cp313 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + build_workspace_dir: build_artifacts + docker_run_args: + free_disk_space: skip + os: ubuntu + pagefile_size: 0 + resize_partitions: False + runs_on: ['ubuntu-latest'] + tools_install_dir: ~/miniforge3 + - CONFIG: linux_aarch64_cufile_supportedfalsepython3.14.____cp314 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + build_workspace_dir: build_artifacts + docker_run_args: + free_disk_space: skip + os: ubuntu + pagefile_size: 0 + resize_partitions: False + runs_on: ['ubuntu-latest'] + tools_install_dir: ~/miniforge3 + - CONFIG: linux_aarch64_cufile_supportedfalsepython3.14.____cp314t + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + build_workspace_dir: build_artifacts + docker_run_args: + free_disk_space: skip + os: ubuntu + pagefile_size: 0 + resize_partitions: False + runs_on: ['ubuntu-latest'] + tools_install_dir: ~/miniforge3 + - CONFIG: linux_aarch64_cufile_supportedtruepython3.10.____cpython + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + build_workspace_dir: build_artifacts + docker_run_args: + free_disk_space: skip + os: ubuntu + pagefile_size: 0 + resize_partitions: False + runs_on: ['ubuntu-latest'] + tools_install_dir: ~/miniforge3 + - CONFIG: linux_aarch64_cufile_supportedtruepython3.11.____cpython + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + build_workspace_dir: build_artifacts + docker_run_args: + free_disk_space: skip + os: ubuntu + pagefile_size: 0 + resize_partitions: False + runs_on: ['ubuntu-latest'] + tools_install_dir: ~/miniforge3 + - CONFIG: linux_aarch64_cufile_supportedtruepython3.12.____cpython + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + build_workspace_dir: build_artifacts + docker_run_args: + free_disk_space: skip + os: ubuntu + pagefile_size: 0 + resize_partitions: False + runs_on: ['ubuntu-latest'] + tools_install_dir: ~/miniforge3 + - CONFIG: linux_aarch64_cufile_supportedtruepython3.13.____cp313 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + build_workspace_dir: build_artifacts + docker_run_args: + free_disk_space: skip + os: ubuntu + pagefile_size: 0 + resize_partitions: False + runs_on: ['ubuntu-latest'] + tools_install_dir: ~/miniforge3 + - CONFIG: linux_aarch64_cufile_supportedtruepython3.14.____cp314 + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + build_workspace_dir: build_artifacts + docker_run_args: + free_disk_space: skip + os: ubuntu + pagefile_size: 0 + resize_partitions: False + runs_on: ['ubuntu-latest'] + tools_install_dir: ~/miniforge3 + - CONFIG: linux_aarch64_cufile_supportedtruepython3.14.____cp314t + DOCKER_IMAGE: quay.io/condaforge/linux-anvil-x86_64:alma9 + STORE_BUILD_ARTIFACTS: False + UPLOAD_PACKAGES: True + build_workspace_dir: build_artifacts + docker_run_args: + free_disk_space: skip + os: ubuntu + pagefile_size: 0 + resize_partitions: False + runs_on: ['ubuntu-latest'] + tools_install_dir: ~/miniforge3 + steps: + + - name: Checkout code + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - name: Configure binfmt_misc + if: matrix.os == 'ubuntu' + shell: bash + run: | + if [[ "$(uname -m)" == "x86_64" ]]; then + docker run --rm --privileged multiarch/qemu-user-static:register --reset --credential yes + fi + + - name: Build on Linux + id: build-linux + if: matrix.os == 'ubuntu' + env: + CI: github_actions + CONDA_BLD_PATH: ${{ matrix.build_workspace_dir }} + CONDA_FORGE_DOCKER_RUN_ARGS: ${{ matrix.docker_run_args }} + CONFIG: ${{ matrix.CONFIG }} + MINIFORGE_HOME: ${{ matrix.tools_install_dir }} + DOCKER_IMAGE: ${{ matrix.DOCKER_IMAGE }} + UPLOAD_PACKAGES: ${{ matrix.UPLOAD_PACKAGES }} + RATTLER_BUILD_COLOR: always + RATTLER_BUILD_ENABLE_GITHUB_INTEGRATION: 'true' + BINSTAR_TOKEN: ${{ secrets.BINSTAR_TOKEN }} + FEEDSTOCK_TOKEN: ${{ secrets.FEEDSTOCK_TOKEN }} + STAGING_BINSTAR_TOKEN: ${{ secrets.STAGING_BINSTAR_TOKEN }} + shell: bash + run: | + export CONDA_BLD_PATH="${CONDA_BLD_PATH/#~/${HOME}}" + export FEEDSTOCK_NAME="$(basename $GITHUB_REPOSITORY)" + export GIT_BRANCH="$(basename $GITHUB_REF)" + export MINIFORGE_HOME="${MINIFORGE_HOME/#~/${HOME}}" + export flow_run_id="github_$GITHUB_RUN_ID" + export remote_url="https://github.com/$GITHUB_REPOSITORY" + export sha="$GITHUB_SHA" + if [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then + export IS_PR_BUILD="True" + else + export IS_PR_BUILD="False" + fi + ./.scripts/run_docker_build.sh + + - name: Build on macOS + id: build-macos + if: matrix.os == 'macos' + env: + CI: github_actions + CONDA_BLD_PATH: ${{ matrix.build_workspace_dir }} + CONFIG: ${{ matrix.CONFIG }} + MINIFORGE_HOME: ${{ matrix.tools_install_dir }} + UPLOAD_PACKAGES: ${{ matrix.UPLOAD_PACKAGES }} + RATTLER_BUILD_COLOR: always + RATTLER_BUILD_ENABLE_GITHUB_INTEGRATION: 'true' + BINSTAR_TOKEN: ${{ secrets.BINSTAR_TOKEN }} + FEEDSTOCK_TOKEN: ${{ secrets.FEEDSTOCK_TOKEN }} + STAGING_BINSTAR_TOKEN: ${{ secrets.STAGING_BINSTAR_TOKEN }} + shell: bash + run: | + export CONDA_BLD_PATH="${CONDA_BLD_PATH/#~/${HOME}}" + export FEEDSTOCK_NAME="$(basename $GITHUB_REPOSITORY)" + export GIT_BRANCH="$(basename $GITHUB_REF)" + export MINIFORGE_HOME="${MINIFORGE_HOME/#~/${HOME}}" + export flow_run_id="github_$GITHUB_RUN_ID" + export remote_url="https://github.com/$GITHUB_REPOSITORY" + export sha="$GITHUB_SHA" + if [[ "${GITHUB_EVENT_NAME}" == "pull_request" ]]; then + export IS_PR_BUILD="True" + else + export IS_PR_BUILD="False" + fi + ./.scripts/run_osx_build.sh + + - name: Build on windows + id: build-windows + if: matrix.os == 'windows' + shell: cmd + run: | + set "flow_run_id=github_%GITHUB_RUN_ID%" + set "remote_url=https://github.com/%GITHUB_REPOSITORY%" + set "sha=%GITHUB_SHA%" + call ".scripts\run_win_build.bat" + env: + CI: github_actions + CONDA_BLD_PATH: ${{ matrix.build_workspace_dir }} + CONFIG: ${{ matrix.CONFIG }} + MINIFORGE_HOME: ${{ matrix.tools_install_dir }} + PYTHONUNBUFFERED: 1 + UPLOAD_PACKAGES: ${{ matrix.UPLOAD_PACKAGES }} + RATTLER_BUILD_COLOR: always + RATTLER_BUILD_ENABLE_GITHUB_INTEGRATION: 'true' + BINSTAR_TOKEN: ${{ secrets.BINSTAR_TOKEN }} + FEEDSTOCK_TOKEN: ${{ secrets.FEEDSTOCK_TOKEN }} + STAGING_BINSTAR_TOKEN: ${{ secrets.STAGING_BINSTAR_TOKEN }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 47b5408a..86a9c55b 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ # Ignore all files and folders in root * !/conda-forge.yml +!.recipe_maintainers.json # 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. diff --git a/.scripts/build_steps.sh b/.scripts/build_steps.sh index d7df163b..d3e3e6d5 100755 --- a/.scripts/build_steps.sh +++ b/.scripts/build_steps.sh @@ -32,11 +32,19 @@ pkgs_dirs: solver: libmamba CONDARC -mv /opt/conda/conda-meta/history /opt/conda/conda-meta/history.$(date +%Y-%m-%d-%H-%M-%S) -echo > /opt/conda/conda-meta/history -micromamba install --root-prefix ~/.conda --prefix /opt/conda \ - --yes --override-channels --channel conda-forge --strict-channel-priority \ - pip python=3.12 conda-build conda-forge-ci-setup=4 "conda-build>=24.1" +pushd "${FEEDSTOCK_ROOT}" +arch=$(uname -m) +if [[ "$arch" == "x86_64" ]]; then + arch="64" +fi +sed -i.bak -e "s/platforms = .*/platforms = [\"linux-${arch}\"]/" -e "s/# __PLATFORM_SPECIFIC_ENV__ =/docker-build-linux-$arch =/" pixi.toml +echo "Creating environment" +PIXI_CACHE_DIR=/opt/conda pixi install --environment docker-build-linux-$arch +pixi list +echo "Activating environment" +eval "$(pixi shell-hook --environment docker-build-linux-$arch)" +mv pixi.toml.bak pixi.toml +popd export CONDA_LIBMAMBA_SOLVER_NO_CHANNELS_FROM_INSTALLED=1 # set up the condarc @@ -58,20 +66,37 @@ if [[ -f "${FEEDSTOCK_ROOT}/LICENSE.txt" ]]; then fi if [[ "${BUILD_WITH_CONDA_DEBUG:-0}" == 1 ]]; then - if [[ "x${BUILD_OUTPUT_ID:-}" != "x" ]]; then - EXTRA_CB_OPTIONS="${EXTRA_CB_OPTIONS:-} --output-id ${BUILD_OUTPUT_ID}" - fi - conda debug "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \ + # differences between conda-build vs. rattler-build + # - 1 step (conda debug + manually open shell) vs. 2 step (rb debug {setup, shell}) + # - recipe is positional vs. --recipe "${RECIPE_ROOT}" + # - --output-id vs. --output-name + # - --clobber-file vs. none + # - none vs. --target-platform + export CONDA_BLD_PATH="${CONDA_BLD_PATH:-${FEEDSTOCK_ROOT}/build_artifacts}" + rattler-build debug setup \ + --recipe "${RECIPE_ROOT}" \ + -m "${CI_SUPPORT}/${CONFIG}.yaml" \ ${EXTRA_CB_OPTIONS:-} \ - --clobber-file "${CI_SUPPORT}/clobber_${CONFIG}.yaml" + ${BUILD_OUTPUT_ID:+--output-name "${BUILD_OUTPUT_ID}"} \ + --target-platform "${HOST_PLATFORM}" - # Drop into an interactive shell - /bin/bash + rattler-build debug shell else - conda-build "${RECIPE_ROOT}" -m "${CI_SUPPORT}/${CONFIG}.yaml" \ - --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:-}" + # differences between conda-build vs. rattler-build + # - recipe is positional vs. --recipe "${RECIPE_ROOT}" + # - --suppress-variables vs. none + # - --clobber-file vs. none + # - none vs. --target-platform + # - --extra-meta a=b c=d vs. --extra-meta a=b --extra-meta c=d + + rattler-build build \ + --recipe "${RECIPE_ROOT}" \ + -m "${CI_SUPPORT}/${CONFIG}.yaml" \ + ${EXTRA_CB_OPTIONS:-} \ + --target-platform "${HOST_PLATFORM}" \ + --extra-meta flow_run_id="${flow_run_id:-}" \ + --extra-meta remote_url="${remote_url:-}" \ + --extra-meta sha="${sha:-}" ( startgroup "Inspecting artifacts" ) 2> /dev/null # inspect_artifacts was only added in conda-forge-ci-setup 4.9.4 diff --git a/.scripts/free_disk_space.sh b/.scripts/free_disk_space.sh new file mode 100755 index 00000000..5c716a94 --- /dev/null +++ b/.scripts/free_disk_space.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +set -ex + +FREE_DISK_SPACE=${1} + +if [[ ${FREE_DISK_SPACE} == skip ]]; then + exit 0 +fi + +df -h + +case ${OS} in + ubuntu) + DIRS_TO_REMOVE=( + /opt/ghc + /opt/hostedtoolcache + /usr/lib/jvm + /usr/local/.ghcup + /usr/local/lib/android + /usr/local/share/powershell + /usr/share/dotnet + /usr/share/swift + ) + + sudo rm -rf "${DIRS_TO_REMOVE[@]}" + + if type apt-get; then + BROWSERS="firefox google-chrome-stable microsoft-edge-stable" + BROWSERS_TO_REMOVE=$(dpkg --get-selections $BROWSERS 2>/dev/null | awk '{print $1}') + if [[ -n ${BROWSERS_TO_REMOVE} ]]; then + sudo apt-get remove --purge -y $BROWSERS_TO_REMOVE + fi + + sudo apt-get autoremove -y >& /dev/null + sudo apt-get autoclean -y >& /dev/null + fi + + if [[ ${FREE_DISK_SPACE} == max ]] && type docker; then + sudo docker image prune --all --force + fi + ;; + macos) + DIRS_TO_REMOVE=( + /Users/runner/Library/Android + /Users/runner/.dotnet + /Users/runner/hostedtoolcache + ) + rm -rf "${DIRS_TO_REMOVE[@]}" + ;; + windows) + DIRS_TO_REMOVE=( + C:/hostedtoolcache/windows + C:/Android + ) + + # rm is one of the fastest methods to remove files on Windows + rm -rf "${DIRS_TO_REMOVE[@]}" + ;; +esac + +df -h diff --git a/.scripts/run_docker_build.sh b/.scripts/run_docker_build.sh index b63b5a05..17d983f1 100755 --- a/.scripts/run_docker_build.sh +++ b/.scripts/run_docker_build.sh @@ -11,6 +11,8 @@ source .scripts/logging_utils.sh set -xeo pipefail +DOCKER_EXECUTABLE="${DOCKER_EXECUTABLE:-docker}" + THISDIR="$( cd "$( dirname "$0" )" >/dev/null && pwd )" PROVIDER_DIR="$(basename "$THISDIR")" @@ -27,7 +29,7 @@ if [[ "${sha:-}" == "" ]]; then popd fi -docker info +${DOCKER_EXECUTABLE} info # In order for the conda-build process in the container to write to the mounted # volumes, we need to run with the same id as the host machine, which is @@ -35,6 +37,7 @@ docker info export HOST_USER_ID=$(id -u) # Check if docker-machine is being used (normally on OSX) and get the uid from # the VM + if hash docker-machine 2> /dev/null && docker-machine active > /dev/null; then export HOST_USER_ID=$(docker-machine ssh $(docker-machine active) id -u) fi @@ -76,27 +79,56 @@ if [ -z "${CI}" ]; then DOCKER_RUN_ARGS="-it ${DOCKER_RUN_ARGS}" fi -( endgroup "Configure Docker" ) 2> /dev/null +# Default volume suffix for Docker (preserve original behavior) +VOLUME_SUFFIX=",z" + +# Podman-specific handling +if [ "${DOCKER_EXECUTABLE}" = "podman" ]; then + # Fix file permissions for rootless podman builds + podman unshare chown -R ${HOST_USER_ID}:${HOST_USER_ID} "${ARTIFACTS}" + podman unshare chown -R ${HOST_USER_ID}:${HOST_USER_ID} "${RECIPE_ROOT}" + + # Add SELinux label only if enforcing + if command -v getenforce &>/dev/null && [ "$(getenforce)" = "Enforcing" ]; then + VOLUME_SUFFIX=",z" + else + VOLUME_SUFFIX="" + fi +fi + +# When running on GitHub Actions, mount the step summary file into the container +# and point GITHUB_STEP_SUMMARY at it so that rattler-build's GitHub integration +# can write its summary. GitHub writes the file out to the job summary after the +# step finishes. +if [[ -n "${GITHUB_STEP_SUMMARY:-}" ]]; then + DOCKER_RUN_ARGS="${DOCKER_RUN_ARGS} -v ${GITHUB_STEP_SUMMARY}:/home/conda/github_step_summary:rw${VOLUME_SUFFIX},delegated -e GITHUB_STEP_SUMMARY=/home/conda/github_step_summary" +fi +( endgroup "Configure Docker" ) 2> /dev/null ( startgroup "Start Docker" ) 2> /dev/null export UPLOAD_PACKAGES="${UPLOAD_PACKAGES:-True}" export IS_PR_BUILD="${IS_PR_BUILD:-False}" -docker pull "${DOCKER_IMAGE}" -docker run ${DOCKER_RUN_ARGS} \ - -v "${RECIPE_ROOT}":/home/conda/recipe_root:rw,z,delegated \ - -v "${FEEDSTOCK_ROOT}":/home/conda/feedstock_root:rw,z,delegated \ + +${DOCKER_EXECUTABLE} pull "${DOCKER_IMAGE}" + +${DOCKER_EXECUTABLE} run ${DOCKER_RUN_ARGS} \ + -v "${RECIPE_ROOT}":/home/conda/recipe_root:rw${VOLUME_SUFFIX},delegated \ + -v "${FEEDSTOCK_ROOT}":/home/conda/feedstock_root:rw${VOLUME_SUFFIX},delegated \ + -e BUILD_OUTPUT_ID \ + -e BUILD_WITH_CONDA_DEBUG \ + -e CI \ -e CONFIG \ + -e CPU_COUNT \ + -e FEEDSTOCK_NAME \ + -e GIT_BRANCH \ + -e GITHUB_ACTIONS \ -e HOST_USER_ID \ - -e UPLOAD_PACKAGES \ -e IS_PR_BUILD \ - -e GIT_BRANCH \ + -e RATTLER_BUILD_COLOR \ + -e RATTLER_BUILD_ENABLE_GITHUB_INTEGRATION \ -e UPLOAD_ON_BRANCH \ - -e CI \ - -e FEEDSTOCK_NAME \ - -e CPU_COUNT \ - -e BUILD_WITH_CONDA_DEBUG \ - -e BUILD_OUTPUT_ID \ + -e UPLOAD_PACKAGES \ -e flow_run_id \ -e remote_url \ -e sha \ diff --git a/.scripts/run_win_build.bat b/.scripts/run_win_build.bat index 2b9fd756..90effaac 100755 --- a/.scripts/run_win_build.bat +++ b/.scripts/run_win_build.bat @@ -13,36 +13,49 @@ setlocal enableextensions enabledelayedexpansion FOR %%A IN ("%~dp0.") DO SET "REPO_ROOT=%%~dpA" -if "%MINIFORGE_HOME%"=="" set "MINIFORGE_HOME=%USERPROFILE%\Miniforge3" +if "%MINIFORGE_HOME%"=="" ( + set "MINIFORGE_HOME=%REPO_ROOT%\.pixi\envs\default" +) else ( + set "PIXI_CACHE_DIR=%MINIFORGE_HOME%" +) :: Remove trailing backslash, if present if "%MINIFORGE_HOME:~-1%"=="\" set "MINIFORGE_HOME=%MINIFORGE_HOME:~0,-1%" -call :start_group "Provisioning base env with micromamba" -set "MAMBA_ROOT_PREFIX=%MINIFORGE_HOME%-micromamba-%RANDOM%" -set "MICROMAMBA_VERSION=1.5.10-0" -set "MICROMAMBA_URL=https://github.com/mamba-org/micromamba-releases/releases/download/%MICROMAMBA_VERSION%/micromamba-win-64" -set "MICROMAMBA_TMPDIR=%TMP%\micromamba-%RANDOM%" -set "MICROMAMBA_EXE=%MICROMAMBA_TMPDIR%\micromamba.exe" - -echo Downloading micromamba %MICROMAMBA_VERSION% -if not exist "%MICROMAMBA_TMPDIR%" mkdir "%MICROMAMBA_TMPDIR%" -powershell -ExecutionPolicy Bypass -Command "(New-Object Net.WebClient).DownloadFile('%MICROMAMBA_URL%', '%MICROMAMBA_EXE%')" +call :start_group "Provisioning base env with pixi" +echo Installing pixi +powershell -NoProfile -ExecutionPolicy unrestricted -Command "iwr -useb https://pixi.sh/install.ps1 | iex" if !errorlevel! neq 0 exit /b !errorlevel! - -echo Creating environment -call "%MICROMAMBA_EXE%" create --yes --root-prefix "%MAMBA_ROOT_PREFIX%" --prefix "%MINIFORGE_HOME%" ^ - --channel conda-forge ^ - pip python=3.12 conda-build conda-forge-ci-setup=4 "conda-build>=24.1" +set "PATH=%USERPROFILE%\.pixi\bin;%PATH%" +echo Installing environment +if "%PIXI_CACHE_DIR%"=="%MINIFORGE_HOME%" ( + mkdir "%MINIFORGE_HOME%" + copy /Y pixi.toml "%MINIFORGE_HOME%" + pushd "%MINIFORGE_HOME%" +) else ( + pushd "%REPO_ROOT%" +) +move /y pixi.toml pixi.toml.bak +set "arch=64" +if "%PROCESSOR_ARCHITECTURE%"=="ARM64" set "arch=arm64" +powershell -NoProfile -ExecutionPolicy unrestricted -Command "(Get-Content pixi.toml.bak -Encoding UTF8) -replace 'platforms = .*', 'platforms = [''win-%arch%'']' | Out-File pixi.toml -Encoding UTF8" +:: Git on Windows needs to run post link scripts to properly set up SSL certificates +pixi config set --global run-post-link-scripts insecure +if !errorlevel! neq 0 exit /b !errorlevel! +pixi install +if !errorlevel! neq 0 exit /b !errorlevel! +pixi list +if !errorlevel! neq 0 exit /b !errorlevel! +set "ACTIVATE_PIXI=%TMP%\pixi-activate-%RANDOM%.bat" +pixi shell-hook > "%ACTIVATE_PIXI%" +if !errorlevel! neq 0 exit /b !errorlevel! +call "%ACTIVATE_PIXI%" if !errorlevel! neq 0 exit /b !errorlevel! -echo Removing %MAMBA_ROOT_PREFIX% -del /S /Q "%MAMBA_ROOT_PREFIX%" >nul -del /S /Q "%MICROMAMBA_TMPDIR%" >nul +move /y pixi.toml.bak pixi.toml +popd call :end_group call :start_group "Configuring conda" :: Activate the base conda environment -echo Activating environment -call "%MINIFORGE_HOME%\Scripts\activate.bat" :: Configure the solver set "CONDA_SOLVER=libmamba" if !errorlevel! neq 0 exit /b !errorlevel! @@ -64,14 +77,14 @@ if EXIST 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%" + set "EXTRA_CB_OPTIONS=%EXTRA_CB_OPTIONS% --extra-meta flow_run_id=%flow_run_id% --extra-meta remote_url=%remote_url% --extra-meta 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% +rattler-build.exe build --recipe "recipe" -m .ci_support\%CONFIG%.yaml %EXTRA_CB_OPTIONS% --target-platform %HOST_PLATFORM% if !errorlevel! neq 0 exit /b !errorlevel! call :start_group "Inspecting artifacts" diff --git a/README.md b/README.md index f10330be..c4bf1e1f 100644 --- a/README.md +++ b/README.md @@ -7,25 +7,9 @@ Feedstock license: [BSD-3-Clause](https://github.com/conda-forge/cuda-python-fee About cuda-python ----------------- -Home: https://nvidia.github.io/cuda-python/ - -Package license: [LicenseRef-NVIDIA-SOFTWARE-LICENSE](https://github.com/NVIDIA/cuda-python/blob/main/LICENSE) - -Summary: CUDA Python - -Development: https://github.com/NVIDIA/cuda-python - -Documentation: https://nvidia.github.io/cuda-python/ - -CUDA Python is the home for accessing NVIDIA's CUDA platform from Python. - - -About cuda-bindings -------------------- - Home: https://nvidia.github.io/cuda-python/cuda-bindings -Package license: [LicenseRef-NVIDIA-SOFTWARE-LICENSE](https://github.com/NVIDIA/cuda-python/blob/main/LICENSE) +Package license: LicenseRef-NVIDIA-SOFTWARE-LICENSE Summary: CUDA Python Low-level Bindings @@ -36,13 +20,12 @@ Documentation: https://nvidia.github.io/cuda-python/cuda-bindings CUDA Python provides a standard set of low-level interfaces, providing full coverage of and access to the CUDA host APIs from Python. - About cuda-python ----------------- Home: https://nvidia.github.io/cuda-python/ -Package license: [LicenseRef-NVIDIA-SOFTWARE-LICENSE](https://github.com/NVIDIA/cuda-python/blob/main/LICENSE) +Package license: LicenseRef-NVIDIA-SOFTWARE-LICENSE Summary: CUDA Python @@ -52,12 +35,18 @@ Documentation: https://nvidia.github.io/cuda-python/ CUDA Python is the home for accessing NVIDIA’s CUDA platform from Python. - Current build status ==================== - +
+ + + @@ -71,171 +60,129 @@ Current build status
GitHub Actions + + + +
Azure
- - - - - - - - - - - - - - - - - - - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + @@ -369,7 +316,6 @@ Feedstock Maintainers ===================== * [@bdice](https://github.com/bdice/) -* [@cpcloud](https://github.com/cpcloud/) * [@jakirkham](https://github.com/jakirkham/) * [@kkraus14](https://github.com/kkraus14/) * [@leofang](https://github.com/leofang/) diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 04a0c254..b4a7ba15 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -28,5 +28,4 @@ stages: condition: and(succeeded(), eq(dependencies.Check.outputs['Skip.result.start_main'], 'true')) dependsOn: Check jobs: - - template: ./.azure-pipelines/azure-pipelines-linux.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 05493e4d..3beb68cc 100755 --- a/build-locally.py +++ b/build-locally.py @@ -98,7 +98,10 @@ def main(args=None): p.add_argument( "--debug", action="store_true", - help="Setup debug environment using `conda debug`", + help=( + "Setup debug environment using `conda debug` " + "(or `rattler-build debug` for rattler-build recipes)" + ), ) p.add_argument("--output-id", help="If running debug, specify the output to setup.") diff --git a/conda-forge.yml b/conda-forge.yml index b0d3e621..6e2b9a8d 100644 --- a/conda-forge.yml +++ b/conda-forge.yml @@ -10,7 +10,9 @@ build_platform: linux_ppc64le: linux_64 conda_build: pkg_format: '2' +conda_build_tool: rattler-build conda_forge_output_validation: true +conda_install_tool: pixi github: branch_name: main tooling_branch_name: main diff --git a/pixi.toml b/pixi.toml new file mode 100644 index 00000000..2c79793e --- /dev/null +++ b/pixi.toml @@ -0,0 +1,190 @@ +# -*- mode: toml -*- +# This file was generated automatically from conda-smithy. To update this configuration, +# update the conda-forge.yml and/or the recipe/meta.yaml. +"$schema" = "https://pixi.sh/v0.59.0/schema/manifest/schema.json" + +[workspace] +name = "cuda-python-feedstock" +version = "2026.6.14" # conda-smithy version used to generate this file +description = "Pixi configuration for conda-forge/cuda-python-feedstock" +authors = ["@conda-forge/cuda-python"] +channels = ["conda-forge"] +platforms = ["linux-64", "linux-aarch64", "linux-ppc64le", "osx-64", "win-64"] +requires-pixi = ">=0.59.0" + +[dependencies] +conda-build = ">=26.3" +conda-forge-ci-setup = "4.*" +rattler-build = "*" + +[tasks.inspect-all] +cmd = "inspect_artifacts --all-packages" +description = "List contents of all packages found in rattler-build build directory." +[tasks.build] +cmd = "rattler-build build --recipe recipe" +description = "Build cuda-python-feedstock directly (without setup scripts), no particular variant specified" +[tasks."build-linux_64_python3.10.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_64_python3.10.____cpython.yaml" +description = "Build cuda-python-feedstock with variant linux_64_python3.10.____cpython directly (without setup scripts)" +[tasks."inspect-linux_64_python3.10.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_64_python3.10.____cpython.yaml" +description = "List contents of cuda-python-feedstock packages built for variant linux_64_python3.10.____cpython" +[tasks."build-linux_64_python3.11.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_64_python3.11.____cpython.yaml" +description = "Build cuda-python-feedstock with variant linux_64_python3.11.____cpython directly (without setup scripts)" +[tasks."inspect-linux_64_python3.11.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_64_python3.11.____cpython.yaml" +description = "List contents of cuda-python-feedstock packages built for variant linux_64_python3.11.____cpython" +[tasks."build-linux_64_python3.12.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_64_python3.12.____cpython.yaml" +description = "Build cuda-python-feedstock with variant linux_64_python3.12.____cpython directly (without setup scripts)" +[tasks."inspect-linux_64_python3.12.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_64_python3.12.____cpython.yaml" +description = "List contents of cuda-python-feedstock packages built for variant linux_64_python3.12.____cpython" +[tasks."build-linux_64_python3.13.____cp313"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_64_python3.13.____cp313.yaml" +description = "Build cuda-python-feedstock with variant linux_64_python3.13.____cp313 directly (without setup scripts)" +[tasks."inspect-linux_64_python3.13.____cp313"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_64_python3.13.____cp313.yaml" +description = "List contents of cuda-python-feedstock packages built for variant linux_64_python3.13.____cp313" +[tasks."build-linux_64_python3.14.____cp314"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_64_python3.14.____cp314.yaml" +description = "Build cuda-python-feedstock with variant linux_64_python3.14.____cp314 directly (without setup scripts)" +[tasks."inspect-linux_64_python3.14.____cp314"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_64_python3.14.____cp314.yaml" +description = "List contents of cuda-python-feedstock packages built for variant linux_64_python3.14.____cp314" +[tasks."build-linux_64_python3.14.____cp314t"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_64_python3.14.____cp314t.yaml" +description = "Build cuda-python-feedstock with variant linux_64_python3.14.____cp314t directly (without setup scripts)" +[tasks."inspect-linux_64_python3.14.____cp314t"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_64_python3.14.____cp314t.yaml" +description = "List contents of cuda-python-feedstock packages built for variant linux_64_python3.14.____cp314t" +[tasks."build-linux_aarch64_cufile_supportedfalsepython3.10.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_aarch64_cufile_supportedfalsepython3.10.____cpython.yaml" +description = "Build cuda-python-feedstock with variant linux_aarch64_cufile_supportedfalsepython3.10.____cpython directly (without setup scripts)" +[tasks."inspect-linux_aarch64_cufile_supportedfalsepython3.10.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_aarch64_cufile_supportedfalsepython3.10.____cpython.yaml" +description = "List contents of cuda-python-feedstock packages built for variant linux_aarch64_cufile_supportedfalsepython3.10.____cpython" +[tasks."build-linux_aarch64_cufile_supportedfalsepython3.11.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_aarch64_cufile_supportedfalsepython3.11.____cpython.yaml" +description = "Build cuda-python-feedstock with variant linux_aarch64_cufile_supportedfalsepython3.11.____cpython directly (without setup scripts)" +[tasks."inspect-linux_aarch64_cufile_supportedfalsepython3.11.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_aarch64_cufile_supportedfalsepython3.11.____cpython.yaml" +description = "List contents of cuda-python-feedstock packages built for variant linux_aarch64_cufile_supportedfalsepython3.11.____cpython" +[tasks."build-linux_aarch64_cufile_supportedfalsepython3.12.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_aarch64_cufile_supportedfalsepython3.12.____cpython.yaml" +description = "Build cuda-python-feedstock with variant linux_aarch64_cufile_supportedfalsepython3.12.____cpython directly (without setup scripts)" +[tasks."inspect-linux_aarch64_cufile_supportedfalsepython3.12.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_aarch64_cufile_supportedfalsepython3.12.____cpython.yaml" +description = "List contents of cuda-python-feedstock packages built for variant linux_aarch64_cufile_supportedfalsepython3.12.____cpython" +[tasks."build-linux_aarch64_cufile_supportedfalsepython3.13.____cp313"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_aarch64_cufile_supportedfalsepython3.13.____cp313.yaml" +description = "Build cuda-python-feedstock with variant linux_aarch64_cufile_supportedfalsepython3.13.____cp313 directly (without setup scripts)" +[tasks."inspect-linux_aarch64_cufile_supportedfalsepython3.13.____cp313"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_aarch64_cufile_supportedfalsepython3.13.____cp313.yaml" +description = "List contents of cuda-python-feedstock packages built for variant linux_aarch64_cufile_supportedfalsepython3.13.____cp313" +[tasks."build-linux_aarch64_cufile_supportedfalsepython3.14.____cp314"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_aarch64_cufile_supportedfalsepython3.14.____cp314.yaml" +description = "Build cuda-python-feedstock with variant linux_aarch64_cufile_supportedfalsepython3.14.____cp314 directly (without setup scripts)" +[tasks."inspect-linux_aarch64_cufile_supportedfalsepython3.14.____cp314"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_aarch64_cufile_supportedfalsepython3.14.____cp314.yaml" +description = "List contents of cuda-python-feedstock packages built for variant linux_aarch64_cufile_supportedfalsepython3.14.____cp314" +[tasks."build-linux_aarch64_cufile_supportedfalsepython3.14.____cp314t"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_aarch64_cufile_supportedfalsepython3.14.____cp314t.yaml" +description = "Build cuda-python-feedstock with variant linux_aarch64_cufile_supportedfalsepython3.14.____cp314t directly (without setup scripts)" +[tasks."inspect-linux_aarch64_cufile_supportedfalsepython3.14.____cp314t"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_aarch64_cufile_supportedfalsepython3.14.____cp314t.yaml" +description = "List contents of cuda-python-feedstock packages built for variant linux_aarch64_cufile_supportedfalsepython3.14.____cp314t" +[tasks."build-linux_aarch64_cufile_supportedtruepython3.10.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_aarch64_cufile_supportedtruepython3.10.____cpython.yaml" +description = "Build cuda-python-feedstock with variant linux_aarch64_cufile_supportedtruepython3.10.____cpython directly (without setup scripts)" +[tasks."inspect-linux_aarch64_cufile_supportedtruepython3.10.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_aarch64_cufile_supportedtruepython3.10.____cpython.yaml" +description = "List contents of cuda-python-feedstock packages built for variant linux_aarch64_cufile_supportedtruepython3.10.____cpython" +[tasks."build-linux_aarch64_cufile_supportedtruepython3.11.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_aarch64_cufile_supportedtruepython3.11.____cpython.yaml" +description = "Build cuda-python-feedstock with variant linux_aarch64_cufile_supportedtruepython3.11.____cpython directly (without setup scripts)" +[tasks."inspect-linux_aarch64_cufile_supportedtruepython3.11.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_aarch64_cufile_supportedtruepython3.11.____cpython.yaml" +description = "List contents of cuda-python-feedstock packages built for variant linux_aarch64_cufile_supportedtruepython3.11.____cpython" +[tasks."build-linux_aarch64_cufile_supportedtruepython3.12.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_aarch64_cufile_supportedtruepython3.12.____cpython.yaml" +description = "Build cuda-python-feedstock with variant linux_aarch64_cufile_supportedtruepython3.12.____cpython directly (without setup scripts)" +[tasks."inspect-linux_aarch64_cufile_supportedtruepython3.12.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_aarch64_cufile_supportedtruepython3.12.____cpython.yaml" +description = "List contents of cuda-python-feedstock packages built for variant linux_aarch64_cufile_supportedtruepython3.12.____cpython" +[tasks."build-linux_aarch64_cufile_supportedtruepython3.13.____cp313"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_aarch64_cufile_supportedtruepython3.13.____cp313.yaml" +description = "Build cuda-python-feedstock with variant linux_aarch64_cufile_supportedtruepython3.13.____cp313 directly (without setup scripts)" +[tasks."inspect-linux_aarch64_cufile_supportedtruepython3.13.____cp313"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_aarch64_cufile_supportedtruepython3.13.____cp313.yaml" +description = "List contents of cuda-python-feedstock packages built for variant linux_aarch64_cufile_supportedtruepython3.13.____cp313" +[tasks."build-linux_aarch64_cufile_supportedtruepython3.14.____cp314"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_aarch64_cufile_supportedtruepython3.14.____cp314.yaml" +description = "Build cuda-python-feedstock with variant linux_aarch64_cufile_supportedtruepython3.14.____cp314 directly (without setup scripts)" +[tasks."inspect-linux_aarch64_cufile_supportedtruepython3.14.____cp314"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_aarch64_cufile_supportedtruepython3.14.____cp314.yaml" +description = "List contents of cuda-python-feedstock packages built for variant linux_aarch64_cufile_supportedtruepython3.14.____cp314" +[tasks."build-linux_aarch64_cufile_supportedtruepython3.14.____cp314t"] +cmd = "rattler-build build --recipe recipe -m .ci_support/linux_aarch64_cufile_supportedtruepython3.14.____cp314t.yaml" +description = "Build cuda-python-feedstock with variant linux_aarch64_cufile_supportedtruepython3.14.____cp314t directly (without setup scripts)" +[tasks."inspect-linux_aarch64_cufile_supportedtruepython3.14.____cp314t"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/linux_aarch64_cufile_supportedtruepython3.14.____cp314t.yaml" +description = "List contents of cuda-python-feedstock packages built for variant linux_aarch64_cufile_supportedtruepython3.14.____cp314t" +[tasks."build-win_64_python3.10.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/win_64_python3.10.____cpython.yaml" +description = "Build cuda-python-feedstock with variant win_64_python3.10.____cpython directly (without setup scripts)" +[tasks."inspect-win_64_python3.10.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/win_64_python3.10.____cpython.yaml" +description = "List contents of cuda-python-feedstock packages built for variant win_64_python3.10.____cpython" +[tasks."build-win_64_python3.11.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/win_64_python3.11.____cpython.yaml" +description = "Build cuda-python-feedstock with variant win_64_python3.11.____cpython directly (without setup scripts)" +[tasks."inspect-win_64_python3.11.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/win_64_python3.11.____cpython.yaml" +description = "List contents of cuda-python-feedstock packages built for variant win_64_python3.11.____cpython" +[tasks."build-win_64_python3.12.____cpython"] +cmd = "rattler-build build --recipe recipe -m .ci_support/win_64_python3.12.____cpython.yaml" +description = "Build cuda-python-feedstock with variant win_64_python3.12.____cpython directly (without setup scripts)" +[tasks."inspect-win_64_python3.12.____cpython"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/win_64_python3.12.____cpython.yaml" +description = "List contents of cuda-python-feedstock packages built for variant win_64_python3.12.____cpython" +[tasks."build-win_64_python3.13.____cp313"] +cmd = "rattler-build build --recipe recipe -m .ci_support/win_64_python3.13.____cp313.yaml" +description = "Build cuda-python-feedstock with variant win_64_python3.13.____cp313 directly (without setup scripts)" +[tasks."inspect-win_64_python3.13.____cp313"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/win_64_python3.13.____cp313.yaml" +description = "List contents of cuda-python-feedstock packages built for variant win_64_python3.13.____cp313" +[tasks."build-win_64_python3.14.____cp314"] +cmd = "rattler-build build --recipe recipe -m .ci_support/win_64_python3.14.____cp314.yaml" +description = "Build cuda-python-feedstock with variant win_64_python3.14.____cp314 directly (without setup scripts)" +[tasks."inspect-win_64_python3.14.____cp314"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/win_64_python3.14.____cp314.yaml" +description = "List contents of cuda-python-feedstock packages built for variant win_64_python3.14.____cp314" +[tasks."build-win_64_python3.14.____cp314t"] +cmd = "rattler-build build --recipe recipe -m .ci_support/win_64_python3.14.____cp314t.yaml" +description = "Build cuda-python-feedstock with variant win_64_python3.14.____cp314t directly (without setup scripts)" +[tasks."inspect-win_64_python3.14.____cp314t"] +cmd = "inspect_artifacts --recipe-dir recipe -m .ci_support/win_64_python3.14.____cp314t.yaml" +description = "List contents of cuda-python-feedstock packages built for variant win_64_python3.14.____cp314t" + +[feature.smithy.dependencies] +conda-smithy = "*" +[feature.smithy.tasks.build-locally] +cmd = "python ./build-locally.py" +description = "Build packages locally using the same setup scripts used in conda-forge's CI" +[feature.smithy.tasks.smithy] +cmd = "conda-smithy" +description = "Run conda-smithy. Pass necessary arguments." +[feature.smithy.tasks.rerender] +cmd = "conda-smithy rerender" +description = "Rerender the feedstock." +[feature.smithy.tasks.lint] +cmd = "conda-smithy lint --conda-forge recipe" +description = "Lint the feedstock recipe" + +[environments] +smithy = ["smithy"] + +# This is a copy of default, to be enabled by build_steps.sh during Docker builds +# __PLATFORM_SPECIFIC_ENV__ = [] diff --git a/recipe/build_output.bat b/recipe/build_output.bat index 49d2a4ef..97397c39 100644 --- a/recipe/build_output.bat +++ b/recipe/build_output.bat @@ -1,10 +1,8 @@ +set "CUDA_HOME=%PREFIX%\\%SUBDIR%" +set "LIB=%PREFIX%\\%SUBDIR%\\lib\\%TARGET_NAME%;%LIB%" + set DIR_NAME=%PKG_NAME:-=_% cd %DIR_NAME% -if "%DIR_NAME%"=="cuda_python" ( - rem The upstream setup.py calls get_version() without dist_name, - rem so only the generic SETUPTOOLS_SCM_PRETEND_VERSION is honored. - set SETUPTOOLS_SCM_PRETEND_VERSION=%PKG_VERSION% -) if "%DIR_NAME%"=="cuda_bindings" ( rem The upstream setup.py calls get_version() without dist_name, rem so only the generic SETUPTOOLS_SCM_PRETEND_VERSION is honored. diff --git a/recipe/build_output.sh b/recipe/build_output.sh index 0cd9a9c8..05bfef88 100644 --- a/recipe/build_output.sh +++ b/recipe/build_output.sh @@ -1,5 +1,7 @@ #!/bin/bash +export CUDA_HOME="${PREFIX}/${SUBDIR}" + DIR_NAME="$(echo $PKG_NAME | tr '-' '_')" cd $DIR_NAME if [[ ${DIR_NAME} == "cuda_python" || ${DIR_NAME} == "cuda_bindings" ]]; then diff --git a/recipe/conda_build_config.yaml b/recipe/conda_build_config.yaml index 77a62a1d..417dd6e8 100644 --- a/recipe/conda_build_config.yaml +++ b/recipe/conda_build_config.yaml @@ -1,5 +1,5 @@ # libcufile only exists on ARM for CUDA 12.2+. We split into two ARM packages # with/without libcufile support. cufile_supported: - - True - - False # [aarch64] + - true + - false # [aarch64] diff --git a/recipe/meta.yaml b/recipe/meta.yaml deleted file mode 100644 index e40ccedf..00000000 --- a/recipe/meta.yaml +++ /dev/null @@ -1,217 +0,0 @@ -{% set number = 0 %} -{% set version = "12.9.7" %} -{% set sha256 = "9df6ff7121e11b158730ef39350c111728c9d1a2450124f463f7f4026c89d42f" %} - -{% set is_freethreading = environ.get("is_freethreading", False) %} -{% set bindings_major_version = version.split(".")[0]|int %} -{% set bindings_minor_version = version.split(".")[1]|int %} -{% set bindings_patch_version = version.split(".")[2]|int %} -{% set target_name = "x86_64-linux" %} # [linux64] -{% set target_name = "sbsa-linux" %} # [aarch64] -{% set target_name = "x64" %} # [win64] -{% set subdir = "" %} -{% set subdir = os.sep.join(["", "targets", target_name]) %} # [linux64 or aarch64] -{% set subdir = os.sep.join(["", "Library"]) %} # [win64] - -package: - name: cuda-python-split - version: 1 - -source: - url: https://github.com/NVIDIA/cuda-python/releases/download/v{{ version }}/cuda-python-v{{ version }}.tar.gz - sha256: {{ sha256 }} - -build: - number: 0 - skip: true # [py < 39 or ppc64le or osx] - -# Have certain top-level requirements so conda-smithy can render the correct variants -requirements: - build: - - {{ compiler('c') }} - - {{ compiler('cxx') }} - - {{ stdlib('c') }} - host: - - python - -outputs: - - - name: cuda-python - version: {{ version }} - script: build_output.sh # [linux] - script: build_output.bat # [win] - build: - noarch: python - number: {{ number }} - skip: true # [not linux64] - requirements: - host: - - python {{ python_min }}.* - - pip - - setuptools - - setuptools-scm >=8 - run: - - python >={{ python_min }} - - {{ pin_subpackage('cuda-bindings', max_pin='x.x') }} - - cuda-version >=12.0,<13.0a0 # [not aarch64] - - cuda-version >=12.0,<12.2a0 # [aarch64 and not cufile_supported] - - cuda-version >=12.2,<13.0a0 # [aarch64 and cufile_supported] - test: - requires: - - python >={{ python_min }} - - numpy - imports: - - cuda.bindings - - cuda.bindings.driver - - cuda.bindings.runtime - - cuda.bindings.cufile # [linux] - - cuda.bindings.nvrtc - - cuda.bindings.nvjitlink - - cuda.bindings.nvvm - - cuda.bindings.nvml - - cuda.bindings.nvfatbin - commands: - - python -c "import importlib.metadata; importlib.metadata.version('cuda-python')" - about: - home: https://nvidia.github.io/cuda-python/ - license: LicenseRef-NVIDIA-SOFTWARE-LICENSE - license_file: cuda_python/LICENSE - license_url: https://github.com/NVIDIA/cuda-python/blob/main/LICENSE - summary: CUDA Python - description: | - CUDA Python is the home for accessing NVIDIA’s CUDA platform from Python. - doc_url: https://nvidia.github.io/cuda-python/ - dev_url: https://github.com/NVIDIA/cuda-python - - - name: cuda-bindings - version: {{ version }} - script: build_output.sh # [linux] - script: build_output.bat # [win] - build: - number: {{ number }} - script_env: - # Ensure that CUDA includes can be found by the host compiler - - CUDA_HOME={{ PREFIX ~ subdir }} - ignore_run_exports_from: - # The run-exports from these dev packages are too tight, so we ignore them. - # The cuda-python package supports CUDA Enhanced Compatibility through its - # use of dlopen, so it is compatible with other CUDA minor versions. - - cuda-nvcc-impl - - cuda-cudart-dev - - cuda-cudart-static - - cuda-nvrtc-dev - - libcufile-dev # [linux] - requirements: - build: - - {{ compiler('c') }} - - {{ compiler('cxx') }} - - {{ stdlib('c') }} - - cross-python_{{ target_platform }} # [build_platform != target_platform] - - python # [build_platform != target_platform] - - cython # [build_platform != target_platform] - host: - # cuda.bindings needs to be built with the matching major.minor headers - - cuda-version {{ bindings_major_version }}.{{ bindings_minor_version }} - - cuda-crt-dev_{{ target_platform }} - - cuda-cudart-dev - - cuda-cudart-static - - cuda-cudart - - cuda-nvcc-impl - - cuda-nvrtc - - cuda-nvrtc-dev - - cuda-profiler-api - - libcufile # [linux and cufile_supported] - - libcufile-dev # [linux] - - cython - - pip - - pyclibrary - - python - - setuptools - - setuptools-scm >=8 - run: - - python - - cuda-pathfinder >=1.5.5,<2 - - {{ pin_compatible('cuda-version', min_pin='x', max_pin='x') }} # [not aarch64] - - cuda-version >=12.0,<12.2a0 # [aarch64 and not cufile_supported] - - cuda-version >=12.2,<13.0a0 # [aarch64 and cufile_supported] - # cuda-python requires cuda-nvrtc from the same major version. We ignored - # run-exports of cuda-nvrtc-dev and instead allow a looser pinning here. - # Same for cuda-nvcc-impl. - - {{ pin_compatible('cuda-nvrtc', min_pin='x', max_pin='x') }} - - {{ pin_compatible('cuda-nvcc-impl', min_pin='x', max_pin='x') }} - - {{ pin_compatible('libcufile', min_pin='x', max_pin='x') }} # [linux and cufile_supported] - - libnvjitlink >=12.3,<13 - run_constrained: - # cuda-cudart is not a hard dependency because cuda-python statically links to - # cudart. This package is optionally dlopen'd for getting the local cudart - # version with cuda.cudart.getLocalRuntimeVersion(). We ignored run-exports - # of cuda-cudart-dev and instead allow a looser pinning here. - - {{ pin_compatible('cuda-cudart', min_pin='x', max_pin='x') }} - - {{ pin_subpackage('cuda-python', max_pin='x.x') }} - test: - requires: - - cuda-nvcc - - cuda-nvrtc-dev - - cuda-profiler-api - - cython - - pip - - numpy - files: - - test_cimport.pyx - commands: - - export C_INCLUDE_PATH="$CONDA_PREFIX/{{ subdir }}/include" # [linux] - - set "CL=%CL% /I%CONDA_PREFIX%\{{ subdir }}\include" # [win] - # workaround for https://github.com/conda-forge/setuptools-feedstock/issues/399 - - pip install setuptools - - cythonize -i -3 -Xfreethreading_compatible=True *.pyx - - python -c "import test_cimport; test_cimport.test()" - - python -c "import cuda.bindings; print(cuda.bindings.__version__)" - imports: - - cuda - - cuda.cuda - - cuda.cudart - - cuda.bindings - - cuda.bindings.driver - - cuda.bindings.runtime - - cuda.bindings.cufile # [linux] - - cuda.bindings.nvrtc - - cuda.bindings.nvjitlink - - cuda.bindings.nvvm - - cuda.bindings.nvml - - cuda.bindings.nvfatbin - about: - home: https://nvidia.github.io/cuda-python/cuda-bindings - license: LicenseRef-NVIDIA-SOFTWARE-LICENSE - license_file: cuda_bindings/LICENSE - license_url: https://github.com/NVIDIA/cuda-python/blob/main/LICENSE - summary: CUDA Python Low-level Bindings - description: | - CUDA Python provides a standard set of low-level interfaces, - providing full coverage of and access to the CUDA host APIs from Python. - doc_url: https://nvidia.github.io/cuda-python/cuda-bindings - dev_url: https://github.com/NVIDIA/cuda-python - -about: - home: https://nvidia.github.io/cuda-python/ - license: LicenseRef-NVIDIA-SOFTWARE-LICENSE - license_file: LICENSE.md - license_url: https://github.com/NVIDIA/cuda-python/blob/main/LICENSE - summary: CUDA Python - description: | - CUDA Python is the home for accessing NVIDIA's CUDA platform from Python. - doc_url: https://nvidia.github.io/cuda-python/ - dev_url: https://github.com/NVIDIA/cuda-python - -extra: - feedstock-name: cuda-python - recipe-maintainers: - - cpcloud - - bdice - - jakirkham - - leofang - - m3vaz - - mmccarty - - vyasr - - vzhurba01 - - kkraus14 - - oleksandr-pavlyk diff --git a/recipe/recipe.yaml b/recipe/recipe.yaml new file mode 100644 index 00000000..7068d0f6 --- /dev/null +++ b/recipe/recipe.yaml @@ -0,0 +1,258 @@ +# Have certain top-level requirements so conda-smithy can render the correct variants +schema_version: 1 + +context: + number: 1 + version: "12.9.7" + sha256: 9df6ff7121e11b158730ef39350c111728c9d1a2450124f463f7f4026c89d42f + bindings_major_version: ${{ (version | split("."))[0] | int }} + bindings_minor_version: ${{ (version | split("."))[1] | int }} + bindings_patch_version: ${{ (version | split("."))[2] | int }} + target_name: ${{ "sbsa-linux" if aarch64 else 'x86_64-linux' if linux else "x64" if win else "" }} + subdir: ${{ "targets/" ~ target_name if aarch64 or linux else "Library\\" if win else "" }} + # libcufile only exists on ARM for CUDA 12.2+. We split into two ARM packages + # with/without libcufile support. + cufile_supported: ${{ cufile_supported }} + +recipe: + name: cuda-python-split + version: 1 + +source: + url: https://github.com/NVIDIA/cuda-python/releases/download/v${{ version }}/cuda-python-v${{ version }}.tar.gz + sha256: ${{ sha256 }} + +build: + number: 0 + skip: match(python, "<3.10") or ppc64le or osx + +outputs: + - package: + name: cuda-python + version: ${{ version }} + build: + number: ${{ number }} + skip: not linux64 + noarch: python + # Deterministic build string so all variant.use_keys: [python] builds + # produce the same artifact filename — required for upload-time dedupe + # via hash collision (see `variant.use_keys` note below). + string: py_min_${{ python_min | replace(".", "") }}_${{ number }} + variant: + # Ensures conda-smithy splits CI jobs per Python version. Without + # this, the noarch output drops `python` from the intersection of + # used loop vars (since CFEP-25 uses `python_min`), collapsing all + # Python variants into a single serialized job. The redundant noarch + # builds dedupe on upload via hash collision (the explicit `string` + # above keeps the filename identical across variants). + use_keys: + - python + script: + env: + SUBDIR: ${{ subdir }} + TARGET_NAME: ${{ target_name }} + file: ${{ 'build_output.bat' if win else 'build_output.sh' if linux else '' }} + requirements: + host: + - python ${{ python_min }}.* + - pip + - setuptools + - setuptools-scm >=8 + run: + - python >=${{ python_min }} + - ${{ pin_subpackage('cuda-bindings', upper_bound='x.x') }} + - cuda-core >=1.0.0,<1.1.0 + - if: not aarch64 + then: cuda-version >=12.0,<13.0a0 + - if: aarch64 and not cufile_supported + then: cuda-version >=12.0,<12.2a0 + - if: aarch64 and cufile_supported + then: cuda-version >=12.2,<13.0a0 + tests: + - script: + - python -c "import importlib.metadata; importlib.metadata.version('cuda-python')" + # Imports depend on numpy + - if: linux + then: python -c "import cuda.bindings.cufile" + - python -c "import cuda.bindings.nvml" + requirements: + run: + # Range (not pinned to python_min) so the test env can use the + # variant's Python, matching the locally-built cuda-bindings ABI. + - python >=${{ python_min }} + - numpy + - python: + imports: + - cuda.bindings + - cuda.bindings.driver + - cuda.bindings.runtime + - cuda.bindings.nvrtc + - cuda.bindings.nvjitlink + - cuda.bindings.nvvm + - cuda.bindings.nvfatbin + pip_check: false + about: + license: LicenseRef-NVIDIA-SOFTWARE-LICENSE + license_file: cuda_python/LICENSE + summary: CUDA Python + description: | + CUDA Python is the home for accessing NVIDIA’s CUDA platform from Python. + homepage: https://nvidia.github.io/cuda-python/ + repository: https://github.com/NVIDIA/cuda-python + documentation: https://nvidia.github.io/cuda-python/ + + - package: + name: cuda-bindings + version: ${{ version }} + build: + number: ${{ number }} + script: + env: + SUBDIR: ${{ subdir }} + TARGET_NAME: ${{ target_name }} + file: ${{ 'build_output.bat' if win else 'build_output.sh' if linux else '' }} + requirements: + build: + - ${{ compiler('c') }} + - ${{ compiler('cxx') }} + - ${{ stdlib('c') }} + - if: build_platform != target_platform + then: + - cross-python_${{ target_platform }} + - python + - cython + host: + # cuda.bindings needs to be built with the matching major.minor headers + - cuda-version ==${{ bindings_major_version }}.${{ bindings_minor_version }} + - cuda-crt-dev_${{ target_platform }} + - cuda-cudart-dev + - cuda-cudart-static + - cuda-cudart + - cuda-nvcc-impl + - cuda-nvrtc + - cuda-nvrtc-dev + - cuda-profiler-api + - if: linux and cufile_supported + then: + - libcufile + - if: linux + then: + - libcufile-dev + - cython + - pip + - pyclibrary + - python + - setuptools + - setuptools-scm >=8 + - cuda-pathfinder >=1.5.5,<2 + run: + - python + - cuda-pathfinder >=1.5.5,<2 + - if: not aarch64 + then: ${{ pin_compatible('cuda-version', lower_bound='x', upper_bound='x') }} + # cuda-python requires cuda-nvrtc from the same major version. We ignored + # run-exports of cuda-nvrtc-dev and instead allow a looser pinning here. + # Same for cuda-nvcc-impl. + - if: aarch64 and not cufile_supported + then: cuda-version >=12.0,<12.2a0 + - if: aarch64 and cufile_supported + then: cuda-version >=12.2,<13.0a0 + - ${{ pin_compatible('cuda-nvcc-impl', lower_bound='x', upper_bound='x') }} + - if: linux and cufile_supported + then: ${{ pin_compatible('libcufile', lower_bound='x', upper_bound='x') }} + - if: not aarch64 or cufile_supported + then: libnvfatbin >=12.0,<13.0a0 + - libnvjitlink >=12.3,<13 + ignore_run_exports: + from_package: + # The run-exports from these dev packages are too tight, so we ignore them. + # The cuda-python package supports CUDA Enhanced Compatibility through its + # use of dlopen, so it is compatible with other CUDA minor versions. + - cuda-nvcc-impl + - cuda-cudart-dev + - cuda-cudart-static + - cuda-nvrtc-dev + - if: linux + then: libcufile-dev + run_constraints: + # cuda-cudart is not a hard dependency because cuda-python statically links to + # cudart. This package is optionally dlopen'd for getting the local cudart + # version with cuda.cudart.getLocalRuntimeVersion(). We ignored run-exports + # of cuda-cudart-dev and instead allow a looser pinning here. + - ${{ pin_compatible('cuda-cudart', lower_bound='x', upper_bound='x') }} + tests: + - script: + - if: linux + then: export C_INCLUDE_PATH="$CONDA_PREFIX/${{ subdir }}/include" + - if: win + then: set "CL=%CL% /I%CONDA_PREFIX%\${{ subdir }}\include" + # Workaround for https://github.com/conda-forge/setuptools-feedstock/issues/399 + - pip install setuptools + - cythonize -i -3 -Xfreethreading_compatible=True *.pyx + - python -c "import test_cimport; test_cimport.test()" + - python -c "import cuda.bindings; print(cuda.bindings.__version__)" + # Imports depend on numpy + - python -c "import cuda.bindings.nvml" + - if: linux + then: python -c "import cuda.bindings.cufile" + requirements: + run: + - if: win + then: + - ${{ compiler('c') }} + - ${{ compiler('cxx') }} + - cuda-nvcc + - cuda-nvrtc-dev + - cuda-profiler-api + - cython + - pip + - numpy + files: + recipe: + - test_cimport.pyx + - python: + imports: + - cuda + - cuda.cuda + - cuda.cudart + - cuda.bindings + - cuda.bindings.driver + - cuda.bindings.runtime + - cuda.bindings.nvrtc + - cuda.bindings.nvjitlink + - cuda.bindings.nvvm + - cuda.bindings.nvfatbin + pip_check: false + about: + license: LicenseRef-NVIDIA-SOFTWARE-LICENSE + license_file: cuda_bindings/LICENSE + summary: CUDA Python Low-level Bindings + description: | + CUDA Python provides a standard set of low-level interfaces, + providing full coverage of and access to the CUDA host APIs from Python. + homepage: https://nvidia.github.io/cuda-python/cuda-bindings + repository: https://github.com/NVIDIA/cuda-python + documentation: https://nvidia.github.io/cuda-python/cuda-bindings + +about: + license: LicenseRef-NVIDIA-SOFTWARE-LICENSE + license_file: LICENSE.md + summary: CUDA Python + description: | + CUDA Python is the home for accessing NVIDIA's CUDA platform from Python. + homepage: https://nvidia.github.io/cuda-python/ + repository: https://github.com/NVIDIA/cuda-python + documentation: https://nvidia.github.io/cuda-python/ + +extra: + feedstock-name: cuda-python + recipe-maintainers: + - bdice + - jakirkham + - leofang + - m3vaz + - mmccarty + - vyasr + - vzhurba01 + - kkraus14 + - oleksandr-pavlyk
VariantStatus
linux_64_is_freethreadingfalsepython3.10.____cpython - - variant - -
linux_64_is_freethreadingfalsepython3.11.____cpython - - variant - -
linux_64_is_freethreadingfalsepython3.12.____cpython - - variant - -
linux_64_is_freethreadingfalsepython3.13.____cp313 - - variant - -
linux_64_is_freethreadingfalsepython3.14.____cp314 - - variant - -
linux_64_is_freethreadingtruepython3.14.____cp314t - - variant - -
linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.10.____cpythonlinux_aarch64_cufile_supportedfalsepython3.10.____cpython - variant + variant
linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.11.____cpythonlinux_aarch64_cufile_supportedfalsepython3.11.____cpython - variant + variant
linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.12.____cpythonlinux_aarch64_cufile_supportedfalsepython3.12.____cpython - variant + variant
linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.13.____cp313linux_aarch64_cufile_supportedfalsepython3.13.____cp313 - variant + variant
linux_aarch64_cufile_supportedFalseis_freethreadingfalsepython3.14.____cp314linux_aarch64_cufile_supportedfalsepython3.14.____cp314 - variant + variant
linux_aarch64_cufile_supportedFalseis_freethreadingtruepython3.14.____cp314tlinux_aarch64_cufile_supportedfalsepython3.14.____cp314t - variant + variant
linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.10.____cpythonlinux_aarch64_cufile_supportedtruepython3.10.____cpython - variant + variant
linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.11.____cpythonlinux_aarch64_cufile_supportedtruepython3.11.____cpython - variant + variant
linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.12.____cpythonlinux_aarch64_cufile_supportedtruepython3.12.____cpython - variant + variant
linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.13.____cp313linux_aarch64_cufile_supportedtruepython3.13.____cp313 - variant + variant
linux_aarch64_cufile_supportedTrueis_freethreadingfalsepython3.14.____cp314linux_aarch64_cufile_supportedtruepython3.14.____cp314 - variant + variant
linux_aarch64_cufile_supportedTrueis_freethreadingtruepython3.14.____cp314tlinux_aarch64_cufile_supportedtruepython3.14.____cp314t - variant + variant
win_64_is_freethreadingfalsepython3.10.____cpythonwin_64_python3.10.____cpython - variant + variant
win_64_is_freethreadingfalsepython3.11.____cpythonwin_64_python3.11.____cpython - variant + variant
win_64_is_freethreadingfalsepython3.12.____cpythonwin_64_python3.12.____cpython - variant + variant
win_64_is_freethreadingfalsepython3.13.____cp313win_64_python3.13.____cp313 - variant + variant
win_64_is_freethreadingfalsepython3.14.____cp314win_64_python3.14.____cp314 - variant + variant
win_64_is_freethreadingtruepython3.14.____cp314twin_64_python3.14.____cp314t - variant + variant