Continuing the Python 3 transition

Registered by Barry Warsaw on 2013-11-04

We took a bit of a break in active Python 3 porting for Saucy, but now that we're in the 14.04 LTS cycle, we want to concentrate again on this important task. There are three general categories:

 * Remove Python 2 from the Touch images
 * Remove Python 2 from the default desktop images
 * Remove Python 2 from the default server images

Much has been done by upstreams and Debian in the meantime, so now we need to re-evaluate the work needed for Trusty.

Blueprint information

Steve Langasek
Barry Warsaw
Barry Warsaw
Series goal:
Accepted for trusty
Milestone target:
Started by
Barry Warsaw on 2014-05-29
Completed by
Barry Warsaw on 2014-05-29


Python 2 autopilot will be provided by the autopilot-legacy package, which will be eliminated asap in utopic. autopilot package will only provide Python 3.

Server pulls in Python 2 because of byobu, landscape-common, and vim. For vim we have:

Desktop has more dependencies.

Packages needing Python 3 port for 14.04 spreadsheet:

== AUTOPILOT migration to python3 ==

* Keep emulators bilingual for now (Python 2 and 3).
* Port all tests to Python 3.
* Eventually we will drop support for Python 2 emulators.
* Change Build-Depends for unported apps to use autopilot-touch-legacy

Upload debs and clicks using python3:
 - for debs, drop /usr/lib/python2.7 tests and ship them in /usr/lib/python3
 - for clicks, specify x-test:autopilot_dir key, value should be the
 path to tests module.


$ adb shell click list --manifest
with no clicks missing python3 support (x-test)

== TODO (.debs, not a blocker for removal of python2 from the image) ==

merge proposed

merge proposed


merge proposed


Smoke test blockers:
$ adb shell click list --manifest -- and search for missing x-test keys


Work Items

Work items:
[barry] talk with landscape guys about porting landscape-client: DONE
[barry] get python3 vim into debian for server: TODO
[barry] work with dustin on byobu python3 transition: DONE
[doko] package up 3.4; do test rebuild w/3.4 support: DONE
[doko] test rebuild w/3.4 as default: INPROGRESS
analyze build failures: TODO
[barry] get authorative list of all autopilot tests we care about, in a form which we can directly use on a device: DONE
[barry] phablet-test-run should know (or be able to be told) when to run autopilot-py3: DONE
[barry] set up an autopilot test env on a device, ignoring jenkins, where we can run all of these tests and find out which ones need porting to py3: INPROGRESS
[barry] identify python3 autopilot test failures: TODO
[barry] port/fix py3 autopilot test failures: TODO
[barry] port address-book-app to autopilot-py3: DONE
[barry] submit patches/mps to official branches, to verify there are no py2 regressions, while waiting for ci to enable py3 testing: TODO
flip autopilot bit in archive to be python3: TODO
[barry] work with ci team on autopilot python3 migration: DONE
[doko] contact reportlab upstream about python 3 support: DONE
[doko] package reportlab for python 3 (done in experimental): INPROGRESS
virtual hackfest/sprint for looking at 3.4 transition build failures: TODO
[barry] re-evaluate desktop requirements for moving closer to a python3 world: TODO