setup-ros icon indicating copy to clipboard operation
setup-ros copied to clipboard

Add support for ROS-O (ROS One) distribution

Open iory opened this issue 2 months ago • 2 comments

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.

iory avatar Oct 27 '25 17:10 iory