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!
Asked by Jose Luis Blanco on 2018-05-04 23:19:49 UTC
Answers
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'.
Asked by Jose Luis Blanco on 2018-05-06 13:14:09 UTC
Comments