|Title:||ROS distribution files|
|Author:||Dirk Thomas <dthomas at osrfoundation.org>|
This REP updates the specification of the ROS distribution files facilitated in the building, packaging, testing and documenting process.
The intention is to annotate a ROS distribution with more information, such as whether the distribution should use ROS 1 or ROS 2 semantics, to avoid the need to externally define and update these metadata.
This REP is an extension to the file format defined in REP 143_. It currently does not repeat the content of REP 143 but only states the differences.
For the following use cases additional metadata is currently necessary:
In all cases the missing metadata is currently being hard coded in the source code and needs to be updated with every new ROS release. Therefore this REP aims to add the necessary metadata about a ROS distribution into the rosdistro instead.
As of version 4 unknown keys should be ignored (instead of resulting in an error). This will allow future additions in a backward compatible way without the need to bump the version of the file.
The draft implementation of rosdistro is able to parse multiple index format versions: 2, 3 as well as 4.
If the version of the existing index.yaml file would be bumped that would require every user to update to the latest version of the Python package rosdistro. While generating some friction it is especially a problem on some systems (e.g. Debian) which might not provide a newer version in stable distributions.
Therefore the existing index file isn't being changed but a sibling file named index-v4.yaml is being added. The file has the same content except that is uses version 4 as specified in this document and includes the additional metadata fields.
To make use of the new index file the new version of the Python package will update the default URL to point to the v4 file.
rosdistro version 0.7.5 or newer is necessary to access the python_version key. Older versions of rosdistro will simply ignore the key in the yaml file and not expose it through the API.
This provides a smooth transition for all users: users using the old version of the Python package can continue to use it as is, users updating to the newer version will benefit from the additional metadata. Python code using the rosdistro API can easily check if the metadata is present and if yes use it. If desired other Python packages can explicily depend on the newer version to ensure the v4 index is being used.
|||REP 143: http://www.ros.org/reps/rep-0143.html|
|||REP 141: http://www.ros.org/reps/rep-0141.html|
|||REP 137: http://www.ros.org/reps/rep-0137.html|
|||Patch to python-rosdistro: https://github.com/ros-infrastructure/rosdistro/pull/124|
|||bloom asserting the index file version: https://github.com/ros-infrastructure/bloom/blob/d8be9d1d3469f00f936ad6e4869b847c5a6f8962/bloom/commands/release.py#L221-L223|
|||bloom PR to support v4 https://github.com/ros-infrastructure/bloom/pull/493|
This document has been placed in the public domain.