Ask Your Question
1

Jenkins error: dpkg-shlibdeps can't find libs building non-catkin pkg

asked 2018-05-04 23:19:49 -0500

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!

edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted
0

answered 2018-05-06 13:14:09 -0500

updated 2018-05-12 03:02:09 -0500

This (likely seems)-->seemed to be caused by only partially following the instructions of REP 136. Will come back with the outcome after carefully following that REP.

Update 10th May'18: It turned out complying with REP 136 is not enough to avoid the shlibdeps errors. Here is the log of the newer build in the farm: log

Update 12th May'18: Following these instructions to manually build the .deb packages just works as expected without any error (!!).

Furthermore, downloading the .dsc and building from sources also works:

dget http://repositories.ros.org/ubuntu/building/pool/main/r/ros-kinetic-mrpt1/ros-kinetic-mrpt1_1.5.7-0xenial.dsc
dpkg-source -x  ros-kinetic-mrpt1_1.5.7-0xenial.dsc 
cd ros-kinetic-mrpt1-1.5.7
dpkg-buildpackage
...
dpkg-deb: building package 'ros-kinetic-mrpt1' in '../ros-kinetic-mrpt1_1.5.7-0xenial_amd64.deb'.
edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

2 followers

Stats

Asked: 2018-05-04 23:19:49 -0500

Seen: 449 times

Last updated: May 12 '18