-
Notifications
You must be signed in to change notification settings - Fork 96
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
third party packages install to lib/<arch> on focal #642
Comments
It seems that something similar was fixed with ros2/ros_workspace#20 |
Seems this was explicitly introduced in bloom to get shlibdeps working: |
Bloom behavior and our expectations have boomeranged a few times. Our goal is to match the expected behavior of the upstream platform and tooling. I'm going to move this issue to Bloom for further discussion since the buildfarm is just executing package build scripts and all of the configuration for those builds should be done in bloom's templates. |
Bloom's default behavior should be to match the upstream platform defaults. It may be that with the debhelper changes, the ROS setup scripts provided by catkin in Noetic need to be updated to include the multiarch path in its load path the way that ros_workspace does for ROS 2. |
@nuclearsandwich Actually it seems that this also affects normal ROS(2) packages (where DEB_HOST_MULTIARCH is not set), see also fzi-forschungszentrum-informatik/Lanelet2#162. Most catkin/ament packages ignore this variable and just install to I think it would make sense to explicitly overwrite The alternative would be to install all ROS packages according to the platform defaults, but that would require changing catkin_cmake_modules and ament_cmake and maybe break a lot of things (like nodelets assuming |
I think that it's quite likely that we may diverge between ROS 1 and ROS 2 on what to do. I think that ROS 1 should probably remain as is, possibly enforcing installation in The one immediate challenge for that is that the plain cmake bloom templates are common to ROS 1 and ROS 2 but we can customize the template behavior by checking the ROS distro version in the template logic. If you'd like to start a PR @poggenhans that'd be rad. I'll share the discussion with the rest of the infra team next week and see if there's any other thoughts on the matter. |
Newer debhelper versions will set CMAKE_INSTALL_LIBDIR=lib/<arch>. This will cause packages that use GNUInstallDirs to install to this location instead of lib and can confuse ROS tools. closes ros-infrastructure#642
Newer debhelper versions will set CMAKE_INSTALL_LIBDIR=lib/<arch>. This will cause packages that use GNUInstallDirs to install to this location instead of lib and can confuse ROS tools. closes ros-infrastructure#642
Ok, I created a PR that implements this. Looking forward for your feedback. Also looking forward on the result of your discussion. Changing the library dir for all of ROS 2 to |
Hi,
I encountered an issue with third party packages on focal (at least for those using
GNUInstallDirs
): libraries are installed into/opt/ros/noetic/lib/x86_64-linux-gnu
instead of just/opt/ros/noetic/lib
(as in bionic).This leads to the problem that other packages won't find these libs if this path is not added to e.g. LD_LIBRARY_PATH.
On bionic:
On focal:
See e.g.
https://build.ros.org/job/Mbin_uB64__rcdiscover__ubuntu_bionic_amd64__binary/11/console
https://build.ros.org/job/Nbin_uF64__rcdiscover__ubuntu_focal_amd64__binary/4/console
This happens because of a change introduced in debhelper version 11.4 which explicitly sets
CMAKE_INSTALL_LIBDIR=lib/x86_64-linux-gnu
in the configure step:https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=722697
This seems to only affect third party packages as there the generated debian rules has
Related issues:
Any thoughts on how to fix this?
One option could be to not set
DEB_HOST_MULTIARCH
for debhelper versions >= 11.4...The text was updated successfully, but these errors were encountered: