Comment 22 for bug 1004592

Revision history for this message
Barry Warsaw (barry) wrote :

Hi. I've landed here because of LP: #1310794. In order to drop Python 2 from the Ubuntu touch image, we need to port all autopilot tests to Python 3. One of the current blockers is unity7, which uses the python-compizconfig package to access the Python level `compizconfig.Context` object.

This is problematic because the compiz Python bindings are provided by a pyrex module, compizconfig.pyx. Pyrex itself is essentially dead upstream, the last release happening in 2011 afaict. It also doesn't support Python 3 afaict. So porting python-compizconfig to Python 3 is going to be a major PITA. I don't even know if it's worth it, if say unity7 is deprecated in 'U'.

Let's say it *is* worth it, there are a few options. The Python bindings could be hand-coded, or we could use ctypes, but in both those cases, the entire module would have to be ported. Are there enough tests so that we know when we're done and have a high quality port?

The other option is to try to port just what's needed for unity7's autopilot tests. That may be just as big a task though, depending on how much of the compizconfig API the tests require.

As for Python 2/3 on Ubuntu, we would like Python 3 to be "the default" in the sense that all system scripts and services written in Python should be Python 3. However, we'll never change /usr/bin/python like Arch did. As inherited from Debian, /usr/bin/python will *always* be Python 2 (unless and until PEP 394 changes that recommendation, but don't hold your breath). /usr/bin/python3 is what you need to use, but as is pointed out, most distros will heed PEP 394 and provide a /usr/bin/python2 symlink too. Ubuntu and Debian do.

Any guidance you can provide on helping us get enough of compizconfig exposed to Python 3 would be very helpful.