From 111a9f2fec4170eeac3d5df8f2564996d4b15561 Mon Sep 17 00:00:00 2001 From: Gil Forsyth Date: Tue, 9 Jun 2026 14:56:13 -0400 Subject: [PATCH 1/7] refactor: switch to `rapids-artifact-name` for consistent artifact naming --- .github/workflows/build.yaml | 4 ++++ ci/build_cpp.sh | 5 ++++- ci/build_docs.sh | 6 +++--- ci/build_python.sh | 5 ++++- ci/build_wheel_cuopt.sh | 5 ++++- ci/build_wheel_cuopt_server.sh | 3 +++ ci/build_wheel_cuopt_sh_client.sh | 3 +++ ci/build_wheel_libcuopt.sh | 3 +++ ci/test_cpp.sh | 2 +- ci/test_cpp_memcheck.sh | 4 ++-- ci/test_notebooks.sh | 4 ++-- ci/test_python.sh | 4 ++-- ci/test_self_hosted_service.sh | 7 +++---- ci/test_wheel_cuopt.sh | 12 ++++++------ ci/test_wheel_cuopt_server.sh | 9 ++++----- 15 files changed, 48 insertions(+), 28 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index f1d4123a6a..c11938346a 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -130,6 +130,7 @@ jobs: date: ${{ inputs.date }} package-name: libcuopt package-type: cpp + publish-wheel-search-key: cuopt_wheel_cpp_libcuopt wheel-build-cuopt: needs: [wheel-build-libcuopt] permissions: @@ -167,6 +168,7 @@ jobs: date: ${{ inputs.date }} package-name: cuopt package-type: python + publish-wheel-search-key: cuopt_wheel_python_cuopt_ wheel-build-cuopt-server: permissions: actions: read @@ -206,6 +208,7 @@ jobs: date: ${{ inputs.date }} package-name: cuopt_server package-type: python + publish-wheel-search-key: cuopt_wheel_python_cuopt-server docs-build: needs: [python-build] permissions: @@ -267,6 +270,7 @@ jobs: date: ${{ inputs.date }} package-name: cuopt_sh_client package-type: python + publish-wheel-search-key: cuopt_wheel_python_cuopt-sh-client tests: # Docker image build / tests aren't necessary for the 'test.yaml' workflow, # so 'test.yaml' can be triggered without waiting for those. diff --git a/ci/build_cpp.sh b/ci/build_cpp.sh index 749a0b6ee7..cb6d61b5ec 100755 --- a/ci/build_cpp.sh +++ b/ci/build_cpp.sh @@ -1,6 +1,6 @@ #!/bin/bash -# SPDX-FileCopyrightText: Copyright (c) 2023-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 @@ -43,3 +43,6 @@ sccache --show-adv-stats # remove build_cache directory to avoid uploading the entire source tree # tracked in https://github.com/prefix-dev/rattler-build/issues/1424 rm -rf "$RAPIDS_CONDA_BLD_OUTPUT_DIR"/build_cache + +RAPIDS_PACKAGE_NAME="$(rapids-artifact-name conda_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")" +export RAPIDS_PACKAGE_NAME diff --git a/ci/build_docs.sh b/ci/build_docs.sh index 3bdc1e75a2..63abe3f57d 100755 --- a/ci/build_docs.sh +++ b/ci/build_docs.sh @@ -1,6 +1,6 @@ #!/bin/bash -# SPDX-FileCopyrightText: Copyright (c) 2023-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 set -euo pipefail @@ -17,8 +17,8 @@ RAPIDS_VERSION_MAJOR_MINOR="$(rapids-version-major-minor)" export RAPIDS_VERSION_MAJOR_MINOR rapids-logger "Downloading artifacts from previous jobs" -CPP_CHANNEL=$(rapids-download-conda-from-github cpp) -PYTHON_CHANNEL=$(rapids-download-conda-from-github python) +CPP_CHANNEL=$(rapids-download-from-github "$(rapids-artifact-name conda_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")") +PYTHON_CHANNEL=$(rapids-download-from-github "$(rapids-artifact-name conda_python cuopt cuopt --stable --cuda "$RAPIDS_CUDA_VERSION")") rapids-logger "Generating conda environment YAML" diff --git a/ci/build_python.sh b/ci/build_python.sh index 46d8a85fd1..4595e3a82d 100755 --- a/ci/build_python.sh +++ b/ci/build_python.sh @@ -13,7 +13,7 @@ export CMAKE_GENERATOR=Ninja rapids-print-env -CPP_CHANNEL=$(rapids-download-conda-from-github cpp) +CPP_CHANNEL=$(rapids-download-from-github "$(rapids-artifact-name conda_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")") version=$(rapids-generate-version) export RAPIDS_PACKAGE_VERSION=${version} @@ -66,3 +66,6 @@ rattler-build build --recipe conda/recipes/cuopt-sh-client \ # remove build_cache directory to avoid uploading the entire source tree # tracked in https://github.com/prefix-dev/rattler-build/issues/1424 rm -rf "$RAPIDS_CONDA_BLD_OUTPUT_DIR"/build_cache + +RAPIDS_PACKAGE_NAME="$(rapids-artifact-name conda_python cuopt cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")" +export RAPIDS_PACKAGE_NAME diff --git a/ci/build_wheel_cuopt.sh b/ci/build_wheel_cuopt.sh index f3d4730b8c..f624b27705 100755 --- a/ci/build_wheel_cuopt.sh +++ b/ci/build_wheel_cuopt.sh @@ -27,7 +27,7 @@ RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen "${RAPIDS_CUDA_VERSION}")" # env variable 'PIP_CONSTRAINT' is set up by rapids-init-pip. It constrains all subsequent # 'pip install', 'pip download', etc. calls (except those used in 'pip wheel', handled separately in build scripts) RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen "${RAPIDS_CUDA_VERSION}")" -LIBCUOPT_WHEELHOUSE=$(RAPIDS_PY_WHEEL_NAME="libcuopt_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-github cpp) +LIBCUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")") echo "libcuopt-${RAPIDS_PY_CUDA_SUFFIX} @ file://$(echo ${LIBCUOPT_WHEELHOUSE}/libcuopt_*.whl)" >> "${PIP_CONSTRAINT}" @@ -51,3 +51,6 @@ ci/build_wheel.sh cuopt ${package_dir} python -m auditwheel repair "${EXCLUDE_ARGS[@]}" -w ${RAPIDS_WHEEL_BLD_OUTPUT_DIR} ${package_dir}/dist/* ci/validate_wheel.sh "${package_dir}" "${RAPIDS_WHEEL_BLD_OUTPUT_DIR}" + +RAPIDS_PACKAGE_NAME="$(rapids-artifact-name wheel_python cuopt cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")" +export RAPIDS_PACKAGE_NAME diff --git a/ci/build_wheel_cuopt_server.sh b/ci/build_wheel_cuopt_server.sh index 1be325303f..98ecfb7e03 100755 --- a/ci/build_wheel_cuopt_server.sh +++ b/ci/build_wheel_cuopt_server.sh @@ -12,3 +12,6 @@ package_dir="python/cuopt_server" ci/build_wheel.sh cuopt_server ${package_dir} cp "${package_dir}/dist"/* "${RAPIDS_WHEEL_BLD_OUTPUT_DIR}/" ci/validate_wheel.sh "${package_dir}" "${RAPIDS_WHEEL_BLD_OUTPUT_DIR}" + +RAPIDS_PACKAGE_NAME="$(rapids-artifact-name wheel_python cuopt-server cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")" +export RAPIDS_PACKAGE_NAME diff --git a/ci/build_wheel_cuopt_sh_client.sh b/ci/build_wheel_cuopt_sh_client.sh index f5083b5ebd..2727c93cdb 100755 --- a/ci/build_wheel_cuopt_sh_client.sh +++ b/ci/build_wheel_cuopt_sh_client.sh @@ -12,3 +12,6 @@ package_dir="python/cuopt_self_hosted" ci/build_wheel.sh cuopt_sh_client ${package_dir} cp "${package_dir}/dist"/* "${RAPIDS_WHEEL_BLD_OUTPUT_DIR}/" ci/validate_wheel.sh "${package_dir}" "${RAPIDS_WHEEL_BLD_OUTPUT_DIR}" + +RAPIDS_PACKAGE_NAME="$(rapids-artifact-name wheel_python cuopt-sh-client cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")" +export RAPIDS_PACKAGE_NAME diff --git a/ci/build_wheel_libcuopt.sh b/ci/build_wheel_libcuopt.sh index a12f41e9be..faa28c147b 100755 --- a/ci/build_wheel_libcuopt.sh +++ b/ci/build_wheel_libcuopt.sh @@ -104,3 +104,6 @@ mkdir -p final_dist python -m auditwheel repair "${EXCLUDE_ARGS[@]}" -w "${RAPIDS_WHEEL_BLD_OUTPUT_DIR}" ${package_dir}/dist/* ci/validate_wheel.sh ${package_dir} "${RAPIDS_WHEEL_BLD_OUTPUT_DIR}" + +RAPIDS_PACKAGE_NAME="$(rapids-artifact-name wheel_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")" +export RAPIDS_PACKAGE_NAME diff --git a/ci/test_cpp.sh b/ci/test_cpp.sh index 6ce4a2a0d7..f824aabeaf 100755 --- a/ci/test_cpp.sh +++ b/ci/test_cpp.sh @@ -10,7 +10,7 @@ set -euo pipefail rapids-logger "Configuring conda strict channel priority" conda config --set channel_priority strict -CPP_CHANNEL=$(rapids-download-conda-from-github cpp) +CPP_CHANNEL=$(rapids-download-from-github "$(rapids-artifact-name conda_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")") rapids-logger "Generate C++ testing dependencies" rapids-dependency-file-generator \ diff --git a/ci/test_cpp_memcheck.sh b/ci/test_cpp_memcheck.sh index bc4bce4cbc..373504a13f 100755 --- a/ci/test_cpp_memcheck.sh +++ b/ci/test_cpp_memcheck.sh @@ -1,6 +1,6 @@ #!/bin/bash -# SPDX-FileCopyrightText: Copyright (c) 2023-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 if [[ "$(date +%A)" != "Friday" ]]; then @@ -30,7 +30,7 @@ set +u conda activate test set -u -CPP_CHANNEL=$(rapids-download-conda-from-github cpp) +CPP_CHANNEL=$(rapids-download-from-github "$(rapids-artifact-name conda_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")") RAPIDS_TESTS_DIR=${RAPIDS_TESTS_DIR:-"${PWD}/test-results"}/ mkdir -p "${RAPIDS_TESTS_DIR}" diff --git a/ci/test_notebooks.sh b/ci/test_notebooks.sh index 0b2b339ba1..461b8092d3 100755 --- a/ci/test_notebooks.sh +++ b/ci/test_notebooks.sh @@ -11,8 +11,8 @@ rapids-logger "Configuring conda strict channel priority" conda config --set channel_priority strict rapids-logger "Downloading artifacts from previous jobs" -CPP_CHANNEL=$(rapids-download-conda-from-github cpp) -PYTHON_CHANNEL=$(rapids-download-conda-from-github python) +CPP_CHANNEL=$(rapids-download-from-github "$(rapids-artifact-name conda_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")") +PYTHON_CHANNEL=$(rapids-download-from-github "$(rapids-artifact-name conda_python cuopt cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")") rapids-logger "Generate notebook testing dependencies" diff --git a/ci/test_python.sh b/ci/test_python.sh index df27dfddc5..34a26c8f11 100755 --- a/ci/test_python.sh +++ b/ci/test_python.sh @@ -11,8 +11,8 @@ rapids-logger "Configuring conda strict channel priority" conda config --set channel_priority strict rapids-logger "Downloading artifacts from previous jobs" -CPP_CHANNEL=$(rapids-download-conda-from-github cpp) -PYTHON_CHANNEL=$(rapids-download-conda-from-github python) +CPP_CHANNEL=$(rapids-download-from-github "$(rapids-artifact-name conda_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")") +PYTHON_CHANNEL=$(rapids-download-from-github "$(rapids-artifact-name conda_python cuopt cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")") rapids-logger "Generate Python testing dependencies" rapids-dependency-file-generator \ diff --git a/ci/test_self_hosted_service.sh b/ci/test_self_hosted_service.sh index b9824a7422..b55ad4dd97 100755 --- a/ci/test_self_hosted_service.sh +++ b/ci/test_self_hosted_service.sh @@ -8,10 +8,9 @@ set -euo pipefail source rapids-init-pip # Download the cuopt built in the previous step -RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen "${RAPIDS_CUDA_VERSION}")" -CUOPT_SERVER_WHEELHOUSE=$(RAPIDS_PY_WHEEL_NAME="cuopt_server_${RAPIDS_PY_CUDA_SUFFIX}" RAPIDS_PY_WHEEL_PURE="1" rapids-download-wheels-from-github python) -CUOPT_WHEELHOUSE=$(RAPIDS_PY_WHEEL_NAME="cuopt_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-github python) -LIBCUOPT_WHEELHOUSE=$(RAPIDS_PY_WHEEL_NAME="libcuopt_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-github cpp) +LIBCUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")") +CUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")") +CUOPT_SERVER_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt-server cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")") # generate constraints (possibly pinning to oldest support versions of dependencies) rapids-generate-pip-constraints test_python "${PIP_CONSTRAINT}" diff --git a/ci/test_wheel_cuopt.sh b/ci/test_wheel_cuopt.sh index b4830ec3e2..0a1a8580cb 100755 --- a/ci/test_wheel_cuopt.sh +++ b/ci/test_wheel_cuopt.sh @@ -16,16 +16,16 @@ bash "$(dirname "$(realpath "${BASH_SOURCE[0]}")")/utils/install_openssl3_runtim # Download the packages built in the previous step RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen "${RAPIDS_CUDA_VERSION}")" -CUOPT_SH_CLIENT_WHEELHOUSE=$(RAPIDS_PY_WHEEL_NAME="cuopt_sh_client" RAPIDS_PY_WHEEL_PURE="1" rapids-download-wheels-from-github python) -CUOPT_WHEELHOUSE=$(RAPIDS_PY_WHEEL_NAME="cuopt_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-github python) -LIBCUOPT_WHEELHOUSE=$(RAPIDS_PY_WHEEL_NAME="libcuopt_${RAPIDS_PY_CUDA_SUFFIX}" rapids-download-wheels-from-github cpp) +LIBCUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")") +CUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")") +CUOPT_SH_CLIENT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt-sh-client cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")") # update pip constraints.txt to ensure all future 'pip install' (including those in ci/thirdparty-testing) # use these wheels for cuopt packages cat > "${PIP_CONSTRAINT}" < Date: Tue, 9 Jun 2026 16:43:54 -0400 Subject: [PATCH 2/7] refactor: `cuopt-sh-client` is pure, `cuopt-server` is pure+cuda --- ci/build_wheel_cuopt_server.sh | 3 ++- ci/build_wheel_cuopt_sh_client.sh | 3 ++- ci/test_self_hosted_service.sh | 2 +- ci/test_wheel_cuopt.sh | 2 +- ci/test_wheel_cuopt_server.sh | 4 ++-- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/ci/build_wheel_cuopt_server.sh b/ci/build_wheel_cuopt_server.sh index 98ecfb7e03..b727c7605a 100755 --- a/ci/build_wheel_cuopt_server.sh +++ b/ci/build_wheel_cuopt_server.sh @@ -13,5 +13,6 @@ ci/build_wheel.sh cuopt_server ${package_dir} cp "${package_dir}/dist"/* "${RAPIDS_WHEEL_BLD_OUTPUT_DIR}/" ci/validate_wheel.sh "${package_dir}" "${RAPIDS_WHEEL_BLD_OUTPUT_DIR}" -RAPIDS_PACKAGE_NAME="$(rapids-artifact-name wheel_python cuopt-server cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")" +# `cuopt-server` is a pure + CUDA version package +RAPIDS_PACKAGE_NAME="$(rapids-artifact-name wheel_python cuopt-server cuopt --pure --cuda "$RAPIDS_CUDA_VERSION")" export RAPIDS_PACKAGE_NAME diff --git a/ci/build_wheel_cuopt_sh_client.sh b/ci/build_wheel_cuopt_sh_client.sh index 2727c93cdb..b858cfafff 100755 --- a/ci/build_wheel_cuopt_sh_client.sh +++ b/ci/build_wheel_cuopt_sh_client.sh @@ -13,5 +13,6 @@ ci/build_wheel.sh cuopt_sh_client ${package_dir} cp "${package_dir}/dist"/* "${RAPIDS_WHEEL_BLD_OUTPUT_DIR}/" ci/validate_wheel.sh "${package_dir}" "${RAPIDS_WHEEL_BLD_OUTPUT_DIR}" -RAPIDS_PACKAGE_NAME="$(rapids-artifact-name wheel_python cuopt-sh-client cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")" +# `cuopt-sh-client` is a true pure package, no CUDA dependency +RAPIDS_PACKAGE_NAME="$(rapids-artifact-name wheel_python cuopt-sh-client cuopt --pure)" export RAPIDS_PACKAGE_NAME diff --git a/ci/test_self_hosted_service.sh b/ci/test_self_hosted_service.sh index b55ad4dd97..c9c37d02dc 100755 --- a/ci/test_self_hosted_service.sh +++ b/ci/test_self_hosted_service.sh @@ -10,7 +10,7 @@ source rapids-init-pip # Download the cuopt built in the previous step LIBCUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")") CUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")") -CUOPT_SERVER_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt-server cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")") +CUOPT_SERVER_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt_server cuopt --pure --cuda "$RAPIDS_CUDA_VERSION")") # generate constraints (possibly pinning to oldest support versions of dependencies) rapids-generate-pip-constraints test_python "${PIP_CONSTRAINT}" diff --git a/ci/test_wheel_cuopt.sh b/ci/test_wheel_cuopt.sh index 0a1a8580cb..1784ace96d 100755 --- a/ci/test_wheel_cuopt.sh +++ b/ci/test_wheel_cuopt.sh @@ -18,7 +18,7 @@ bash "$(dirname "$(realpath "${BASH_SOURCE[0]}")")/utils/install_openssl3_runtim RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen "${RAPIDS_CUDA_VERSION}")" LIBCUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")") CUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")") -CUOPT_SH_CLIENT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt-sh-client cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")") +CUOPT_SH_CLIENT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt_sh_client cuopt --pure)") # update pip constraints.txt to ensure all future 'pip install' (including those in ci/thirdparty-testing) # use these wheels for cuopt packages diff --git a/ci/test_wheel_cuopt_server.sh b/ci/test_wheel_cuopt_server.sh index f9237c86eb..8314609732 100755 --- a/ci/test_wheel_cuopt_server.sh +++ b/ci/test_wheel_cuopt_server.sh @@ -15,8 +15,8 @@ bash "$(dirname "$(realpath "${BASH_SOURCE[0]}")")/utils/install_openssl3_runtim # Download the packages built in the previous step LIBCUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")") CUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")") -CUOPT_SERVER_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt-server cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")") -CUOPT_SH_CLIENT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt-sh-client cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")") +CUOPT_SERVER_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt_server cuopt --pure --cuda "$RAPIDS_CUDA_VERSION")") +CUOPT_SH_CLIENT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt_sh_client cuopt --pure)") # generate constraints (possibly pinning to oldest support versions of dependencies) rapids-generate-pip-constraints test_python "${PIP_CONSTRAINT}" From bc2dbfa18b6aea026ca848201e19a59d40dc7e62 Mon Sep 17 00:00:00 2001 From: Gil Forsyth Date: Wed, 10 Jun 2026 09:01:42 -0400 Subject: [PATCH 3/7] fix: bump ctk version for `self_hosted` to get newer `gha-tools` --- .github/workflows/self_hosted_service_test.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/self_hosted_service_test.yaml b/.github/workflows/self_hosted_service_test.yaml index 2cacb05b0f..b949241a50 100644 --- a/.github/workflows/self_hosted_service_test.yaml +++ b/.github/workflows/self_hosted_service_test.yaml @@ -47,7 +47,7 @@ jobs: runs-on: linux-amd64-gpu-l4-latest-1 strategy: matrix: - ctk: ["12.9.0"] + ctk: ["12.9.1"] linux_ver: ["ubuntu24.04"] py_ver: ["3.12"] container: From 4ba77bd92f435a1152b6fc2e605fa79258496b8a Mon Sep 17 00:00:00 2001 From: Gil Forsyth Date: Wed, 10 Jun 2026 09:15:52 -0400 Subject: [PATCH 4/7] fix: use hyphens not underscores --- ci/test_self_hosted_service.sh | 2 +- ci/test_wheel_cuopt.sh | 2 +- ci/test_wheel_cuopt_server.sh | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ci/test_self_hosted_service.sh b/ci/test_self_hosted_service.sh index c9c37d02dc..f6a3315ed1 100755 --- a/ci/test_self_hosted_service.sh +++ b/ci/test_self_hosted_service.sh @@ -10,7 +10,7 @@ source rapids-init-pip # Download the cuopt built in the previous step LIBCUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")") CUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")") -CUOPT_SERVER_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt_server cuopt --pure --cuda "$RAPIDS_CUDA_VERSION")") +CUOPT_SERVER_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt-server cuopt --pure --cuda "$RAPIDS_CUDA_VERSION")") # generate constraints (possibly pinning to oldest support versions of dependencies) rapids-generate-pip-constraints test_python "${PIP_CONSTRAINT}" diff --git a/ci/test_wheel_cuopt.sh b/ci/test_wheel_cuopt.sh index 1784ace96d..79becbd64f 100755 --- a/ci/test_wheel_cuopt.sh +++ b/ci/test_wheel_cuopt.sh @@ -18,7 +18,7 @@ bash "$(dirname "$(realpath "${BASH_SOURCE[0]}")")/utils/install_openssl3_runtim RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen "${RAPIDS_CUDA_VERSION}")" LIBCUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")") CUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")") -CUOPT_SH_CLIENT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt_sh_client cuopt --pure)") +CUOPT_SH_CLIENT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt-sh-client cuopt --pure)") # update pip constraints.txt to ensure all future 'pip install' (including those in ci/thirdparty-testing) # use these wheels for cuopt packages diff --git a/ci/test_wheel_cuopt_server.sh b/ci/test_wheel_cuopt_server.sh index 8314609732..1262133583 100755 --- a/ci/test_wheel_cuopt_server.sh +++ b/ci/test_wheel_cuopt_server.sh @@ -15,8 +15,8 @@ bash "$(dirname "$(realpath "${BASH_SOURCE[0]}")")/utils/install_openssl3_runtim # Download the packages built in the previous step LIBCUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")") CUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")") -CUOPT_SERVER_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt_server cuopt --pure --cuda "$RAPIDS_CUDA_VERSION")") -CUOPT_SH_CLIENT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt_sh_client cuopt --pure)") +CUOPT_SERVER_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt-server cuopt --pure --cuda "$RAPIDS_CUDA_VERSION")") +CUOPT_SH_CLIENT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt-sh-client cuopt --pure)") # generate constraints (possibly pinning to oldest support versions of dependencies) rapids-generate-pip-constraints test_python "${PIP_CONSTRAINT}" From aeb285afa897698084aad18de3766f61cb7f3fde Mon Sep 17 00:00:00 2001 From: Gil Forsyth Date: Wed, 10 Jun 2026 09:17:09 -0400 Subject: [PATCH 5/7] fix: no stable abi builds yet --- ci/build_docs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci/build_docs.sh b/ci/build_docs.sh index 63abe3f57d..c9fc8a5fe8 100755 --- a/ci/build_docs.sh +++ b/ci/build_docs.sh @@ -18,7 +18,7 @@ export RAPIDS_VERSION_MAJOR_MINOR rapids-logger "Downloading artifacts from previous jobs" CPP_CHANNEL=$(rapids-download-from-github "$(rapids-artifact-name conda_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")") -PYTHON_CHANNEL=$(rapids-download-from-github "$(rapids-artifact-name conda_python cuopt cuopt --stable --cuda "$RAPIDS_CUDA_VERSION")") +PYTHON_CHANNEL=$(rapids-download-from-github "$(rapids-artifact-name conda_python cuopt cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")") rapids-logger "Generating conda environment YAML" From a3bba0d745669b59d09d9d100fba5f4d4b37a8fe Mon Sep 17 00:00:00 2001 From: Gil Forsyth Date: Wed, 10 Jun 2026 10:31:19 -0400 Subject: [PATCH 6/7] fix: cuopt-sh-client is arch independent --- ci/build_wheel_cuopt_sh_client.sh | 2 +- ci/test_wheel_cuopt.sh | 2 +- ci/test_wheel_cuopt_server.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ci/build_wheel_cuopt_sh_client.sh b/ci/build_wheel_cuopt_sh_client.sh index b858cfafff..c0f70d3612 100755 --- a/ci/build_wheel_cuopt_sh_client.sh +++ b/ci/build_wheel_cuopt_sh_client.sh @@ -14,5 +14,5 @@ cp "${package_dir}/dist"/* "${RAPIDS_WHEEL_BLD_OUTPUT_DIR}/" ci/validate_wheel.sh "${package_dir}" "${RAPIDS_WHEEL_BLD_OUTPUT_DIR}" # `cuopt-sh-client` is a true pure package, no CUDA dependency -RAPIDS_PACKAGE_NAME="$(rapids-artifact-name wheel_python cuopt-sh-client cuopt --pure)" +RAPIDS_PACKAGE_NAME="$(rapids-artifact-name wheel_python cuopt-sh-client cuopt --pure --arch any)" export RAPIDS_PACKAGE_NAME diff --git a/ci/test_wheel_cuopt.sh b/ci/test_wheel_cuopt.sh index 79becbd64f..d6267088b3 100755 --- a/ci/test_wheel_cuopt.sh +++ b/ci/test_wheel_cuopt.sh @@ -18,7 +18,7 @@ bash "$(dirname "$(realpath "${BASH_SOURCE[0]}")")/utils/install_openssl3_runtim RAPIDS_PY_CUDA_SUFFIX="$(rapids-wheel-ctk-name-gen "${RAPIDS_CUDA_VERSION}")" LIBCUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")") CUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")") -CUOPT_SH_CLIENT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt-sh-client cuopt --pure)") +CUOPT_SH_CLIENT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt-sh-client cuopt --pure --arch any)") # update pip constraints.txt to ensure all future 'pip install' (including those in ci/thirdparty-testing) # use these wheels for cuopt packages diff --git a/ci/test_wheel_cuopt_server.sh b/ci/test_wheel_cuopt_server.sh index 1262133583..0aeaacdb67 100755 --- a/ci/test_wheel_cuopt_server.sh +++ b/ci/test_wheel_cuopt_server.sh @@ -16,7 +16,7 @@ bash "$(dirname "$(realpath "${BASH_SOURCE[0]}")")/utils/install_openssl3_runtim LIBCUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")") CUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")") CUOPT_SERVER_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt-server cuopt --pure --cuda "$RAPIDS_CUDA_VERSION")") -CUOPT_SH_CLIENT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt-sh-client cuopt --pure)") +CUOPT_SH_CLIENT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt-sh-client cuopt --pure --arch any)") # generate constraints (possibly pinning to oldest support versions of dependencies) rapids-generate-pip-constraints test_python "${PIP_CONSTRAINT}" From 9367d7461e37c8dc69442647e836a2baf88a1088 Mon Sep 17 00:00:00 2001 From: Gil Forsyth Date: Wed, 10 Jun 2026 11:42:53 -0400 Subject: [PATCH 7/7] fix: cuopt-server is arch-independent but cuda-dependent (what?) --- ci/build_wheel_cuopt_server.sh | 2 +- ci/test_self_hosted_service.sh | 2 +- ci/test_wheel_cuopt_server.sh | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ci/build_wheel_cuopt_server.sh b/ci/build_wheel_cuopt_server.sh index b727c7605a..6782328973 100755 --- a/ci/build_wheel_cuopt_server.sh +++ b/ci/build_wheel_cuopt_server.sh @@ -14,5 +14,5 @@ cp "${package_dir}/dist"/* "${RAPIDS_WHEEL_BLD_OUTPUT_DIR}/" ci/validate_wheel.sh "${package_dir}" "${RAPIDS_WHEEL_BLD_OUTPUT_DIR}" # `cuopt-server` is a pure + CUDA version package -RAPIDS_PACKAGE_NAME="$(rapids-artifact-name wheel_python cuopt-server cuopt --pure --cuda "$RAPIDS_CUDA_VERSION")" +RAPIDS_PACKAGE_NAME="$(rapids-artifact-name wheel_python cuopt-server cuopt --pure --arch any --cuda "$RAPIDS_CUDA_VERSION")" export RAPIDS_PACKAGE_NAME diff --git a/ci/test_self_hosted_service.sh b/ci/test_self_hosted_service.sh index f6a3315ed1..85498b16e1 100755 --- a/ci/test_self_hosted_service.sh +++ b/ci/test_self_hosted_service.sh @@ -10,7 +10,7 @@ source rapids-init-pip # Download the cuopt built in the previous step LIBCUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")") CUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")") -CUOPT_SERVER_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt-server cuopt --pure --cuda "$RAPIDS_CUDA_VERSION")") +CUOPT_SERVER_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt-server cuopt --pure --arch any --cuda "$RAPIDS_CUDA_VERSION")") # generate constraints (possibly pinning to oldest support versions of dependencies) rapids-generate-pip-constraints test_python "${PIP_CONSTRAINT}" diff --git a/ci/test_wheel_cuopt_server.sh b/ci/test_wheel_cuopt_server.sh index 0aeaacdb67..2ed337cbe7 100755 --- a/ci/test_wheel_cuopt_server.sh +++ b/ci/test_wheel_cuopt_server.sh @@ -15,7 +15,7 @@ bash "$(dirname "$(realpath "${BASH_SOURCE[0]}")")/utils/install_openssl3_runtim # Download the packages built in the previous step LIBCUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_cpp libcuopt cuopt --cuda "$RAPIDS_CUDA_VERSION")") CUOPT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt cuopt --py "$RAPIDS_PY_VERSION" --cuda "$RAPIDS_CUDA_VERSION")") -CUOPT_SERVER_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt-server cuopt --pure --cuda "$RAPIDS_CUDA_VERSION")") +CUOPT_SERVER_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt-server cuopt --pure --arch any --cuda "$RAPIDS_CUDA_VERSION")") CUOPT_SH_CLIENT_WHEELHOUSE=$(rapids-download-from-github "$(rapids-artifact-name wheel_python cuopt-sh-client cuopt --pure --arch any)") # generate constraints (possibly pinning to oldest support versions of dependencies)