-
Notifications
You must be signed in to change notification settings - Fork 10
Description
Supplemental to #1403
Based on discussion between myself and @scpeters.
Overview
We propose creating {package}-rotary-release repos for each package in a Gazebo collection for the purpose of releasing packages from main branches of each source repo. These release repos will contain debian metadata for unversioned Gazebo packages (e.g. libgz-math-dev) and aliases to these packages with the rotary label (e.g. libgz-rotary-math-dev). packages.apt files in each source repo will use the rotary aliases.
The benefits of this are:
- The
rotaryversion follows a similar pattern as our other versions that use numbers. Our tooling is likely to handle this with little or no modification - When it is time to branch-off and create versioned release repos, it would be easier to fork the
*-rotary-releaserepos and make changes.
Implementation Steps
Initial implementation
- Remove versions from control files. The packages as well as the Gazebo dependencies will be unversioned.
- Add rotary aliases pointing to the unversioned packages
- Remove versions from
rules. This may not be trivial as some commands might need versioned directories for destination paths (e.g. https://github.com/gazebo-release/gz-sim11-release/blob/2277953bdfad71f10c39a1dc18a2833b09e0af2e/ubuntu/debian/rules#L35) - Make nightly releases from
rotary. We'll need to modify ignition_collection.dsl. Simply changing gz_nightly = 'rotary' won't work because the debbuilder names are computed as{package}{major version}-debbuilder. - Bump main source branches to new major versions
- Update package.apt files use
rotarypackages
At branch-off
- For each package, fork the
{package}-rotary-releaserepo and modify the control files to include the major version number. See Strategy for major version bumps in new collections #1403 (comment) Phase 3 about deciding which major version to use. We'll need to have a script that automates this process. - As we create stable branches in source packages, use the same
rotary-> versioned package mapping to update packages inpackages.apt. - - Update gz-collection.yaml, gazebodistro and homebrew so that the new (about to be released) collection points to the stable branches and each of the corresponding packages depend on versioned packages (not aliases).
Next release cycle
- No change to
{package}-rotary-releaserepos - Bump major version numbers in
main, but no change inpackages.apt - Follow the same steps from branching off as above.
Alternatives Discussed
Do what we normally do, which is create new release repos with bumped version numbers. Create a gz-rotary-release release repo which will contain aliases to all the versioned packages from main branches (e.g. libgz-rotary-math-dev). These will then be used in packages.apt files in source repos. Downsides of this approach:
gz-rotary-releasewill need to be updated every year because it points to versioned packages.