[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

dpkg-shlibdeps cannot find the shared objects provided by a downloader package



Hi mentors,

I'm trying to build the cuda version of pytorch. It depends on a non-free library libcudnn.so.8 which
is downloaded during postinst by bin:nvidia-cudnn. It is provided by a downloader script due to
some problems in the upstream EULA.

During sbuild, all things compiles and can be normally linked against the downloaded libcudnn.so.8,
but dh_shlibdeps (dpkg-shlibdeps) fails to find the package that provides libcudnn.so.8:

```
dpkg-shlibdeps: error: no dependency information found for /lib/powerpc64le-linux-gnu/libcudnn.so.8 (used by
debian/libtorch1.13/usr/lib/powerpc64le-linux-gnu/libtorch_global_deps.so.1.13.0)     
Hint: check if the library actually comes from a package.
```

I tried to add a `shlibs` file for the bin:nvidia-cudnn package:

    libcudnn 8 nvidia-cudnn (>= 8.0.0.0)

https://salsa.debian.org/nvidia-team/nvidia-cudnn/-/commit/92fc55e605f4f0f3b4b6352d5aa1af1610d113b7
And the file can be found in /var/lib/dpkg/info/nvidia-cudnn.shlibs after installation.

Nothing changed.
I have also tried to override the dh_shlibdeps target for src:pytorch as

    dh_shlibdeps -Xcudnn

Nothing changed.

What should I do to make dpkg-shlibdeps believe that the shared object libcudnn.so.8
is provided by bin:nvidia-cudnn (a downloader package)?

The .shlibs file is one of the standard ways for a regular library package, but it does not
work for an empty (downloader-only) package. I think there should be some better way
than building a stub libcudnn.so.8 in bin:nvidia-cudnn and replace it during postinst.

Thanks in advance!

[1] the lib install path is in fact /usr/lib/..., the printed path is /lib/... due to usrmerge.


Reply to: