-
Notifications
You must be signed in to change notification settings - Fork 143
Introduce libcuvs-headers and libcuvs-static CMake components and conda packages
#1494
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: release/25.12
Are you sure you want to change the base?
Introduce libcuvs-headers and libcuvs-static CMake components and conda packages
#1494
Conversation
robertmaynard
left a comment
There was a problem hiding this 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
|
@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. |
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 ). |
|
Realized I need to also make |
Addressed in the latest commit |
|
|
||
| outputs: | ||
| - package: | ||
| name: libcuvs-headers |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
The PR adds a new target
cuvs-cpp-headersthat is part of the maincuvs-exportsset. It also separates outcuvs_staticas its own optional component.Two new conda packages are added to reflect the aforementioned changes, namely
libcuvs-headersandlibcuvs-static.