Analysis of Python 2.7 support in Natty

Barry Warsaw barry at ubuntu.com
Thu Feb 3 20:56:00 UTC 2011


I've tried to send this to the list several times, but it hasn't gone through.
I received no responses, but now at least I'm glad to know that it wasn't
y'all ignoring me, just lists.ubuntu.com. ;) Let's see if I've cleared up my
mail issues...

Rather than resend, I'll just summarize the current state as I know it.

Over the last couple of weeks, I did some analysis on the archive, looking for
packages that depend on Python, but didn't include Python 2.7 support.  I wrote
some scripts at lp:~barry/+junk/pydeps and specifically the deps2.py script.

While the script isn't perfect, I think it's good enough to determine where we
are with main.  The script produces a few false positives, but from spot
checking the output, I found no false negatives.  The summary is that right
now, I know of no packages in Natty main that explicitly depend on a Python <
2.7.  There are a few that depend on > Python 2.6; that's not ideal, but I
think it's fine, and possibly moot (see below).

(The first time I tried to send this message on 2011-01-24, there were a few
packages that were broken but AFAIK, all have been fixed now.)

I have not done a similar analysis on universe.

This is just the first level of Python 2.7 support analysis.  The next test I
ran was to actually install in a Natty VM all main packages that depend on
Python, looking for failures-to-install.  A recent example was bug 685476 on
mgltools-viewerframework.  This included an assignment to __debug__ as an
attribute of an object, which is not allowed in Python 2.7 (it wasn't strictly
legal in 2.6 either, but the interpreter did not prevent it until 2.7).  These
are the kinds of bugs you can only find when you install the package because
they only show up when the modules are byte-compiled.

Since my first attempt at emailing this summary, I've fixed a number of
packages that had these kinds of install-time failure.  Examples included
kubuntu-full, python-avogadro, python-qscintilla2, and python-vigra (since
demoted by Colin).  As of today, all have been fixed and are now installable.

It's still possible that packages have incompatibilities with Python 2.7, but
you can only find them when you use the code, and that's not something I can
reasonably test.  So, if you encounter bugs related to Python 2.7 support,
please file them as usual against the offending package, and add the official
'python27' tag to the bug.

So now that Natty main support for Python 2.7 looks pretty good, the question
is: do we drop Python 2.6 from Natty?

Pro-removal:

 * It reduces the CD space requirements by including only one shared library
   per extension module.  I forget exactly how much can be reclaimed, though
   IIRC doko posted some numbers on that (10MB or thereabouts?).
 * Makes our life simpler by only having to support one Python 2 version from
   here on out, and that being the one supported by upstream Python long term.

Con-removal:

 * No overlap in Python 2 versions between LTS, which complicates upgrade
   plans for server applications such as Launchpad.

If necessary, we can solve the LTS upgrade problem similar to the way we
solved it for Lucid; we create an official PPA with Python 2.6 and port over
the stack required by services such as Launchpad.  3rd parties still requiring
Python 2.6, could create their own PPA, dependent on ours, and add whatever
packages they need to the former.

Of course, we could also keep Python 2.6 and Python 2.7 until after 12.04.

There seems to be lots of folks both for and against removal of Python 2.6.
It's worth discussion here, but we need to make a final decision for Natty by
feature freeze later this month.

Cheers,
-Barry
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: not available
URL: <https://lists.ubuntu.com/archives/ubuntu-devel/attachments/20110203/3ee137cf/attachment.pgp>


More information about the ubuntu-devel mailing list