diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 3f1bf94819..554b8589a3 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -185,6 +185,10 @@ jobs: package-name: kvikio package-type: python sccache-dist-token-secret-name: GIST_REPO_READ_ORG_GITHUB_TOKEN + # Build a wheel for each CUDA x ARCH x PY_VER (3.10 and 3.11) + # When we drop Python 3.10, this can be simplified to: + # matrix_filter: map(select(.PY_VER == "3.11")) | unique_by({CUDA_VER, ARCH}) + matrix_filter: map(select(.PY_VER == "3.11" or .PY_VER == "3.10")) | unique_by({CUDA_VER, ARCH, PY_VER}) wheel-python-tests: needs: [wheel-python-build, changed-files] secrets: inherit diff --git a/ci/build_wheel_python.sh b/ci/build_wheel_python.sh index e515139105..c846ab9fb6 100755 --- a/ci/build_wheel_python.sh +++ b/ci/build_wheel_python.sh @@ -1,5 +1,5 @@ #!/bin/bash -# SPDX-FileCopyrightText: Copyright (c) 2023-2025, NVIDIA CORPORATION. +# SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION. # SPDX-License-Identifier: Apache-2.0 set -euo pipefail @@ -26,3 +26,9 @@ python -m auditwheel repair \ ${package_dir}/dist/* ./ci/validate_wheel.sh ${package_dir} "${RAPIDS_WHEEL_BLD_OUTPUT_DIR}" + +# Only use stable ABI package naming for Python >= 3.11 +if [[ "${RAPIDS_PY_VERSION}" != "3.10" ]]; then + RAPIDS_PACKAGE_NAME="$(rapids-package-name wheel_python kvikio --stable --cuda)" + export RAPIDS_PACKAGE_NAME +fi diff --git a/ci/test_wheel.sh b/ci/test_wheel.sh index 5513083815..60bba945ed 100755 --- a/ci/test_wheel.sh +++ b/ci/test_wheel.sh @@ -1,5 +1,5 @@ #!/bin/bash -# SPDX-FileCopyrightText: Copyright (c) 2023-2025, NVIDIA CORPORATION. +# SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION. # SPDX-License-Identifier: Apache-2.0 set -eou pipefail @@ -10,7 +10,13 @@ RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen "${RAPIDS_CUDA_VERSION}")" # Download and install the libkvikio and kvikio wheels built in the previous step LIBKVIKIO_WHEELHOUSE=$(RAPIDS_PY_WHEEL_NAME="libkvikio_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-github cpp) -KVIKIO_WHEELHOUSE=$(RAPIDS_PY_WHEEL_NAME="kvikio_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-github python) + + +if [[ "${RAPIDS_PY_VERSION}" != "3.10" ]]; then + KVIKIO_WHEELHOUSE=$(rapids-download-from-github "$(rapids-package-name "wheel_python" kvikio --stable --cuda "$RAPIDS_CUDA_VERSION")") +else + KVIKIO_WHEELHOUSE=$(RAPIDS_PY_WHEEL_NAME="kvikio_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-github python) +fi rapids-pip-retry install -v \ "$(echo "${LIBKVIKIO_WHEELHOUSE}"/libkvikio_"${RAPIDS_PY_CUDA_SUFFIX}"*.whl)" \ diff --git a/python/kvikio/pyproject.toml b/python/kvikio/pyproject.toml index 30b74974bb..3e8b435d61 100644 --- a/python/kvikio/pyproject.toml +++ b/python/kvikio/pyproject.toml @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (c) 2021-2025, NVIDIA CORPORATION. All rights reserved. +# SPDX-FileCopyrightText: Copyright (c) 2021-2026, NVIDIA CORPORATION. All rights reserved. # SPDX-License-Identifier: Apache-2.0 [build-system] @@ -118,6 +118,10 @@ provider = "scikit_build_core.metadata.regex" input = "kvikio/VERSION" regex = "(?P.*)" +[[tool.scikit-build.overrides]] +if.python-version = ">=3.11" +wheel.py-api = "cp311" + [tool.pydistcheck] select = [ "distro-too-large-compressed",