|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.
This REP is a revised version of REP 141 . It currently does not repeat the content of REP 141 but only states the differences.
distribution: list of reference to the distribution files A single distribution file guarantees that there are no duplicate repositories and is therefore preferred. But when running a custom buildfarm which only adds custom repositories it is much smoother to maintain them in a separate file to avoid any kind of conflicts.
The files are read in the order they are listed and entries in later distribution files are overwriting entries from previous distribution files. This can be used to override specific repositories with either a forked variant or a specific version number. bloom will create pull requests against the last distribution file since even when the repository is present in any of the other distribution files the "overlaying" version should be stored in the last one.
release_builds / source_builds / doc_builds: are being removed since they only contain information relevant to the buildfarm
The draft implementation of rosdistro is able to parse both index format version 2 as well as 3.
To leverage the new ability to list multiple distribution files the following additional API will be introduced:
The existing API ('rosdistro.get_distribution_file()') will continue to provide the correct data by merging the information from all distribution files.
All function related to the removed build files will simply return empty lists.
As soon as the new version of 'rosdistro' is released the 'ros/rosdistro' repository  is being updated to the new format (for Hydro and higher). Any client accessing trying to access the data with an old 'rosdistro' version will get an error message like this:
Unable to handle 'index' format version '3', please update rosdistro...
The only tool beside the "old" buildfarm accessing the raw rosdistro data which needs to be updated is 'rosdep' .
All other tools using the API of rosdistro (even if deprecated) will continue to work.
In order to allow releasing packages into rosdistro repositories with multiple distribution files 'bloom' will need to be updated .
|||Python module to for buildfarm configuration: https://github.com/ros-infrastructure/ros_buildfarm/tree/master/ros_buildfarm/config|
|||Example buildfarm configuration: https://github.com/ros-infrastructure/ros_buildfarm_config|
|||(1, 2, 3) REP 141: http://www.ros.org/reps/rep-0141.html|
|||(1, 2) REP 137: http://www.ros.org/reps/rep-0137.html|
|||Patch to python-rosdistro: https://github.com/ros-infrastructure/rosdistro/pull/45|
|||ROS distro: https://github.com/ros/rosdistro/|
|||Patch for rosdep: https://github.com/ros-infrastructure/rosdep/pull/365|
|||Patch for bloom: https://github.com/ros-infrastructure/bloom/pull/330|
This document has been placed in the public domain.