Jenkins error: dpkg-shlibdeps can't find libs building non-catkin pkg
Hi,
I hope you can help me finding what's wrong with the generation of .deb packages for a CMake (non-catkin) ROS package (mrpt1
) just released to Kinetic for the first time days ago. First, I want to say it builds cleanly, both using the pre-release scripts, and also in Jenkins in the Kdev_...
builds (log here).
My package is intended to ship a more modern version of a set of libraries (and executables) than those provided by Ubuntu official repositories. Just like opencv3
, for example.
For reference, the package.xml file is here: it just specifies cmake
as build tool instead of catkin. AFAIK, there is no need to pass further parameters to CMake in this XML.
The errors can be seen in this Jenkins build log, and are like:
00:34:46 dpkg-shlibdeps: error: couldn't find library libmrpt-base.so.1.5 needed by debian/ros-kinetic-mrpt1/opt/ros/kinetic/lib/x86_64-linux-gnu/libmrpt-topography.so.1.5.7 (ELF format: 'elf64-x86-64'; RPATH: '')
RPATH is stripped during installation as part of standard Debian policies, as far as I know.
From the dh_link
commands a few lines above, it can be seen that libmrpt-base
seems to exists in this path:
debian/ros-kinetic-mrpt1/opt/ros/kinetic/lib/x86_64-linux-gnu/libmrpt-base.so
and this is the invokation of dh_shlibdeps
:
dh_shlibdeps -l/tmp/binarydeb/ros-kinetic-mrpt1-1.5.6/debian/ros-kinetic-mrpt1//opt/ros/kinetic/lib/
where the path in -l
matches the actual path of the libs that dpkg-shlibdeps
complains about not being found.
The only difference in paths I can see is the multiarch prefix x86_64-linux-gnu
, which is missing in the invokation to dh_shlibdeps
, but it seems correct like this. For example, paths look exactly the same for opencv3
for which Jenkins builds packages without problems (see log and grep for dh_shlibdeps
).
There must be something I'm overlooking but already run out of ideas, so any help would be greatly appreciated!