It seems that many of the https://developer.download.nvidia.com/compute/cuda/redist/ packages come with empty DT_NEEDED. For example patchelf --print-rpath lib/libnvrtc.so is empty, but libnvrtc.so (depending on usage) tries to dlopenlibnvrtc-builtins.so at runtime.
In nixpkgs we use DT_NEEDED to infer dependencies of pre-built binaries and automatically patchelf them with appropriate Runpaths. When libraries dlopen() undeclared dependencies we currently only discover this from users' error reports and have to handle these dependencies manually, e.g.
We're still looking for better way to do things, but meantime I wonder if it would be possible to build cuda packages such that dependencies end up listed in DT_NEEDED in the first place. Thanks!
It seems that many of the https://developer.download.nvidia.com/compute/cuda/redist/ packages come with empty DT_NEEDED. For example
patchelf --print-rpath lib/libnvrtc.so
is empty, butlibnvrtc.so
(depending on usage) tries todlopen
libnvrtc-builtins.so
at runtime.In nixpkgs we use
DT_NEEDED
to infer dependencies of pre-built binaries and automatically patchelf them with appropriate Runpaths. When librariesdlopen()
undeclared dependencies we currently only discover this from users' error reports and have to handle these dependencies manually, e.g.We're still looking for better way to do things, but meantime I wonder if it would be possible to build cuda packages such that dependencies end up listed in
DT_NEEDED
in the first place. Thanks!