[Pkg-cmake-team] Bug#915148: Bug#915148: cmake: regression in ros-ros-comm build

Felix Geyer fgeyer at debian.org
Sat Dec 1 11:29:29 GMT 2018


Hi,

On 01.12.18 06:31, Gianfranco Costamagna wrote:
> Package: cmake
> Version: 3.13.1-1
> Severity: serious
> Affects: ros-ros-comm
>
> A simple ros-ros-comm rebuild now fails with the new cmake in unstable,
> due to lpthread not being found as target.
> I don't know if catkin is to blame, or something else, but clearly the
> old cmake in testing is not having issues.
>
> I'm opening this bug to prevent testing migration, until the problem is
> sorted out (in one way or the other)
> snip of the failure:
>
> -- Using CATKIN_TEST_RESULTS_DIR: /<<BUILDDIR>>/ros-ros-comm-1.14.3+ds1/obj-x86_64-linux-gnu/test_results
> -- Found gtest: gtests will be built
> -- nosetests not found, Python tests can not be run (try installing package 'python-nose')
> -- catkin 0.7.14
> -- Boost version: 1.67.0
> -- Found the following Boost libraries:
> --   system
> --   thread
> --   chrono
> --   date_time
> --   atomic
> CMake Error at obj-x86_64-linux-gnu/devel/share/rostest/cmake/rostestConfig.cmake:146 (message):
>    Project 'rostest' tried to find library '-lpthread'.  The library is
>    neither a target nor built/installed properly.  Did you compile project
>    'rostest'? Did you find_package() it before the subdirectory containing its
>    code is included?
> Call Stack (most recent call first):
>    /usr/share/catkin/cmake/catkinConfig.cmake:87 (find_package)
>    tools/rostest/CMakeLists.txt:23 (find_package)
>
>
> -- Configuring incomplete, errors occurred!
> See also "/<<BUILDDIR>>/ros-ros-comm-1.14.3+ds1/obj-x86_64-linux-gnu/CMakeFiles/CMakeOutput.log".
> See also "/<<BUILDDIR>>/ros-ros-comm-1.14.3+ds1/obj-x86_64-linux-gnu/CMakeFiles/CMakeError.log".
> 	cd obj-x86_64-linux-gnu && tail -v -n \+0 CMakeCache.txt
> ==> CMakeCache.txt <==

This problem occurs since my commit adds ${CMAKE_THREAD_LIBS_INIT} ("-lpthread") to
Boost_LIBRARIES when needed:
https://gitlab.kitware.com/cmake/cmake/commit/bd831ed0948a1e99f573f0056f2bee5d3b21009e

ros-catkin iterates over dependency libraries (Boost_LIBRARIES among other things) and does this:
https://sources.debian.org/src/ros-catkin/0.7.14-7/cmake/templates/pkgConfig.cmake.in/#L118

Until my commit Boost_LIBRARIES only contained absolute paths to boost libraries so that code
just passes them on. For the "-lpthread" case it calls find_library(... "-lpthread") which fails.

Adding something like this would probably fix it:
 >   elseif(${library} MATCHES "^-l")
 >     list(APPEND @PROJECT_NAME at _LIBRARIES ${library})

CCing Brad, maybe you could comment if ros-catkin should expect -l... entries there or FindBoost
needs to be changed?

Cheers,
Felix



More information about the Pkg-cmake-team mailing list