Robotics StackExchange | Archived questions

Create (all) deb-packages of ROS distro

Hello,

in the group I'm working at we're started to use ROS 2 (currently Foxy) on (slightly modified) Debian (currently Buster). As REP 2000 specifies the platform is only supported by source code. This results in slightly different versions running on each developers PC and maintaining several installations. We would like to decrease the complexity by building the packages ourself.

Preferably would a be a solution where all ros-packages in a workspace would be build and packaged as deb.

For a package without dependencies to other packages (e.g. ament_package) this can be done with bloom-generate and fakeroot. However this has to been called manually for each package in the correct order and requires that rosdep is updated. Is there a way to automate this for all ros-packages of a workspace?

regards Tobias

Asked by Tobias Neumann on 2021-01-07 11:51:55 UTC

Comments

Answers

The full solution for what you're asking would be to setup your own instance of the buildfarm and build the subset of the packages you want targeting the platform(s) you want if you want to have individual debian packages for each package.

However there's a level of commitment that requires which may be more than you're looking for. For a lower weight approach I would recommend not trying to package and distribute things at a per package level but at the workspace level. You can tar up the install directory and then untar it onto the destination like we do with what we call "Fat Archives": https://index.ros.org/doc/ros2/Installation/Rolling/Linux-Install-Binary/

If you want to use the debian pipeline for sharing you could relatively easily extend these archives into a debian package using tools like checkinstall and manually adding the little bit of metadata necessary or manually generate the debian packages of the aggregate results. Again this is possible on the per package basis, but again you would have to sequence everything manually which is why we have the automated buildfarm systems for doing this.

Asked by tfoote on 2021-01-08 15:34:20 UTC

Comments

Thank you very much for your answer. I hoped that there would be a minimal setup or workaround.

I'm not sure if Fat Archives would be an option for us, since we have a few different (small) projects, but it's a nice fallback option. I think we will invest some time in trying to get the buildfarm running and then will see if that would be too much overhead for us.

Asked by Tobias Neumann on 2021-01-14 10:06:35 UTC

Entry points for setting up the buildfarm are here: https://github.com/ros-infrastructure/buildfarm_deployment and here: https://github.com/ros-infrastructure/ros_buildfarm/blob/master/doc/index.rst

Asked by tfoote on 2021-01-14 13:15:52 UTC

As a complicating factor on the build farm setup we're currently migrating the official build farms from the deployment scripts which @tfoote linked to new ones based on Cinc/Chef and which support Ubuntu 20.04 as a host platform. From a pure technical perspective I would definitely recommend using the new deployment scripts. However, due to their newness there's an utter dearth of documentation on actually deploying with them. If the workspace archive will work, even as an intermediate measure, I'd definitely recommend that and if you're interested I can lean on you to review the buildfarm deployment documentation as I write it.

Asked by nuclearsandwich on 2021-01-14 16:38:42 UTC

Thank you for these clear warnings ;). It would be nice if you could give me a heads up when you have the first version of the documentation. I hoped I could set this up at the beginning of the year, when project pressure isn't overwhelming yet ;), but it's better to wait instead of wasting time. As a warning I might not have directly time to setup the buildfarm when the documentation is finished. But when I do, I would most happily give you feedback.

Asked by Tobias Neumann on 2021-01-15 13:52:15 UTC