Skip to content

Conversation

@divyegala
Copy link
Member

@divyegala divyegala commented Nov 4, 2025

The PR adds a new target cuvs-cpp-headers that is part of the main cuvs-exports set. It also separates out cuvs_static as its own optional component.

Two new conda packages are added to reflect the aforementioned changes, namely libcuvs-headers and libcuvs-static.

@divyegala divyegala self-assigned this Nov 4, 2025
@divyegala divyegala added the breaking Introduces a breaking change label Nov 4, 2025
@divyegala divyegala requested a review from a team as a code owner November 4, 2025 04:42
@divyegala divyegala added the feature request New feature or request label Nov 4, 2025
@divyegala divyegala requested review from a team as code owners November 4, 2025 04:42
@divyegala divyegala requested a review from AyodeAwe November 4, 2025 04:42
@divyegala divyegala added non-breaking Introduces a non-breaking change and removed breaking Introduces a breaking change labels Nov 4, 2025
@divyegala divyegala added breaking Introduces a breaking change and removed non-breaking Introduces a non-breaking change labels Nov 4, 2025
@divyegala divyegala removed the breaking Introduces a breaking change label Nov 4, 2025
@divyegala divyegala added the non-breaking Introduces a non-breaking change label Nov 4, 2025
Copy link
Contributor

@robertmaynard robertmaynard left a comment

Choose a reason for hiding this comment

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

Working through the testing the changes locally, my biggest thought so far is that we can't have an option to disable the headers install. They are a required component if we are providing the shared or static version of libcuvs.so

@divyegala
Copy link
Member Author

divyegala commented Nov 12, 2025

@robertmaynard that makes sense, I did not like introducing that option either.

The other problem (maybe okay for this release) is that we'll need a separate target for the C library if we want to build only once and ship the C++ shared and static libraries separately. As it stands currently, I believe the C library can only link to the C++ shared library.

@robertmaynard
Copy link
Contributor

The other problem (maybe okay for this release) is that we'll need a separate target for the C library if we want to build only once and ship the C++ shared and static libraries separately. As it stands currently, I believe the C library can only link to the C++ shared library.

Yeah for the conda / wheel packages the C library will need a dependency on the shared library. For things like java builds and the prebuilt tarball the C library links against the static version ( #1524 ).

@robertmaynard
Copy link
Contributor

Realized I need to also make cuvs::cuvs_static also be automatically imported when it exists. Adding that now

@robertmaynard robertmaynard changed the base branch from main to release/25.12 November 17, 2025 17:30
@robertmaynard
Copy link
Contributor

Realized I need to also make cuvs::cuvs_static also be automatically imported when it exists. Adding that now

Addressed in the latest commit


outputs:
- package:
name: libcuvs-headers
Copy link
Contributor

Choose a reason for hiding this comment

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

This is very close to what we would want in a -dev package but perhaps reversed -- where libcuvs would be only runtime libs while libcuvs-dev would be runtime libs plus headers. See proposal in rapidsai/build-planning#46.

What is our main goal in splitting out the headers? I am curious if that approach for -dev packages still makes sense or not. It might be different in a world with JIT where runtime always requires headers.

Copy link
Contributor

Choose a reason for hiding this comment

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

We need the headers for both the cuvs and cuvs-static packages to work in a -dev sense, but don't want to have two conda packages that clobber the same headers so that is why they are in cpp-headers.

The extra complexity is that I am also planning for splitting out the C API from the libcuvs conda package. That would allow us to have libcuvs-c-dev which only installs the libcuvs.so, libcuvs_c.so and the C headers

In most cases, ${lib}-dev will likely just be a metapackage that pulls in ${lib} and ${lib}-headers

It looks like we match the proposal in 46

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

Labels

feature request New feature or request non-breaking Introduces a non-breaking change

Projects

Development

Successfully merging this pull request may close these issues.

3 participants