Ruby interpreter transitions
Ruby interpreter transitions are done in phases so that (hopefully) unstable is never broken:
phase 0: the new ruby reaches unstable
phase 1: enable both interpreters
ruby-defaults gets uploaded telling gem2deb to build for both the old and the new ruby versions.
changes needed in ruby-defaults:
edit ruby_debian_dev.rb and add a new has_support_for for the new interpreter.
- make ruby-all-dev depend on rubyX.Y and rubyX.Y-dev for both interpreters
Do test rebuilds of all reverse-dependencies before and open a transition bug against release.debian.org!
phase 2: rebuild/fix
packages get rebuilt/fixed with support for both the old ruby and the new ruby
ideally, what needs to fixed has to be fixed in a way that it won't need to be fixed again in the next transition.
phase 3: new interpreter becomes the default, old one is disabled
changes needed in ruby-defaults:
edit ruby_debian_dev.rb and remove the has_support_for block for the old interpreter
- remove from ruby-all-dev dependencies on rubyX.Y/rubyX.Y-dev from old interpreter
then call ./debian/newruby X.Y and it will replace the old version with the new one in several places in the package (where X.Y is the version of the new interpreter).
stage this in experimental first, ask ask people to test (at least in debian-ruby@lists.debian.org).
in special, test rebuilding all the stuff that links against the current default ruby version and make sure they can be binNMUed when the default really changes.
phase 4: rebuild/fix after default is changed in unstable
packages get rebuilt/fixed to drop support for the old interpreter and/or build against the new default.
phase 5: old interpreter gets removed
- remove from testing first
- remove from unstable later