setup-ros
setup-ros copied to clipboard
Add support for ROS-O (ROS One) distribution
Summary
This PR adds support for ROS-O (ROS One), a community-supported ROS 1 distribution that works on Ubuntu 20.04 and newer versions.
Changes
Core functionality
- Add ROS-O repository configuration with GPG key handling
- Support mixed ROS 1 and ROS 2 repository installation on the same system
- Implement proper repository selection based on Ubuntu version and requested distributions
Bug fixes
- Fix SSL certificate handling when downloading ROS-O GPG key by ensuring ca-certificates is installed
- Pin meson version (>=0.60.0,<0.64.0) to avoid colcon-meson 0.4.2 compatibility issues with newer meson releases
Testing
- Add ROS-O test cases to CI workflow
- Test matrix includes: ubuntu:jammy with ROS-O, ubuntu:noble with ROS-O
Use cases
This enables several useful combinations:
- Install ROS-O alongside ROS 2 Humble on Ubuntu 22.04
- Install ROS-O alongside ROS 2 Jazzy on Ubuntu 24.04
- Install Noetic + Rolling on Ubuntu 20.04 (both ROS 1 and ROS 2 repos)
Example usage:
- uses: ros-tooling/setup-ros@ros-o-support
with:
required-ros-distributions: one humble
Technical details
The implementation handles backward compatibility by:
- Always adding ROS 1 repository on Focal (Ubuntu 20.04) for focal-specific dependencies
- Adding ROS 2 repository on newer Ubuntu versions when no distributions are specified
- Adding both repositories when mixed distributions are requested
Testing
All CI tests pass with these changes. The implementation has been tested with:
- ROS-O + Humble on Ubuntu 22.04
- ROS-O + Jazzy on Ubuntu 24.04
- Noetic + Rolling on Ubuntu 20.04
Breaking changes
None. This is fully backward compatible with existing configurations.