diff --git a/ci/build_wheel_pylibraft.sh b/ci/build_wheel_pylibraft.sh index ce9f0ed172..dacaa1190e 100755 --- a/ci/build_wheel_pylibraft.sh +++ b/ci/build_wheel_pylibraft.sh @@ -3,6 +3,8 @@ set -euo pipefail +package_dir="python/pylibraft" + case "${RAPIDS_CUDA_VERSION}" in 12.*) EXTRA_CMAKE_ARGS=";-DUSE_CUDA_MATH_WHEELS=ON" @@ -15,4 +17,5 @@ esac # Set up skbuild options. Enable sccache in skbuild config options export SKBUILD_CMAKE_ARGS="-DDETECT_CONDA_ENV=OFF;-DFIND_RAFT_CPP=OFF${EXTRA_CMAKE_ARGS}" -ci/build_wheel.sh pylibraft python/pylibraft +ci/build_wheel.sh pylibraft ${package_dir} +ci/validate_wheel.sh ${package_dir} final_dist diff --git a/ci/build_wheel_raft_dask.sh b/ci/build_wheel_raft_dask.sh index feba2d7a5b..e4f3f0a833 100755 --- a/ci/build_wheel_raft_dask.sh +++ b/ci/build_wheel_raft_dask.sh @@ -3,7 +3,10 @@ set -euo pipefail +package_dir="python/raft-dask" + # Set up skbuild options. Enable sccache in skbuild config options export SKBUILD_CMAKE_ARGS="-DDETECT_CONDA_ENV=OFF;-DFIND_RAFT_CPP=OFF" -ci/build_wheel.sh raft-dask python/raft-dask +ci/build_wheel.sh raft-dask ${package_dir} +ci/validate_wheel.sh ${package_dir} final_dist diff --git a/ci/validate_wheel.sh b/ci/validate_wheel.sh new file mode 100755 index 0000000000..5910a5c59f --- /dev/null +++ b/ci/validate_wheel.sh @@ -0,0 +1,21 @@ +#!/bin/bash +# Copyright (c) 2024, NVIDIA CORPORATION. + +set -euo pipefail + +package_dir=$1 +wheel_dir_relative_path=$2 + +cd "${package_dir}" + +rapids-logger "validate packages with 'pydistcheck'" + +pydistcheck \ + --inspect \ + "$(echo ${wheel_dir_relative_path}/*.whl)" + +rapids-logger "validate packages with 'twine'" + +twine check \ + --strict \ + "$(echo ${wheel_dir_relative_path}/*.whl)" diff --git a/conda/environments/all_cuda-118_arch-aarch64.yaml b/conda/environments/all_cuda-118_arch-aarch64.yaml index a21f30dd94..6098cd12bf 100644 --- a/conda/environments/all_cuda-118_arch-aarch64.yaml +++ b/conda/environments/all_cuda-118_arch-aarch64.yaml @@ -19,7 +19,7 @@ dependencies: - cudatoolkit - cupy>=12.0.0 - cxx-compiler -- cython>=3.0.0 +- cython>=3.0.0,<3.1.0a0 - dask-cuda==24.12.*,>=0.0.0a0 - distributed-ucxx==0.41.*,>=0.0.0a0 - doxygen>=1.8.20 diff --git a/conda/environments/all_cuda-118_arch-x86_64.yaml b/conda/environments/all_cuda-118_arch-x86_64.yaml index 3eb7cdea67..0fe8fbab39 100644 --- a/conda/environments/all_cuda-118_arch-x86_64.yaml +++ b/conda/environments/all_cuda-118_arch-x86_64.yaml @@ -19,7 +19,7 @@ dependencies: - cudatoolkit - cupy>=12.0.0 - cxx-compiler -- cython>=3.0.0 +- cython>=3.0.0,<3.1.0a0 - dask-cuda==24.12.*,>=0.0.0a0 - distributed-ucxx==0.41.*,>=0.0.0a0 - doxygen>=1.8.20 diff --git a/conda/environments/all_cuda-125_arch-aarch64.yaml b/conda/environments/all_cuda-125_arch-aarch64.yaml index c13b4a4bfa..dfb9ac0b97 100644 --- a/conda/environments/all_cuda-125_arch-aarch64.yaml +++ b/conda/environments/all_cuda-125_arch-aarch64.yaml @@ -20,7 +20,7 @@ dependencies: - cuda-version=12.5 - cupy>=12.0.0 - cxx-compiler -- cython>=3.0.0 +- cython>=3.0.0,<3.1.0a0 - dask-cuda==24.12.*,>=0.0.0a0 - distributed-ucxx==0.41.*,>=0.0.0a0 - doxygen>=1.8.20 diff --git a/conda/environments/all_cuda-125_arch-x86_64.yaml b/conda/environments/all_cuda-125_arch-x86_64.yaml index 5820017b5d..bf6f5d6462 100644 --- a/conda/environments/all_cuda-125_arch-x86_64.yaml +++ b/conda/environments/all_cuda-125_arch-x86_64.yaml @@ -20,7 +20,7 @@ dependencies: - cuda-version=12.5 - cupy>=12.0.0 - cxx-compiler -- cython>=3.0.0 +- cython>=3.0.0,<3.1.0a0 - dask-cuda==24.12.*,>=0.0.0a0 - distributed-ucxx==0.41.*,>=0.0.0a0 - doxygen>=1.8.20 diff --git a/conda/environments/bench_ann_cuda-118_arch-aarch64.yaml b/conda/environments/bench_ann_cuda-118_arch-aarch64.yaml index 4c9d308ecd..39bdf2671d 100644 --- a/conda/environments/bench_ann_cuda-118_arch-aarch64.yaml +++ b/conda/environments/bench_ann_cuda-118_arch-aarch64.yaml @@ -17,7 +17,7 @@ dependencies: - cuda-version=11.8 - cudatoolkit - cxx-compiler -- cython>=3.0.0 +- cython>=3.0.0,<3.1.0a0 - gcc_linux-aarch64=11.* - glog>=0.6.0 - h5py>=3.8.0 diff --git a/conda/environments/bench_ann_cuda-118_arch-x86_64.yaml b/conda/environments/bench_ann_cuda-118_arch-x86_64.yaml index 1b62c492cf..56004fa818 100644 --- a/conda/environments/bench_ann_cuda-118_arch-x86_64.yaml +++ b/conda/environments/bench_ann_cuda-118_arch-x86_64.yaml @@ -17,7 +17,7 @@ dependencies: - cuda-version=11.8 - cudatoolkit - cxx-compiler -- cython>=3.0.0 +- cython>=3.0.0,<3.1.0a0 - gcc_linux-64=11.* - glog>=0.6.0 - h5py>=3.8.0 diff --git a/conda/environments/bench_ann_cuda-120_arch-aarch64.yaml b/conda/environments/bench_ann_cuda-120_arch-aarch64.yaml index 54d67f462a..5f0599d9ae 100644 --- a/conda/environments/bench_ann_cuda-120_arch-aarch64.yaml +++ b/conda/environments/bench_ann_cuda-120_arch-aarch64.yaml @@ -18,7 +18,7 @@ dependencies: - cuda-profiler-api - cuda-version=12.0 - cxx-compiler -- cython>=3.0.0 +- cython>=3.0.0,<3.1.0a0 - gcc_linux-aarch64=11.* - glog>=0.6.0 - h5py>=3.8.0 diff --git a/conda/environments/bench_ann_cuda-120_arch-x86_64.yaml b/conda/environments/bench_ann_cuda-120_arch-x86_64.yaml index 4f39378047..849e6c1412 100644 --- a/conda/environments/bench_ann_cuda-120_arch-x86_64.yaml +++ b/conda/environments/bench_ann_cuda-120_arch-x86_64.yaml @@ -18,7 +18,7 @@ dependencies: - cuda-profiler-api - cuda-version=12.0 - cxx-compiler -- cython>=3.0.0 +- cython>=3.0.0,<3.1.0a0 - gcc_linux-64=11.* - glog>=0.6.0 - h5py>=3.8.0 diff --git a/conda/recipes/pylibraft/meta.yaml b/conda/recipes/pylibraft/meta.yaml index ceed46a2d7..01a9d61f0f 100644 --- a/conda/recipes/pylibraft/meta.yaml +++ b/conda/recipes/pylibraft/meta.yaml @@ -50,7 +50,7 @@ requirements: - cuda-cudart-dev {% endif %} - cuda-version ={{ cuda_version }} - - cython >=3.0.0 + - cython >=3.0.0,<3.1.0a0 - libraft {{ version }} - libraft-headers {{ version }} - python x.x diff --git a/conda/recipes/raft-dask/meta.yaml b/conda/recipes/raft-dask/meta.yaml index b2e468f7ea..02a8957b06 100644 --- a/conda/recipes/raft-dask/meta.yaml +++ b/conda/recipes/raft-dask/meta.yaml @@ -50,7 +50,7 @@ requirements: - cuda-cudart-dev {% endif %} - cuda-version ={{ cuda_version }} - - cython >=3.0.0 + - cython >=3.0.0,<3.1.0a0 - nccl {{ nccl_version }} - pylibraft {{ version }} - python x.x diff --git a/dependencies.yaml b/dependencies.yaml index f31464aa91..7766481c99 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -164,7 +164,7 @@ dependencies: - output_types: [conda, requirements, pyproject] packages: - &cmake_ver cmake>=3.26.4,!=3.30.0 - - cython>=3.0.0 + - cython>=3.0.0,<3.1.0a0 - ninja - output_types: [conda] packages: diff --git a/python/pylibraft/pyproject.toml b/python/pylibraft/pyproject.toml index 599b3dd54e..bb01602b33 100644 --- a/python/pylibraft/pyproject.toml +++ b/python/pylibraft/pyproject.toml @@ -123,13 +123,21 @@ build-backend = "scikit_build_core.build" requires = [ "cmake>=3.26.4,!=3.30.0", "cuda-python", - "cython>=3.0.0", + "cython>=3.0.0,<3.1.0a0", "ninja", "rmm==24.12.*,>=0.0.0a0", ] # This list was generated by `rapids-dependency-file-generator`. To make changes, edit ../../dependencies.yaml and run `rapids-dependency-file-generator`. dependencies-file = "../../dependencies.yaml" matrix-entry = "cuda_suffixed=true;use_cuda_wheels=true" +[tool.pydistcheck] +select = [ + "distro-too-large-compressed", +] + +# detect when package size grows significantly +max_allowed_size_compressed = '825M' + [tool.pytest.ini_options] filterwarnings = [ "error", diff --git a/python/raft-dask/pyproject.toml b/python/raft-dask/pyproject.toml index d71f89085b..a9f4de5dc3 100644 --- a/python/raft-dask/pyproject.toml +++ b/python/raft-dask/pyproject.toml @@ -120,9 +120,17 @@ regex = "(?P.*)" build-backend = "scikit_build_core.build" requires = [ "cmake>=3.26.4,!=3.30.0", - "cython>=3.0.0", + "cython>=3.0.0,<3.1.0a0", "libucx==1.15.0", "ninja", ] # This list was generated by `rapids-dependency-file-generator`. To make changes, edit ../../dependencies.yaml and run `rapids-dependency-file-generator`. dependencies-file = "../../dependencies.yaml" matrix-entry = "cuda_suffixed=true" + +[tool.pydistcheck] +select = [ + "distro-too-large-compressed", +] + +# detect when package size grows significantly +max_allowed_size_compressed = '300M'