Skip to content

Remove libclang pin from clang dependency group#2263

Open
vyasr wants to merge 1 commit into
NVIDIA:mainfrom
vyasr:remove-libclang-pin
Open

Remove libclang pin from clang dependency group#2263
vyasr wants to merge 1 commit into
NVIDIA:mainfrom
vyasr:remove-libclang-pin

Conversation

@vyasr

@vyasr vyasr commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

This PR removes the libclang==20.1.8 pin from the clang dependency group in dependencies.yaml.

Problem

The explicit libclang==20.1.8 pin causes the conda solver to hang when creating the combined RAPIDS devcontainer environment. Specifically, when cuvs is included alongside cudf (which depends on matplotlib<3.11), the solver cannot efficiently resolve the conflict between:

  • libclang==20.1.8 → provides libclang13 20.1.8
  • matplotlib<3.11 → pulls in qt6-main → requires libclang13>=22.1.0

While the environment is technically solvable (older Qt builds accept libclang13>=20.1.8), the search space created by the 29 builds of libclang 20.1.8 × multiple Qt versions × CUDA packages × rapidsai channel packages causes the solver to hang indefinitely.

Why this is safe to remove

  1. clang and clang-tools do not depend on libclang. The clang compiler depends on libclang-cpp (the C++ API), which is a separate package from libclang (the C API wrapper).

  2. The Rust bindgen workflow doesn't use the clang dependency group. The rust file key does not include the clang group — bindgen finds libclang.so at runtime from whatever version is available in the environment (provided transitively via Qt/matplotlib's dependency on libclang13).

  3. Other RAPIDS repos don't pin libclang. cudf, raft, and rmm only pin clang and clang-tools without libclang and do not experience this issue.

  4. Historical context: libclang was originally added to the rust dependency group for bindgen support, then moved into the clang group during a version bump refactor. The rust file key no longer includes the clang group, making this entry vestigial.

The explicit libclang==20.1.8 pin causes the conda solver to hang when
combined with matplotlib (which pulls in Qt6, which requires
libclang13>=22.1.0). The solver cannot efficiently resolve the conflict
between the pinned older libclang and Qt6's newer requirement, leading
to effectively infinite solve times in environments with many packages
(such as the combined RAPIDS devcontainer environment).

The libclang package is not needed in the clang dependency group:
- clang and clang-tools do not depend on libclang
- The Rust bindgen workflow (the original reason libclang was added)
  uses the rust file key which does not include the clang group
- bindgen finds libclang.so at runtime from whatever version is
  available in the environment (provided transitively by Qt/matplotlib)

Other RAPIDS repos (cudf, raft, rmm) only pin clang and clang-tools
without libclang and do not experience this issue.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant