← Back to team overview

launchpad-dev team mailing list archive

Preparing for 12.04 LTS

 

Hi Launchpadders,

At UDS-O, we had some conversations about helping Launchpad make the migration
from 10.04 LTS to 12.04 LTS, and in particular our decision (hopefully to be
sustained at UDS-P) to drop Python 2.6 from the archive.

As you know, our data center only runs LTS releases, so the Launchpad servers
must be able to upgrade from one LTS to the next.

Also, we decided to drop Python 2.6 in Ubuntu either when Debian switches to
Python 2.7 as the default[1], or during toolchain updates early in the
P-cycle.  We want to do this for two reasons: first, because including Python
2.6 in 12.04 would mean that we'd have to support it for long after upstream's
maintenance commitments end, and because every Python package must be built
for all supported Pythons, thus increasing their size[2].

The Launchpad requirement is this: operationally, we do not want to upgrade
both the OS version and the Python version at the same time.  This means
either we provide a way to build and run Launchpad against Python 2.7 in
Lucid, or we provide a way to build and run Launchpad against Python 2.6 in
12.04.

The plan we hatched at UDS-O was to back port Python 2.7 and a few dozen
packages that Francis identified to a Lucid PPA.  Then, the Launchpad servers
could add that PPA while they were still on 10.04 and switch to Python 2.7
before they upgraded to 12.04.  Francis tells me that Launchpad already runs
fairly well on Python 2.7 + Oneiric on developer machines, with just one or
two test failures.

Great plan, except for one thing: I suck.  I've had a very difficult time
getting that PPA up and running.  The biggest problem is that there's a huge
dependency stack that ends up needing to be built as well, and determining
that stack is a manual, error-prone, and time-consuming processes.  For each
dependency, we have to decide whether to rebuild the Lucid version of the
package (if there is one) or back port the Oneiric version of the package
*and* all its dependencies too.  Sometimes the package doesn't exist in Lucid;
other times the Lucid version of the package doesn't yet support Python 2.7.

After some discussion with Francis and Steve Langasek, I think a more fruitful
approach will be to forward port Python 2.6 to a P-series PPA, and then make
this available to Launchpad, so that it could continue to run on Python 2.6
even after it upgraded to 12.04.  Then at its leisure, Launchpad would make
the switch to Python 2.7 and get rid of the PPA.

I *think* this will work out much better, because we already know that
Launchpad runs on Oneiric, so forward porting will be mostly a matter of
re-enabling Python 2.6 in the PPA, and rebuilding packages we know already
build and work with both 2.6 and 2.7 (i.e. the Oneiric versions).  At least at
first P will be pretty close to Oneiric, so in theory, that should be a much
smaller jump than from Oneiric all the way back to Lucid.

Steve brought up one good question, which is whether, after upgrading the LP
server to 12.04, you will also rebuild Launchpad.  Another question is whether
LP needs Python 2.6 to be the default Python, or just a supported version.  I
think LP can fairly easily specify which version of Python to build against,
so ideally, after the LTS upgrade, you'd just enable the PPA and do a manual
rebuild of Launchpad against the non-default Python 2.6.  Definitely let me
know of that's *not* the case.

Any and all feedback will be greatly appreciated.  I'll commit to working on
this once 12.04 opens up, we've removed Python 2.6 from the archive, and
rebuilt enough of the P-series archive to have a valid PPA overriding it.  Of
course, if we backtrack on removing 2.6 from 12.04, then the whole issue is
moot. <wink>

Cheers,
-Barry

[1] The Debian switch had to happen before Oneiric feature freeze for us to
even consider it.  It didn't happen, so we'll wait until P opens up, but it
does look like Debian isn't too far from switching to Python 2.7 as its
default.

[2] Note that once we remove Python 2.6 from the archive, it will *not* be
available in Universe.  If it were in the archive at all, we'd still have to
build all our Python packages for both versions, since we don't have separate
Python packages per major version (we have a separate Python 3 stack, but I
won't even go there... yet :).

Attachment: signature.asc
Description: PGP signature


Follow ups