Differences between revisions 5 and 6
Revision 5 as of 2016-01-30 18:02:59
Size: 1914
Comment:
Revision 6 as of 2016-01-30 18:03:35
Size: 1822
Comment:
Deletions are marked like this. Additions are marked like this.
Line 33: Line 33:
 * 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).
 * run `./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).

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 in experimental

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 block for the new interpreter.

Do test rebuilds of all reverse-dependencies before and open a transition bug against release.debian.org!

phase 2: enable both interpreters in unstable, rebuild/fix

upload the new ruby-defaults to unstable.

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

  • run ./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