ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

how does bloom works for any plateform

asked 2020-10-06 07:48:06 -0600

dinesh gravatar image

If i release my custom ros package using bloom software release tool which i build in ubuntu local pc with intel processor. How is it possible that this package also runs on other plateforms where i install that package with apt install ros-package ? Also how is it possible that given ros package runs on any plateform without cross compilation?

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2020-10-06 08:13:55 -0600

mgruhler gravatar image

bloom just puts the source code version you release into a release repository. from there it is fetched from a build server which builds the binaries for the different platforms. Whatever you build locally is completely independent...

edit flag offensive delete link more


It means if i release the ros package or even any software using bloom and the binaries will work in any platform like raspberry pi, jetson nano etc?

dinesh gravatar image dinesh  ( 2020-10-06 10:28:21 -0600 )edit

well, no. They need to compile successfully for that arch. I think (but might be mistaken) by default it builds for the following architectures:

  • amd64
  • i386 (prior to lunar, this has been dropped as Ubuntu itself isn't shipping i386 binaries anymore)
  • armhf / arm32
  • arm64

See REP-3 for additional information.

mgruhler gravatar image mgruhler  ( 2020-10-07 01:30:24 -0600 )edit

answered 2020-10-07 15:56:08 -0600

nuclearsandwich gravatar image

Expanding on @mgruhler's answer, Bloom processes ROS packages and generates content specific to each target operating system (Examples: Debian Buster, Fedora 32, and Ubuntu Focal). For packages released into the official ROS distributions, that data is then used to build packages for each supported target / architecture (Examples: amd64, i386, armhf, arm64). Bloom itself does not have or perform any architecture-specific functions.

Also how is it possible that given ros package runs on any plateform without cross compilation?

Packages are built in a native environment for each target platform. On the ROS 1 build farm, those native environments are provided by custom Docker images which include qemu-user-static binaries for emulating the native platform. Which is one reason why those builds tend to require more time. On the ROS 2 build farm we are using native ARM machines to provide the armhf and arm64 builds.

edit flag offensive delete link more

Question Tools



Asked: 2020-10-06 07:48:06 -0600

Seen: 163 times

Last updated: Oct 07 '20