Python35Transition

Revision 4 as of 2015-07-15 15:25:14

Clear message

Python 3.5 Transition

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.

* Here is the announcement of the transition plan. * Here is a list of compatibility issues we've seen in the wild.

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.

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 #790782

Next steps

  • LP: #1474882 - Make Python 3.5 a supported version. Requires a mass rebuild.

  • LP: #1474886 - Make Python 3.5 the default version. No mass rebuild required.

  • LP: #1474888 - Drop Python 3.4 support. Requires a mass rebuild (TBD for Wily or X-series)