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

Status:
Complete
Approver:
Steve Langasek
Priority:
High
Drafter:
Barry Warsaw
Direction:
Approved
Assignee:
Barry Warsaw
Definition:
Approved
Series goal:
Accepted for trusty
Implementation:
Implemented
Milestone target:
None
Started by
Barry Warsaw on 2014-05-29
Completed by
Barry Warsaw on 2014-05-29

Whiteboard

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: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=729924

Desktop has more dependencies.

Packages needing Python 3 port for 14.04 spreadsheet:
https://docs.google.com/spreadsheet/ccc?key=0AiT4gOXSkmapdGdFejk0MjFydUlNMDVoMXNRdGdkbFE#gid=0

== 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.

== BLOCKERS ==

$ 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) ==

dialer_app
https://code.launchpad.net/~barry/dialer-app/py3autopilot/+merge/220658
merge proposed

mediaplayer_app
https://code.launchpad.net/~barry/mediaplayer-app/py3autopilot/+merge/222548
merge proposed

online_accounts_ui

messaging_app
https://code.launchpad.net/~barry/messaging-app/py3autopilot/+merge/222556
merge proposed

ubuntu_system_settings

Smoke test blockers: http://ci.ubuntu.com/smokeng/utopic/touch/flo/7:20140501.1:20140501/7832/
Review: https://wiki.ubuntu.com/Touch/CoreApps
$ 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