From 1c24178f398e78b8510e6e48018790cf5fed3f35 Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Tue, 22 Sep 2026 07:54:25 -0500 Subject: [PATCH 1/6] build(wheel): drop the CUDA suffix and dimension from libcuopt-client Since #1890 libcuopt_client.so has no rmm and no CUDA library in its DT_NEEDED -- only rapids-logger, gRPC, protobuf and abseil -- so the wheel is the same artifact whichever CUDA the build used, and installing it needs no CUDA stack. disable-cuda on the client wheel, so rapids-build-backend stops probing for a toolkit, drops the cuda dimension from dependency resolution, and leaves the name unsuffixed: one libcuopt-client rather than -cu12 and -cu13 py_run_libcuopt_client loses depends_on_librmm, leaving rapids-logger depends_on_libcuopt_client is unsuffixed everywhere, so mathopt and routing reference the single package a libcuopt_client_filter grouping by arch alone, halving the client's build jobs from four to two the conda output drops its cuda-version pin and librmm from run; both stay in host, where the headers are still needed to compile it The build still needs a CUDA toolkit, since the client is compiled as part of the whole tree, and librmm stays in the wheel's build requires for the same reason. This changes what the wheel depends on and how it is named, not how it is built. Co-Authored-By: Claude Opus 5 --- .github/workflows/build.yaml | 4 +++- .github/workflows/pr.yaml | 7 +++++-- conda/recipes/libcuopt/recipe.yaml | 5 +++-- dependencies.yaml | 28 +++++++-------------------- python/libcuopt_client/pyproject.toml | 8 ++++++-- 5 files changed, 24 insertions(+), 28 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index d7cca486cb..881cb26cba 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -260,7 +260,9 @@ jobs: script: ci/build_wheel_libcuopt_client.sh package-name: libcuopt_client package-type: cpp - matrix_filter: group_by([.ARCH, (.CUDA_VER|split(".")|map(tonumber)|.[0])]) | map(max_by(.PY_VER|split(".")|map(tonumber))) + # One build per arch: the client wheel carries no CUDA in its dependencies or its + # DT_NEEDED, so a second build per CUDA major would produce the same artifact. + matrix_filter: group_by(.ARCH) | map(max_by([(.CUDA_VER|split(".")|map(tonumber)), (.PY_VER|split(".")|map(tonumber))])) wheel-publish-libcuopt-client: needs: wheel-build-libcuopt-client permissions: diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 5c59bf466c..0b982e9fed 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -55,6 +55,7 @@ jobs: runs-on: ubuntu-latest outputs: libcuopt_filter: ${{ steps.set-filters.outputs.libcuopt_filter }} + libcuopt_client_filter: ${{ steps.set-filters.outputs.libcuopt_client_filter }} cuopt_filter: ${{ steps.set-filters.outputs.cuopt_filter }} cuopt_server_filter: ${{ steps.set-filters.outputs.cuopt_server_filter }} cuopt_server_test_filter: ${{ steps.set-filters.outputs.cuopt_server_test_filter }} @@ -64,6 +65,9 @@ jobs: id: set-filters run: | echo "libcuopt_filter=group_by([.ARCH, (.CUDA_VER|split(\".\")|map(tonumber)|.[0])]) | map(max_by(.PY_VER|split(\".\")|map(tonumber)))" >> $GITHUB_OUTPUT + # One build per arch: the client wheel has no CUDA in its dependencies or its + # DT_NEEDED, so a second build per CUDA major would produce the same artifact. + echo "libcuopt_client_filter=group_by(.ARCH) | map(max_by([(.CUDA_VER|split(\".\")|map(tonumber)), (.PY_VER|split(\".\")|map(tonumber))]))" >> $GITHUB_OUTPUT echo "cuopt_filter=group_by({CUDA_VER, ARCH}) | map(min_by(.PY_VER | split(\".\") | map(tonumber)))" >> $GITHUB_OUTPUT echo "cuopt_server_filter=map(select(.ARCH == \"amd64\")) | group_by(.CUDA_VER|split(\".\")|map(tonumber)|.[0]) | map(max_by([(.PY_VER|split(\".\")|map(tonumber)), (.CUDA_VER|split(\".\")|map(tonumber))]))" >> $GITHUB_OUTPUT echo "cuopt_server_test_filter=map(select(.ARCH == \"amd64\")) | group_by(.CUDA_VER | split(\".\") | map(tonumber) | .[0]) | map(max_by([(.PY_VER | split(\".\") | map(tonumber)), (.CUDA_VER | split(\".\") | map(tonumber))]))" >> $GITHUB_OUTPUT @@ -623,8 +627,7 @@ jobs: secrets: inherit # zizmor: ignore[secrets-inherit] uses: rapidsai/shared-workflows/.github/workflows/wheels-build.yaml@release/26.10 with: - # Same filter as libcuopt: every arch and CUDA version, latest Python only. - matrix_filter: ${{ needs.compute-matrix-filters.outputs.libcuopt_filter }} + matrix_filter: ${{ needs.compute-matrix-filters.outputs.libcuopt_client_filter }} package-type: cpp package-name: libcuopt_client build_type: pull-request diff --git a/conda/recipes/libcuopt/recipe.yaml b/conda/recipes/libcuopt/recipe.yaml index 4da190c9b7..e32a904afa 100644 --- a/conda/recipes/libcuopt/recipe.yaml +++ b/conda/recipes/libcuopt/recipe.yaml @@ -137,8 +137,9 @@ outputs: - libabseil - re2 run: - - ${{ pin_compatible("cuda-version", upper_bound="x", lower_bound="x") }} - - librmm =${{ minor_version }} + # No cuda-version pin and no librmm: libcuopt_client.so carries neither in its + # DT_NEEDED since #1890, so installing it should not drag in the CUDA stack. + # Both stay in host, where the headers are still needed to compile it. - openssl - c-ares - libuuid diff --git a/dependencies.yaml b/dependencies.yaml index fcf8babdc1..5b8a57678d 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -175,16 +175,17 @@ files: - build_common - depends_on_librmm - depends_on_rapids_logger + # No CUDA dimension and no rmm: libcuopt_client.so carries neither since #1890, so the + # wheel resolves the same way whichever CUDA the build used. py_run_libcuopt_client: output: pyproject pyproject_dir: python/libcuopt_client matrix: cuda_suffixed: ["false"] - use_cuda_wheels: ["true"] + use_cuda_wheels: ["false"] extras: table: project includes: - - depends_on_librmm - depends_on_rapids_logger py_build_libcuopt_mathopt: output: pyproject @@ -601,33 +602,18 @@ dependencies: - output_types: [requirements, pyproject] packages: - cuopt-cu13==26.10.*,>=0.0.0a0 + # Unsuffixed everywhere: the client wheel is built without a CUDA dimension, so there + # is one libcuopt-client rather than a -cu12 and a -cu13. depends_on_libcuopt_client: common: - - output_types: conda + - output_types: [conda, requirements, pyproject] packages: - - &libcuopt_client_unsuffixed libcuopt-client==26.10.*,>=0.0.0a0 + - libcuopt-client==26.10.*,>=0.0.0a0 - output_types: requirements packages: # pip recognizes the index as a global option for the requirements.txt file - --extra-index-url=https://pypi.nvidia.com - --extra-index-url=https://pypi.anaconda.org/rapidsai-wheels-nightly/simple - specific: - - output_types: [requirements, pyproject] - matrices: - - matrix: - cuda: "12.*" - cuda_suffixed: "true" - packages: - - libcuopt-client-cu12==26.10.*,>=0.0.0a0 - - matrix: - cuda: "13.*" - cuda_suffixed: "true" - packages: - - libcuopt-client-cu13==26.10.*,>=0.0.0a0 - - matrix: - cuda_suffixed: "false" - packages: - - *libcuopt_client_unsuffixed depends_on_libcuopt_mathopt: common: - output_types: conda diff --git a/python/libcuopt_client/pyproject.toml b/python/libcuopt_client/pyproject.toml index 3766809e38..36218ec699 100644 --- a/python/libcuopt_client/pyproject.toml +++ b/python/libcuopt_client/pyproject.toml @@ -30,7 +30,6 @@ classifiers = [ "Programming Language :: Python :: 3.14", ] dependencies = [ - "librmm==26.10.*,>=0.0.0a0", "rapids-logger==0.3.*", ] # This list was generated by `rapids-dependency-file-generator`. To make changes, edit ../../dependencies.yaml and run `rapids-dependency-file-generator`. @@ -69,7 +68,12 @@ regex = "(?P.*)" [tool.rapids-build-backend] build-backend = "scikit_build_core.build" dependencies-file = "../../dependencies.yaml" -matrix-entry = "cuda_suffixed=true;use_cuda_wheels=true" +# libcuopt_client.so has no CUDA in its DT_NEEDED and no rmm since #1890, so the wheel +# is the same artifact whichever CUDA the build used. disable-cuda stops the backend +# probing for a toolkit, drops the cuda dimension from dependency resolution, and leaves +# the name unsuffixed, so there is one libcuopt-client rather than -cu12 and -cu13. +disable-cuda = true +matrix-entry = "cuda_suffixed=false;use_cuda_wheels=false" requires = [ "cmake>=4.0", "librmm==26.10.*,>=0.0.0a0", From 6bf16fa87e91c95d514233b2935b922beae78d50 Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Tue, 22 Sep 2026 08:08:42 -0500 Subject: [PATCH 2/6] ci(wheel): stop naming the client artifact after a CUDA version The wheel no longer carries a CUDA suffix, so the artifact that holds it should not either, and with one build per arch a CUDA version in the name is a value no consumer can predict. append-cuda-suffix: false on the build job, matching cuopt_sh_client, which already sets it for the same reason. rapids-artifact-name drops --cuda, leaving cuopt_wheel_cpp_libcuopt_client_{arch}; the publish job matches on the publish-wheel-search-key prefix, so it is unaffected. Co-Authored-By: Claude Opus 5 --- .github/workflows/build.yaml | 2 ++ .github/workflows/pr.yaml | 2 ++ ci/build_wheel_libcuopt_client.sh | 5 ++++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 881cb26cba..284a2f1dd7 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -260,6 +260,8 @@ jobs: script: ci/build_wheel_libcuopt_client.sh package-name: libcuopt_client package-type: cpp + # The wheel name carries no CUDA suffix, so neither should the artifact. + append-cuda-suffix: false # One build per arch: the client wheel carries no CUDA in its dependencies or its # DT_NEEDED, so a second build per CUDA major would produce the same artifact. matrix_filter: group_by(.ARCH) | map(max_by([(.CUDA_VER|split(".")|map(tonumber)), (.PY_VER|split(".")|map(tonumber))])) diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 0b982e9fed..3c3057e6bf 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -630,6 +630,8 @@ jobs: matrix_filter: ${{ needs.compute-matrix-filters.outputs.libcuopt_client_filter }} package-type: cpp package-name: libcuopt_client + # The wheel name carries no CUDA suffix, so neither should the artifact. + append-cuda-suffix: false build_type: pull-request build-datetime: ${{ needs.build-details.outputs.build-datetime }} script: ci/build_wheel_libcuopt_client.sh diff --git a/ci/build_wheel_libcuopt_client.sh b/ci/build_wheel_libcuopt_client.sh index 9e36b553a2..6a4859843a 100755 --- a/ci/build_wheel_libcuopt_client.sh +++ b/ci/build_wheel_libcuopt_client.sh @@ -129,5 +129,8 @@ python -m auditwheel repair "${EXCLUDE_ARGS[@]}" -w "${RAPIDS_WHEEL_BLD_OUTPUT_D ci/validate_wheel.sh ${package_dir} "${RAPIDS_WHEEL_BLD_OUTPUT_DIR}" -RAPIDS_PACKAGE_NAME="$(rapids-artifact-name wheel_cpp libcuopt_client cuopt --cuda "$RAPIDS_CUDA_VERSION")" +# No --cuda: the client is built once per arch, so the artifact name is +# cuopt_wheel_cpp_libcuopt_client_{arch}. The publish search key is a prefix, so it +# still matches. +RAPIDS_PACKAGE_NAME="$(rapids-artifact-name wheel_cpp libcuopt_client cuopt)" export RAPIDS_PACKAGE_NAME From db442370f4c992859d1f60678600ccfb757b078c Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Tue, 22 Sep 2026 08:21:37 -0500 Subject: [PATCH 3/6] build(wheel): drop the GPU classifier from libcuopt-client The package declares it contains no CUDA kernels and now depends on no CUDA runtime, so advertising Environment :: GPU :: NVIDIA CUDA misdescribes it. cuopt-self-hosted, the other CUDA-free package here, already omits it. Co-Authored-By: Claude Opus 5 --- python/libcuopt_client/pyproject.toml | 1 - 1 file changed, 1 deletion(-) diff --git a/python/libcuopt_client/pyproject.toml b/python/libcuopt_client/pyproject.toml index 36218ec699..44e6cae4a2 100644 --- a/python/libcuopt_client/pyproject.toml +++ b/python/libcuopt_client/pyproject.toml @@ -23,7 +23,6 @@ classifiers = [ "Topic :: Database", "Topic :: Scientific/Engineering", "Programming Language :: C++", - "Environment :: GPU :: NVIDIA CUDA", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", From 6293c21c27536be49ae76ef44f95381bbfb253af Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Tue, 22 Sep 2026 09:15:50 -0500 Subject: [PATCH 4/6] review: trim the comments to one line each Co-Authored-By: Claude Opus 5 --- .github/workflows/build.yaml | 3 +-- .github/workflows/pr.yaml | 3 +-- ci/build_wheel_libcuopt_client.sh | 4 +--- conda/recipes/libcuopt/recipe.yaml | 4 +--- dependencies.yaml | 6 ++---- python/libcuopt_client/pyproject.toml | 5 +---- 6 files changed, 7 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 284a2f1dd7..6d49b8b1d9 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -262,8 +262,7 @@ jobs: package-type: cpp # The wheel name carries no CUDA suffix, so neither should the artifact. append-cuda-suffix: false - # One build per arch: the client wheel carries no CUDA in its dependencies or its - # DT_NEEDED, so a second build per CUDA major would produce the same artifact. + # One build per arch: the client has no CUDA dimension. matrix_filter: group_by(.ARCH) | map(max_by([(.CUDA_VER|split(".")|map(tonumber)), (.PY_VER|split(".")|map(tonumber))])) wheel-publish-libcuopt-client: needs: wheel-build-libcuopt-client diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 3c3057e6bf..ce7783e025 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -65,8 +65,7 @@ jobs: id: set-filters run: | echo "libcuopt_filter=group_by([.ARCH, (.CUDA_VER|split(\".\")|map(tonumber)|.[0])]) | map(max_by(.PY_VER|split(\".\")|map(tonumber)))" >> $GITHUB_OUTPUT - # One build per arch: the client wheel has no CUDA in its dependencies or its - # DT_NEEDED, so a second build per CUDA major would produce the same artifact. + # One build per arch: the client has no CUDA dimension. echo "libcuopt_client_filter=group_by(.ARCH) | map(max_by([(.CUDA_VER|split(\".\")|map(tonumber)), (.PY_VER|split(\".\")|map(tonumber))]))" >> $GITHUB_OUTPUT echo "cuopt_filter=group_by({CUDA_VER, ARCH}) | map(min_by(.PY_VER | split(\".\") | map(tonumber)))" >> $GITHUB_OUTPUT echo "cuopt_server_filter=map(select(.ARCH == \"amd64\")) | group_by(.CUDA_VER|split(\".\")|map(tonumber)|.[0]) | map(max_by([(.PY_VER|split(\".\")|map(tonumber)), (.CUDA_VER|split(\".\")|map(tonumber))]))" >> $GITHUB_OUTPUT diff --git a/ci/build_wheel_libcuopt_client.sh b/ci/build_wheel_libcuopt_client.sh index 6a4859843a..5945171cff 100755 --- a/ci/build_wheel_libcuopt_client.sh +++ b/ci/build_wheel_libcuopt_client.sh @@ -129,8 +129,6 @@ python -m auditwheel repair "${EXCLUDE_ARGS[@]}" -w "${RAPIDS_WHEEL_BLD_OUTPUT_D ci/validate_wheel.sh ${package_dir} "${RAPIDS_WHEEL_BLD_OUTPUT_DIR}" -# No --cuda: the client is built once per arch, so the artifact name is -# cuopt_wheel_cpp_libcuopt_client_{arch}. The publish search key is a prefix, so it -# still matches. +# No --cuda: built once per arch. Publish matches on the search-key prefix. RAPIDS_PACKAGE_NAME="$(rapids-artifact-name wheel_cpp libcuopt_client cuopt)" export RAPIDS_PACKAGE_NAME diff --git a/conda/recipes/libcuopt/recipe.yaml b/conda/recipes/libcuopt/recipe.yaml index e32a904afa..2ebcd514aa 100644 --- a/conda/recipes/libcuopt/recipe.yaml +++ b/conda/recipes/libcuopt/recipe.yaml @@ -137,9 +137,7 @@ outputs: - libabseil - re2 run: - # No cuda-version pin and no librmm: libcuopt_client.so carries neither in its - # DT_NEEDED since #1890, so installing it should not drag in the CUDA stack. - # Both stay in host, where the headers are still needed to compile it. + # Neither is in the client's DT_NEEDED (#1890). Both stay in host, for the headers. - openssl - c-ares - libuuid diff --git a/dependencies.yaml b/dependencies.yaml index 5b8a57678d..0e362ab3e6 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -175,8 +175,7 @@ files: - build_common - depends_on_librmm - depends_on_rapids_logger - # No CUDA dimension and no rmm: libcuopt_client.so carries neither since #1890, so the - # wheel resolves the same way whichever CUDA the build used. + # No CUDA dimension and no rmm: the client links neither (#1890). py_run_libcuopt_client: output: pyproject pyproject_dir: python/libcuopt_client @@ -602,8 +601,7 @@ dependencies: - output_types: [requirements, pyproject] packages: - cuopt-cu13==26.10.*,>=0.0.0a0 - # Unsuffixed everywhere: the client wheel is built without a CUDA dimension, so there - # is one libcuopt-client rather than a -cu12 and a -cu13. + # Unsuffixed: there is one libcuopt-client, not a -cu12 and a -cu13. depends_on_libcuopt_client: common: - output_types: [conda, requirements, pyproject] diff --git a/python/libcuopt_client/pyproject.toml b/python/libcuopt_client/pyproject.toml index 44e6cae4a2..65bef9a2c7 100644 --- a/python/libcuopt_client/pyproject.toml +++ b/python/libcuopt_client/pyproject.toml @@ -67,10 +67,7 @@ regex = "(?P.*)" [tool.rapids-build-backend] build-backend = "scikit_build_core.build" dependencies-file = "../../dependencies.yaml" -# libcuopt_client.so has no CUDA in its DT_NEEDED and no rmm since #1890, so the wheel -# is the same artifact whichever CUDA the build used. disable-cuda stops the backend -# probing for a toolkit, drops the cuda dimension from dependency resolution, and leaves -# the name unsuffixed, so there is one libcuopt-client rather than -cu12 and -cu13. +# The client links no CUDA and no rmm (#1890), so the wheel is unsuffixed. disable-cuda = true matrix-entry = "cuda_suffixed=false;use_cuda_wheels=false" requires = [ From 1aca1cf7639547660cc8ed5fdef2da3e1c55288a Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Tue, 22 Sep 2026 16:50:25 -0500 Subject: [PATCH 5/6] fix(conda): declare rapids-logger on the client librapids_logger.so is in libcuopt_client.so's DT_NEEDED, but the run requirements never named it -- librmm pulled it in transitively. Dropping librmm took it with it, and the isolation test caught the result: OSError: librapids_logger.so: cannot open shared object file Co-Authored-By: Claude Opus 5 --- conda/recipes/libcuopt/recipe.yaml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/conda/recipes/libcuopt/recipe.yaml b/conda/recipes/libcuopt/recipe.yaml index 2ebcd514aa..cd171929d7 100644 --- a/conda/recipes/libcuopt/recipe.yaml +++ b/conda/recipes/libcuopt/recipe.yaml @@ -137,7 +137,10 @@ outputs: - libabseil - re2 run: - # Neither is in the client's DT_NEEDED (#1890). Both stay in host, for the headers. + # No cuda-version pin and no librmm: neither is in the client's DT_NEEDED (#1890). + # Both stay in host, for the headers. rapids-logger is explicit because librmm + # used to pull it in transitively, and librapids_logger.so is a real DT_NEEDED. + - rapids-logger =0.3 - openssl - c-ares - libuuid From 82404eff564614248f55373b6c281f91d7c51673 Mon Sep 17 00:00:00 2001 From: Ramakrishna Prabhu Date: Wed, 23 Sep 2026 18:17:35 -0500 Subject: [PATCH 6/6] review: describe the current state in the comments, not the change Co-Authored-By: Claude Opus 5 --- ci/build_wheel_libcuopt_client.sh | 2 +- conda/recipes/libcuopt/recipe.yaml | 5 ++--- dependencies.yaml | 4 ++-- python/libcuopt_client/pyproject.toml | 2 +- 4 files changed, 6 insertions(+), 7 deletions(-) diff --git a/ci/build_wheel_libcuopt_client.sh b/ci/build_wheel_libcuopt_client.sh index 5945171cff..e561fd271b 100755 --- a/ci/build_wheel_libcuopt_client.sh +++ b/ci/build_wheel_libcuopt_client.sh @@ -129,6 +129,6 @@ python -m auditwheel repair "${EXCLUDE_ARGS[@]}" -w "${RAPIDS_WHEEL_BLD_OUTPUT_D ci/validate_wheel.sh ${package_dir} "${RAPIDS_WHEEL_BLD_OUTPUT_DIR}" -# No --cuda: built once per arch. Publish matches on the search-key prefix. +# The artifact is cuopt_wheel_cpp_libcuopt_client_{arch}; publish matches on the prefix. RAPIDS_PACKAGE_NAME="$(rapids-artifact-name wheel_cpp libcuopt_client cuopt)" export RAPIDS_PACKAGE_NAME diff --git a/conda/recipes/libcuopt/recipe.yaml b/conda/recipes/libcuopt/recipe.yaml index cd171929d7..fd96367039 100644 --- a/conda/recipes/libcuopt/recipe.yaml +++ b/conda/recipes/libcuopt/recipe.yaml @@ -137,9 +137,8 @@ outputs: - libabseil - re2 run: - # No cuda-version pin and no librmm: neither is in the client's DT_NEEDED (#1890). - # Both stay in host, for the headers. rapids-logger is explicit because librmm - # used to pull it in transitively, and librapids_logger.so is a real DT_NEEDED. + # Every library libcuopt_client.so links. rmm and the CUDA runtime are host-only: + # the client includes their headers but links neither. - rapids-logger =0.3 - openssl - c-ares diff --git a/dependencies.yaml b/dependencies.yaml index 0e362ab3e6..a09be27dd3 100644 --- a/dependencies.yaml +++ b/dependencies.yaml @@ -175,7 +175,7 @@ files: - build_common - depends_on_librmm - depends_on_rapids_logger - # No CUDA dimension and no rmm: the client links neither (#1890). + # The client links no CUDA and no rmm, so rapids-logger is its only runtime dependency. py_run_libcuopt_client: output: pyproject pyproject_dir: python/libcuopt_client @@ -601,7 +601,7 @@ dependencies: - output_types: [requirements, pyproject] packages: - cuopt-cu13==26.10.*,>=0.0.0a0 - # Unsuffixed: there is one libcuopt-client, not a -cu12 and a -cu13. + # One unsuffixed libcuopt-client, for every CUDA version and every output type. depends_on_libcuopt_client: common: - output_types: [conda, requirements, pyproject] diff --git a/python/libcuopt_client/pyproject.toml b/python/libcuopt_client/pyproject.toml index 65bef9a2c7..05803e0e59 100644 --- a/python/libcuopt_client/pyproject.toml +++ b/python/libcuopt_client/pyproject.toml @@ -67,7 +67,7 @@ regex = "(?P.*)" [tool.rapids-build-backend] build-backend = "scikit_build_core.build" dependencies-file = "../../dependencies.yaml" -# The client links no CUDA and no rmm (#1890), so the wheel is unsuffixed. +# The client links no CUDA and no rmm, so the wheel name carries no CUDA suffix. disable-cuda = true matrix-entry = "cuda_suffixed=false;use_cuda_wheels=false" requires = [