Skip to content

[REVIEW] Rewrite cuvs-sys build to discover pre-installed cuVS via cmake-package#2022

Open
yan-zaretskiy wants to merge 8 commits intorapidsai:mainfrom
yan-zaretskiy:clean-rust-api
Open

[REVIEW] Rewrite cuvs-sys build to discover pre-installed cuVS via cmake-package#2022
yan-zaretskiy wants to merge 8 commits intorapidsai:mainfrom
yan-zaretskiy:clean-rust-api

Conversation

@yan-zaretskiy
Copy link
Copy Markdown
Contributor

@yan-zaretskiy yan-zaretskiy commented Apr 14, 2026

  • Current build process works by manual CMake invocation, which is suboptimal. The cmake-package is an official Rust crate meant to be used in the build scripts for this purpose. The new scripts attempts the discovery in existing library path, via pip, or CMAKE_PREFIX_PATH
  • Added dlpack to rust conda environment for bindgen
  • Added pre-generated bindings (src/bindings.rs) plus an optional "generate-bindings" cargo feature for opt-in regeneration via bindgen. To support this build scenario, also added the generate-bindings.sh script for CI staleness verification. This would allow us to build cuvs on machines that have no CUDA or cmake, e.g. docs.rs
  • Moved cuvs-sys dependency to [workspace.dependencies] to deduplicate version
  • Updated Rust edition to 2024
  • CI workflows no longer need LIBCLANG_PATH

