We build ROS 2 core packages from sources, fixing the version/hash for each repository, and then we deploy the built artifacts to an internal registry.
This is based on the ROS 2 Conan Integration we presented some time ago.
These packages are built very sporadically, let’s say less than once a week, as we rebuild them only when we cherry-pick new ROS PRs into our forks.
As said, these are the core packages, e.g. rclcpp
, geometry2
, etc. We treat these as any other third-party software that our applications use (such as boost
, tensorflow
, etc).
Then, we have our robot applications that depend on ROS 2, for which we are actively measuring the compile-time and trying to reduce it.
Differently from the ROS 2 core packages, the robot applications are built hundreds of times everyday (by all our developers, their PRs and our CI/CD jobs).
As mentioned in the OP by Jeffery, we notice 25%-50% increase in compile-time in most of our ROS 2 robotics applications if we replace ROS 2 Galactic with ROS 2 Humble.
Deploying the Humble update as-is today, would cost us a lot of extra-money spent on AWS and various infrastructures.
This is a deal-breaker and we will not be able to move to Humble until we get the compile-time back to reasonable numbers.