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

Revision history [back]

click to hide/show revision 1
initial version

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.