geometry2
geometry2 copied to clipboard
Compatibility with conda builds
This looks reasonable. Can you provide any pointers why this is necessary for this specific package and docs or references why these specific arguments are the solution?
Hi @tfoote,
Sorry - I opened this PR in a rush and should have given more explanation. The find_package(Threads) and linking to {CMAKE_THREAD_LIBS_INIT} pulls in pthread. The link to rt is also necessary. On my Ubuntu installation of ROS melodic, buffer_server links indeed to both pthread and rt, although it is currently not explicitly linked. I can only guess that it's being pulled in from another dependency somehow, but it is better to link explicitly:
ldd /opt/ros/melodic/lib/tf2_ros/buffer_server
linux-vdso.so.1 (0x00007ffeef2ff000)
libtf2_ros.so => /opt/ros/melodic/lib/libtf2_ros.so (0x00007fe9fa705000)
libactionlib.so => /opt/ros/melodic/lib/libactionlib.so (0x00007fe9fa4e4000)
libroscpp.so => /opt/ros/melodic/lib/libroscpp.so (0x00007fe9fa14f000)
librosconsole.so => /opt/ros/melodic/lib/librosconsole.so (0x00007fe9f9f19000)
libtf2.so => /opt/ros/melodic/lib/libtf2.so (0x00007fe9f9ce5000)
libroscpp_serialization.so => /opt/ros/melodic/lib/libroscpp_serialization.so (0x00007fe9f9ae2000)
librostime.so => /opt/ros/melodic/lib/librostime.so (0x00007fe9f98c2000)
libboost_system.so.1.65.1 => /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 (0x00007fe9f96bd000)
libboost_thread.so.1.65.1 => /usr/lib/x86_64-linux-gnu/libboost_thread.so.1.65.1 (0x00007fe9f9498000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fe9f9279000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fe9f8ef0000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fe9f8cd8000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fe9f88e7000)
libxmlrpcpp.so => /opt/ros/melodic/lib/libxmlrpcpp.so (0x00007fe9f86c8000)
libcpp_common.so => /opt/ros/melodic/lib/libcpp_common.so (0x00007fe9f84bd000)
libboost_chrono.so.1.65.1 => /usr/lib/x86_64-linux-gnu/libboost_chrono.so.1.65.1 (0x00007fe9f82b8000)
libboost_filesystem.so.1.65.1 => /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 (0x00007fe9f809e000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fe9f7d00000)
librosconsole_log4cxx.so => /opt/ros/melodic/lib/librosconsole_log4cxx.so (0x00007fe9f7ae5000)
librosconsole_backend_interface.so => /opt/ros/melodic/lib/librosconsole_backend_interface.so (0x00007fe9f78e3000)
liblog4cxx.so.10 => /usr/lib/x86_64-linux-gnu/liblog4cxx.so.10 (0x00007fe9f751a000)
libboost_regex.so.1.65.1 => /usr/lib/x86_64-linux-gnu/libboost_regex.so.1.65.1 (0x00007fe9f7212000)
libconsole_bridge.so.0.4 => /usr/lib/x86_64-linux-gnu/libconsole_bridge.so.0.4 (0x00007fe9f700d000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fe9f6e05000)
/lib64/ld-linux-x86-64.so.2 (0x00007fe9fabec000)
libapr-1.so.0 => /usr/lib/x86_64-linux-gnu/libapr-1.so.0 (0x00007fe9f6bd0000)
libaprutil-1.so.0 => /usr/lib/x86_64-linux-gnu/libaprutil-1.so.0 (0x00007fe9f69a5000)
libicui18n.so.60 => /usr/lib/x86_64-linux-gnu/libicui18n.so.60 (0x00007fe9f6504000)
libicuuc.so.60 => /usr/lib/x86_64-linux-gnu/libicuuc.so.60 (0x00007fe9f614c000)
libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007fe9f5f45000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fe9f5d41000)
libcrypt.so.1 => /lib/x86_64-linux-gnu/libcrypt.so.1 (0x00007fe9f5b09000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007fe9f58d7000)
libicudata.so.60 => /usr/lib/x86_64-linux-gnu/libicudata.so.60 (0x00007fe9f3d2e000)
Therefore, the PR can be summarized by explicitly linking to the rt and pthread dependencies, rather than relying on other dependencies to pull in rt and pthread.
/cc @wolfv @traversaro who might give better explanations ;)