Ask Your Question
1

What is the status of multiarch support in ROS 1 and/or 2?

asked 2018-02-28 06:26:37 -0600

gvdhoorn gravatar image

updated 2018-02-28 08:38:47 -0600

Triggered by #q283547.

This may not be such a big issue any more with i386 becoming less and less used, but I'm still curious.

Can somebody 'in the know' summarise the current status of multiarch support in ROS? The question that lead to my question is about ROS 1, but the same could be asked about ROS 2.

Searching around I found ros/catkin#624, which was merged and seems to address a piece of it in Catkin, and catkin/catkin_tools#156 for catkin_tools, but an ls -al of /opt/ros/kinetic on an amd64 machine does not show an x86_64-linux-gnu sub dir in /opt/ros/kinetic/lib.

Is multiarch supported and would it depend on whether GNUInstallDirs is loaded in the respective CMakeLists.txt, or are there still some blocking issues that need to be resolved?

edit retag flag offensive close merge delete

Comments

Note that I tagged this with kinetic, but only because I had to pick something. It's not specific to that ROS release.

gvdhoorn gravatar imagegvdhoorn ( 2018-02-28 06:31:35 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted
1

answered 2018-03-01 11:13:06 -0600

nuclearsandwich gravatar image

updated 2018-03-01 12:28:25 -0600

gvdhoorn gravatar image

Multi-Arch control fields aren't included in the bloom packaging templates for debian so there's no explicit support for multiarch per the Debian and Ubuntu documentation. Nor are different architectures of ROS packages co-installable.

Multiarch support is not a planned feature on the ROS 2 Roadmap. A few packages that use a multiarch installation from upstream are packaged in ardent to use newer versions than are available on xenial. Those packages required changes to packaging configuration in their reverse-dependencies in order to support GNUInstallDirs. These changes are still made on a per-package basis and there aren't current plans to try and generically add them to bloom's templates.

Is multiarch supported and would it depend on whether GNUInstallDirs is loaded in the respective CMakeLists.txt, or are there still some blocking issues that need to be resolved?

I'm not confident on all the necessary details but I'm pretty sure that for a start: a ROS package attempting to use GNUInstallDirs would need to also register environment hooks to make sure the multiarch dir is on the library path.

One blocking issue I can think of off the top of my head, which to my knowledge are not even generally solved upstream, are the handling of headers and dev dependencies in a multiarch setting. Since ROS packages don't separate dev dependencies into separate packages, this pretty much blocks multiarch support unless we either resolve the co-installability satisfactorily or separate dev packages out.

I believe the pull requests linked above are about supporting upstream dependencies with multiarch configuration (console-bridge and urdfdom) and not adding multiarch to ROS packages but I could be wrong about the scope.

Edit: Finished a sentence in the final paragraph.

Edit2: Formatting to reveal link.

edit flag offensive delete link more

Comments

Is the [1] missing a link?

gvdhoorn gravatar imagegvdhoorn ( 2018-03-01 12:22:33 -0600 )edit

Thanks for the answer.

gvdhoorn gravatar imagegvdhoorn ( 2018-03-01 12:23:29 -0600 )edit

Is the [1] missing a link?

Looks like answers doesn't support the full range of markdown I'm familiar with. Edited to show the link.

nuclearsandwich gravatar imagenuclearsandwich ( 2018-03-01 12:26:22 -0600 )edit

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-02-28 06:26:37 -0600

Seen: 141 times

Last updated: Mar 01 '18