- Current build process works by manual CMake invocation, which is suboptimal. The cmake-package is an official Rust crate meant to be used in the build scripts for this purpose. The new scripts attempts the discovery in existing library path, via pip, or CMAKE_PREFIX_PATH
- added dlpack to rust conda environment for bindgen
- Added pre-generated bindings (src/bindings.rs) plus an optional "generate-bindings" cargo feature for opt-in regeneration via bindgen. To support this build scenario, also added the generate-bindings.sh script for CI staleness verification. This would allow us to build cuvs on machines that have no CUDA or cmake, e.g. docs.rs
- Moved cuvs-sys dependency to [workspace.dependencies] to deduplicate version
- Updated Rust edition to 2024
- "build.sh rust" now checks bindings staleness; the publish CI workflow no longer needs LIBCLANG_PATH
@yan-zaretskiy yan-zaretskiy requested review from a team as code owners April 14, 2026 14:47
@yan-zaretskiy yan-zaretskiy added the non-breaking Introduces a non-breaking change label Apr 14, 2026
@yan-zaretskiy yan-zaretskiy requested a review from a team as a code owner April 14, 2026 14:47
@yan-zaretskiy yan-zaretskiy requested a review from AyodeAwe April 14, 2026 14:47
Comment thread rust/cuvs-sys/build.rs Outdated
find_package("dlpack").find().map_err(|e| match e {
CmakeError::CMakeNotFound | CmakeError::UnsupportedCMakeVersion => {
anyhow::anyhow!(
"CMake is not installed or too old (3.19+ required). Install CMake and try again."
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minimum required CMake version is 3.30.4. You shouldn't hard-code the version here at all as it is subject to change.

Copy link
Copy Markdown
Contributor Author

@yan-zaretskiy yan-zaretskiy Apr 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated cuvs-sys/build.rs to it doesn't hard-code a CMake version in the error message.

Comment thread rust/cuvs-sys/build.rs Outdated

// Pip installs cmake configs under site-packages/libcuvs/lib64/cmake/cuvs/.
// If there's no pip cuVS, report the original system error.
let pip_cmake_dir = match pip_cuvs_cmake_dir() {
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All searches for non explicit paths should be opt-in. So the user should be required to ask for pip version
instead of automatically searching for it

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed this to opt-in. Python discovery only runs when the LIBCUVS_USE_PYTHON=1 env var is set. Otherwise cuvs-sys uses the standard CMake discovery path. I also verified the Python discovery mechanism in a fresh venv with a pip-installed libcuvs wheel.

Comment thread rust/cuvs-sys/build.rs Outdated
}

fn find_cuvs_package(prefix: Option<PathBuf>) -> Result<cmake_package::CMakePackage> {
let mut builder = find_package("cuvs").components([CUVS_COMPONENT.to_owned()]);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should explicitly specify the version of CUVS we want Cmake to find. Otherwise you could be finding CUVS 26.02 while using the rust bindings logic from 26.08+

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This has already been working as requested. I refactored the code to make this version checking more obvious when reading the code, it was buried too deep. The build script requires the underlying libcuvs_c's version to exactly match the crate version.

Copy link
Copy Markdown
Contributor

@benfred benfred left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nice!

I think that checking in the generated bindings is definitely the way to go here - since this removes the need for clang etc to build the rust bindings, which should make building the rust code easier for your users. As part of this, I'd at least consider removing the clang dependencies from dependencies.yaml though -

Comment thread rust/cuvs-sys/src/lib.rs Outdated
}
// Bindings are pre-generated and checked in at src/bindings.rs.
// Use `rust/scripts/generate-bindings.sh` to regenerate them.
include!("bindings.rs");
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given that the bindings are checked in now - maybe we should go something like pub use bindings::* instead of including via the include! macro ? (or just have the generate_bindings.sh script write out this entire file instead ? )

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Switched this to a normal module re-export in rust/cuvs-sys/src/lib.rs, now it uses mod bindings; pub use bindings::*. We don't want the script to write the lib.rs directly, because we can't get crate level docs this way.

@yan-zaretskiy yan-zaretskiy added the improvement Improves an existing functionality label Apr 20, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Apr 22, 2026

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Replace CMake-based cuvs-sys packaging with workspace-managed discovery and checked-in bindings; add a bindings generator; bump Rust edition to 2024; remove Clang pins from Conda specs; update CI to CUDA 13.1.1 and drop LIBCLANG_PATH exports; assorted build script and formatting/import refinements across Rust sources.

Changes

Cohort / File(s) Summary
CI & release scripts
.github/workflows/publish-rust.yaml, .pre-commit-config.yaml, ci/build_rust.sh, ci/release/update-version.sh
Bumped CI CUDA matrix to 13.1.1; removed steps that located/exported LIBCLANG_PATH; added rust/cuvs-sys/src/bindings.rs to pre-commit patterns; workspace-clean in build script and minor header/text tweaks.
Conda environment specs
conda/environments/rust_cuda-129_arch-*.yaml, conda/environments/rust_cuda-131_arch-*.yaml
Removed pinned LLVM/Clang packages (clang-tools, clang, libclang) from multiple Conda environment files.
Dependency manifest & workspace
dependencies.yaml, rust/Cargo.toml, rust/cuvs/Cargo.toml
Updated workspace metadata: edition → 2024, description changed, added workspace dependency entry for cuvs-sys; rust/cuvs now depends on workspace cuvs-sys; removed explicit clang include from dependencies.
cuvs-sys packaging & build
rust/cuvs-sys/CMakeLists.txt, rust/cuvs-sys/Cargo.toml, rust/cuvs-sys/build.rs, rust/cuvs-sys/get_dlpack.cmake, rust/cuvs-sys/{RAPIDS_BRANCH,VERSION}
Deleted legacy CMake packaging and small reference files; Cargo.toml adds optional features (generate-bindings, doc-only) and docs.rs config; build.rs replaced ad-hoc cmake build with cmake_package discovery, version validation, optional Python-based discovery, improved diagnostics, and a bindgen pipeline.
Checked-in bindings & generator
rust/cuvs-sys/src/lib.rs, rust/cuvs-sys/src/bindings.rs, rust/scripts/generate-bindings.sh
Switched from include!-generated bindings to re-exporting a checked-in bindings.rs; added rust/scripts/generate-bindings.sh to generate or verify bindgen output (--check mode supported).
Rust build/tooling
rust/cuvs/build.rs, rust/rustfmt.toml
cuvs build script now emits rpath via DEP_CUVS_LIB and uses specific rerun hooks; new rust/rustfmt.toml sets edition = 2024 and use_small_heuristics = "Max".
Rust sources — API surface & formatting
rust/cuvs/src/lib.rs, rust/cuvs/examples/cagra.rs, rust/cuvs/src/**
Added extern crate cuvs_sys as ffi;, removed inline bindgen include/tests, updated SPDX years, reordered imports, and collapsed many multi-line expressions into single-line forms. No public API signature changes beyond binding re-export.
Removed packaging artifacts
rust/cuvs-sys/CMakeLists.txt, rust/cuvs-sys/RAPIDS_BRANCH, rust/cuvs-sys/VERSION, rust/cuvs-sys/get_dlpack.cmake
Deleted legacy CMake packaging files and small pointer files previously used for packaging.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately reflects the main objective: rewriting the cuvs-sys build system to use cmake-package for cuVS discovery instead of manual CMake invocation.
Description check ✅ Passed The description clearly outlines the major changes: cmake-package adoption for cuVS discovery, pre-generated bindings with optional regeneration, workspace dependencies consolidation, Rust edition update, and removal of LIBCLANG_PATH dependency.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
rust/cuvs-sys/build.rs (1)

77-78: ⚠️ Potential issue | 🟠 Major

Constrain CMake discovery to the required cuVS version, not just post-validate it.

This still calls an unconstrained find_package("cuvs") and only checks PACKAGE_VERSION after a package has already been selected. If an older cuVS appears earlier in CMAKE_PREFIX_PATH, the build can fail even when the exact required version is installed later in the search path.

Please verify the cmake-package API for exact-version lookup and pass required_version into discovery if supported.

cmake-package crate Rust API find_package exact version requirement

Read-only repo check:

#!/bin/bash
# Expect: cuVS discovery passes the required package version into the CMake/package lookup,
# not only into ensure_exact_cuvs_version after discovery.
rg -n -C4 'find_package\("cuvs"\)|ensure_exact_cuvs_version|required_version' rust/cuvs-sys/build.rs

Also applies to: 125-128

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@rust/cuvs-sys/build.rs` around lines 77 - 78, The current find_cuvs_package
implementation calls find_package("cuvs") without constraining the version and
only validates PACKAGE_VERSION later in ensure_exact_cuvs_version; change it to
pass the required version into the cmake-package discovery API (e.g. use the
find_package variant that accepts a required_version or required flag) so the
lookup itself requires the exact cuVS version, not just post-validated; update
find_cuvs_package (and the other discovery call around
ensure_exact_cuvs_version) to supply the required_version (derived from your
CUVS version constant) to the cmake_package::find_package invocation and remove
reliance on selecting an unconstrained package before checking PACKAGE_VERSION.
🧹 Nitpick comments (1)
rust/cuvs/build.rs (1)

8-17: Clean rewrite; consider a small note on single-path assumption.

Switching from parsing DEP_CUVS_CMAKE_LINKER_FLAGS to a direct -Wl,-rpath=$DEP_CUVS_LIB and removing the unconditional unwrap() is a nice simplification and makes docs.rs/CUDA-less builds robust. This assumes DEP_CUVS_LIB contains a single directory containing libcuvs/libcuvs_c and that any transitive runtime dependencies (e.g., CUDA runtime) are discoverable via system paths or rustc-link-search emitted elsewhere — which matches the new cuvs-sys cmake-package flow. Worth a one-line comment here documenting that contract so a future contributor doesn’t reintroduce multi-path parsing.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@rust/cuvs/build.rs` around lines 8 - 17, Add a one-line comment above
add_runtime_search_path (or inside main) stating that DEP_CUVS_LIB is expected
to be a single directory containing libcuvs/libcuvs_c and that transitive
runtime deps (e.g., CUDA) must be resolvable via system paths or other
rustc-link-search emissions; keep the simplified behavior of printing
cargo:rustc-link-arg=-Wl,-rpath={lib_path} and the removed unwrap().
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@rust/scripts/generate-bindings.sh`:
- Around line 115-126: The current lookup for generated_file relies on GNU-only
find -printf and a hardcoded debug path; change it to search the entire
${target_dir} tree portably and pick the newest match: use find starting at
"${target_dir}" with -type f -name 'cuvs_bindings.rs' and -path
'*/cuvs-sys-*/out/*' and -print0, pipe to xargs -0 ls -1t (or ls -t) and take
the first line to set generated_file, preserving the existing existence check;
update the block that defines generated_file to this portable pipeline so it
works on BSD/macOS and for cross-compilation targets.

---

Duplicate comments:
In `@rust/cuvs-sys/build.rs`:
- Around line 77-78: The current find_cuvs_package implementation calls
find_package("cuvs") without constraining the version and only validates
PACKAGE_VERSION later in ensure_exact_cuvs_version; change it to pass the
required version into the cmake-package discovery API (e.g. use the find_package
variant that accepts a required_version or required flag) so the lookup itself
requires the exact cuVS version, not just post-validated; update
find_cuvs_package (and the other discovery call around
ensure_exact_cuvs_version) to supply the required_version (derived from your
CUVS version constant) to the cmake_package::find_package invocation and remove
reliance on selecting an unconstrained package before checking PACKAGE_VERSION.

---

Nitpick comments:
In `@rust/cuvs/build.rs`:
- Around line 8-17: Add a one-line comment above add_runtime_search_path (or
inside main) stating that DEP_CUVS_LIB is expected to be a single directory
containing libcuvs/libcuvs_c and that transitive runtime deps (e.g., CUDA) must
be resolvable via system paths or other rustc-link-search emissions; keep the
simplified behavior of printing cargo:rustc-link-arg=-Wl,-rpath={lib_path} and
the removed unwrap().
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 27326598-c2a4-4bdd-95c8-5a0428266560

📥 Commits

Reviewing files that changed from the base of the PR and between f2bffb6 and 06c22b0.

📒 Files selected for processing (41)
  • .github/workflows/publish-rust.yaml
  • .pre-commit-config.yaml
  • ci/build_rust.sh
  • ci/release/update-version.sh
  • conda/environments/rust_cuda-129_arch-aarch64.yaml
  • conda/environments/rust_cuda-129_arch-x86_64.yaml
  • conda/environments/rust_cuda-131_arch-aarch64.yaml
  • conda/environments/rust_cuda-131_arch-x86_64.yaml
  • dependencies.yaml
  • rust/Cargo.toml
  • rust/cuvs-sys/CMakeLists.txt
  • rust/cuvs-sys/Cargo.toml
  • rust/cuvs-sys/RAPIDS_BRANCH
  • rust/cuvs-sys/VERSION
  • rust/cuvs-sys/build.rs
  • rust/cuvs-sys/get_dlpack.cmake
  • rust/cuvs-sys/src/bindings.rs
  • rust/cuvs-sys/src/lib.rs
  • rust/cuvs/Cargo.toml
  • rust/cuvs/build.rs
  • rust/cuvs/examples/cagra.rs
  • rust/cuvs/src/brute_force.rs
  • rust/cuvs/src/cagra/index.rs
  • rust/cuvs/src/cagra/index_params.rs
  • rust/cuvs/src/cagra/search_params.rs
  • rust/cuvs/src/cluster/kmeans/mod.rs
  • rust/cuvs/src/cluster/kmeans/params.rs
  • rust/cuvs/src/distance/mod.rs
  • rust/cuvs/src/dlpack.rs
  • rust/cuvs/src/ivf_flat/index.rs
  • rust/cuvs/src/ivf_flat/index_params.rs
  • rust/cuvs/src/ivf_flat/search_params.rs
  • rust/cuvs/src/ivf_pq/index.rs
  • rust/cuvs/src/ivf_pq/index_params.rs
  • rust/cuvs/src/ivf_pq/search_params.rs
  • rust/cuvs/src/lib.rs
  • rust/cuvs/src/resources.rs
  • rust/cuvs/src/vamana/index.rs
  • rust/cuvs/src/vamana/index_params.rs
  • rust/rustfmt.toml
  • rust/scripts/generate-bindings.sh
💤 Files with no reviewable changes (8)
  • rust/cuvs-sys/VERSION
  • rust/cuvs-sys/RAPIDS_BRANCH
  • conda/environments/rust_cuda-131_arch-aarch64.yaml
  • rust/cuvs-sys/get_dlpack.cmake
  • conda/environments/rust_cuda-131_arch-x86_64.yaml
  • conda/environments/rust_cuda-129_arch-aarch64.yaml
  • conda/environments/rust_cuda-129_arch-x86_64.yaml
  • rust/cuvs-sys/CMakeLists.txt

Comment thread rust/scripts/generate-bindings.sh
@yan-zaretskiy
Copy link
Copy Markdown
Contributor Author

The bot made a comment to "constrain CMake discovery to the required cuVS version, not just post-validate it." This does not work (that's what I did in the beginning), because the cmake handles the version requirement as a lower bound. But we want the strict equality check, hence I had to enforce it in the build script itself.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
dependencies.yaml (1)

261-281: Optional: deduplicate the arch matrices shared with rapids_build.

The specific block (lines 269-281) is byte-identical to rapids_build's specific block (lines 248-260). However, the proposed anchor solution using &rapids_build_toolchain_specific at the specific: level is not a standard pattern in other RAPIDS repositories—official repos (rapids-metadata, cucim, raft, cuml, cudf) do not rely on YAML anchors in dependencies.yaml. While standard YAML parsers would technically resolve such anchors, rapids-dependency-file-generator's schema expects explicit lists rather than aliases at the specific: level, and this pattern lacks documented support. If proceeding with deduplication, test thoroughly after running rapids-dependency-file-generator to ensure the generated conda environments are correct, or consider an alternative approach (e.g., manual code comments linking the duplicated sections).

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@dependencies.yaml` around lines 261 - 281, The duplicated arch/matrix list
appears in rust_build.specific and rapids_build.specific; do not replace it with
a nonstandard YAML anchor at the top-level `specific:` (e.g.,
&rapids_build_toolchain_specific) because rapids-dependency-file-generator
expects explicit lists; either keep the byte-identical `specific:` blocks as-is
or, if you must deduplicate, move the anchor to the inner list level that
exactly matches the generator's schema (anchor the matrix list itself), update
both `rust_build` and `rapids_build` to reference that anchored list, and then
run the rapids-dependency-file-generator and full conda env generation tests to
verify correctness before merging.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@dependencies.yaml`:
- Around line 261-281: The duplicated arch/matrix list appears in
rust_build.specific and rapids_build.specific; do not replace it with a
nonstandard YAML anchor at the top-level `specific:` (e.g.,
&rapids_build_toolchain_specific) because rapids-dependency-file-generator
expects explicit lists; either keep the byte-identical `specific:` blocks as-is
or, if you must deduplicate, move the anchor to the inner list level that
exactly matches the generator's schema (anchor the matrix list itself), update
both `rust_build` and `rapids_build` to reference that anchored list, and then
run the rapids-dependency-file-generator and full conda env generation tests to
verify correctness before merging.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 5bdc7dc3-64ae-4eae-a634-62890975bb5b

📥 Commits

Reviewing files that changed from the base of the PR and between 06c22b0 and 099495b.

📒 Files selected for processing (6)
  • conda/environments/rust_cuda-129_arch-aarch64.yaml
  • conda/environments/rust_cuda-129_arch-x86_64.yaml
  • conda/environments/rust_cuda-131_arch-aarch64.yaml
  • conda/environments/rust_cuda-131_arch-x86_64.yaml
  • dependencies.yaml
  • rust/cuvs-sys/Cargo.toml
💤 Files with no reviewable changes (4)
  • conda/environments/rust_cuda-131_arch-x86_64.yaml
  • conda/environments/rust_cuda-129_arch-aarch64.yaml
  • conda/environments/rust_cuda-129_arch-x86_64.yaml
  • conda/environments/rust_cuda-131_arch-aarch64.yaml

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick comments (1)
dependencies.yaml (1)

261-282: Consider reusing rapids_build instead of duplicating it as rust_build.

The new rust_build group is essentially a copy of rapids_build (lines 237–260) restricted to output_types: [conda]. Since the rust files block (line 88) emits conda only, the packages materialized by rapids_build and rust_build are identical for this use case — the same cmake (*cmake_ver), c-compiler, cuda-nvcc, cxx-compiler, ninja, and the same per-arch gcc_linux-*/sysroot_linux-* entries.

If the intent was simply to stop pulling clang/libclang into the Rust env, that could be achieved by keeping the rapids_build include on the rust files block and dropping the clang include (which the AI summary indicates has already been done), without introducing a parallel group that must be kept in sync going forward (e.g., future bumps to cmake_ver, gcc 14.* → 15.*, sysroot 2.28 → 2.xx will need two edits).

If a separate group is desired for clarity/isolation, consider at least documenting why it exists and diverges from rapids_build, so the two don't drift silently.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@dependencies.yaml` around lines 261 - 282, The new rust_build group
duplicates rapids_build (same packages: *cmake_ver, c-compiler, cuda-nvcc,
cxx-compiler, ninja and per-arch gcc_linux-*/sysroot_linux-*) causing
maintenance drift; either remove rust_build and reuse rapids_build in the rust
files block (then drop the clang/libclang include there to avoid pulling them
into the Rust env) or, if you must keep a separate group, add a clear
comment/documentation above rust_build explaining why it diverges and which
packages differ so future bumps (cmake_ver, gcc version, sysroot) are not
missed.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@dependencies.yaml`:
- Around line 261-282: The new rust_build group duplicates rapids_build (same
packages: *cmake_ver, c-compiler, cuda-nvcc, cxx-compiler, ninja and per-arch
gcc_linux-*/sysroot_linux-*) causing maintenance drift; either remove rust_build
and reuse rapids_build in the rust files block (then drop the clang/libclang
include there to avoid pulling them into the Rust env) or, if you must keep a
separate group, add a clear comment/documentation above rust_build explaining
why it diverges and which packages differ so future bumps (cmake_ver, gcc
version, sysroot) are not missed.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: fae3749e-e5e6-4451-8763-754a458fd9ce

📥 Commits

Reviewing files that changed from the base of the PR and between 5b6511f and b604559.

📒 Files selected for processing (6)
  • conda/environments/rust_cuda-129_arch-aarch64.yaml
  • conda/environments/rust_cuda-129_arch-x86_64.yaml
  • conda/environments/rust_cuda-131_arch-aarch64.yaml
  • conda/environments/rust_cuda-131_arch-x86_64.yaml
  • dependencies.yaml
  • rust/cuvs-sys/Cargo.toml
💤 Files with no reviewable changes (4)
  • conda/environments/rust_cuda-131_arch-aarch64.yaml
  • conda/environments/rust_cuda-129_arch-x86_64.yaml
  • conda/environments/rust_cuda-131_arch-x86_64.yaml
  • conda/environments/rust_cuda-129_arch-aarch64.yaml
🚧 Files skipped from review as they are similar to previous changes (1)
  • rust/cuvs-sys/Cargo.toml

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Build ci improvement Improves an existing functionality non-breaking Introduces a non-breaking change Rust

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

4 participants