Differences between revisions 3 and 4
Revision 3 as of 2015-07-22 11:25:11
Size: 1778
Comment:
Revision 4 as of 2015-08-20 12:16:10
Size: 1887
Editor: ?zeha
Comment:
Deletions are marked like this. Additions are marked like this.
Line 16: Line 16:

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

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