Python36Transition

Differences between revisions 4 and 7 (spanning 3 versions)
Revision 4 as of 2015-07-15 15:25:14
Size: 2490
Editor: mail
Comment:
Revision 7 as of 2017-01-25 23:21:16
Size: 1507
Editor: localhost
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
= Python 3.5 Transition = ## page was copied from Python/Python35Transition
= Python 3.6 Transition =
Line 3: Line 4:
For Ubuntu 16.04 LTS and Debian Stretch, we want to transition to Python 3.5 as the default (and possibly only) Python 3 version. For Ubuntu 18.04 LTS and Debian Buster, we want to transition to Python 3.6 as the default (and probably only) Python 3 version.
Line 5: Line 6:
* Here is the [[https://lists.ubuntu.com/archives/ubuntu-devel/2015-June/038799.html|announcement of the transition plan]].
* Here is a [[https://wiki.python.org/moin/PortingToPy3k/34to35|list of compatibility issues]] we've seen in the wild.
 * Here is the [[https://lists.ubuntu.com/archives/ubuntu-devel/2017-January/039648.html|start of the test rebuilds in Ubuntu]].
 * Here is the current [[https://launchpad.net/~pythoneers/+archive/ubuntu/python-rebuilds/+packages|archive test rebuild PPA]].
 * Here are the [[https://code.launchpad.net/~barry/+git/pydeps|scripts used to keep the PPA updated]].
Line 12: Line 14:
Here are some cycles we've seen, along with how we broke them. The binary package is listed first, with the source package (where different) in parentheses.

=== python-sphinx (sphinx) -> python3-gi (pygobject) -> python3-cairo (py3cairo) -> python-sphinx ===

sphinx only needs python3-gi for the test suite, so the cycle was broken by disabling this particular test in the transitional upload to the rebuild PPA for sphinx. Dmitry Shachnev says "Search for 'jstest' in debian/rules and comment out that line".

=== python3-gi (pygobject) -> gnome-pkg-tools -> python3-gi ===

gnome-pkg-tools uses Python 3 only in its `pkg-gnome-compat-desktop-file` file, which isn't critical for pygobject. Current rebuild solution is to remove the `python3` and `python3-gi` Depends in pkg-gnome-tool's `debian/control.in` file, upload that, then rebuild pygobject, then re-upload a fixes pkg-gnome-tool. Reported as Debian bug [[https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=790782|#790782]]
Another common problem is that flake8 codes have changed, so some packages which check for no-flake8-violations will break during their build.
Line 24: Line 18:
 * [[https://bugs.launchpad.net/ubuntu/+source/python3-defaults/+bug/1474882|LP: #1474882]] - Make Python 3.5 a supported version. Requires a mass rebuild.
 * [[https://bugs.launchpad.net/ubuntu/+source/python3-defaults/+bug/1474886|LP: #1474886]] - Make Python 3.5 the default version. No mass rebuild required.
 * [[https://bugs.launchpad.net/ubuntu/+source/python3-defaults/+bug/1474888|LP: #1474888]] - Drop Python 3.4 support. Requires a mass rebuild (TBD for Wily or X-series)
 * Make Python 3.6 a supported version. Requires a mass rebuild.
 * Make Python 3.6 the default version. No mass rebuild required.
 * Drop Python 3.5 support. Requires a mass rebuild.

Python 3.6 Transition

For Ubuntu 18.04 LTS and Debian Buster, we want to transition to Python 3.6 as the default (and probably only) Python 3 version.

Other issues

There are some other interesting issues in performing this transition. Many packages haven't been built for a while, and just get copied to the new distro version's archive, so they are only rebuilt during transitional events such as this one. One of the most pernicious problems is circular dependencies. Because all packages in the cycle need to be rebuilt, we have to break the cycle with a temporary upload, and then re-enable the cycle causing problem. Ideally of course, there would be no cycles, but that's not what we see in practice.

Another common problem is that flake8 codes have changed, so some packages which check for no-flake8-violations will break during their build.

Next steps

  • Make Python 3.6 a supported version. Requires a mass rebuild.
  • Make Python 3.6 the default version. No mass rebuild required.
  • Drop Python 3.5 support. Requires a mass rebuild.

Python/Python36Transition (last edited 2017-01-25 23:21:16 by localhost)