Differences between revisions 4 and 5
Revision 4 as of 2015-08-20 12:16:10
Size: 1887
Editor: ?zeha
Comment:
Revision 5 as of 2016-01-30 18:02:59
Size: 1914
Comment:
Deletions are marked like this. Additions are marked like this.
Line 7: Line 7:
== phase 1: enable both interpreters == == phase 1: enable both interpreters in experimental ==
Line 14: Line 14:
 * 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
 * edit `ruby_debian_dev.rb` and add a new `has_support_for` block for the new interpreter.
Line 19: Line 18:
== phase 2: rebuild/fix == == phase 2: enable both interpreters in unstable, rebuild/fix ==

upload the new ruby-defaults to unstable.

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

  • 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