A recap on recent changes in the ~bzr PPA

Max Bowsher maxb at f2s.com
Tue Apr 12 08:12:47 UTC 2011


A number of more interesting than normal things have happened in the
~bzr PPA of late, connected with the Debian unstable packagings of most
Bazaar projects making the transitions from python-central or
python-support to dh_python2, and from cdbs to debhelper 7.

This required some careful manouvering, because before now we have been
able to mostly do no-source-change re-uploads of Debian sid source
packages to the PPA, which is important as there are so many plugin
packages, and it would have been significantly awkward to lose this
possibility.

The relevant workarounds come mainly in new packages in the
~bzr/builddeps PPA:

debhelper
=========
For hardy and jaunty, a backport of debhelper 7.3.x, needed for the
support of the --buildsystem support, and for built in support for
building for multiple versions of Python.

python-backport-helper
======================
A completely custom package that supplies a fake dh_python2, which
actually redirects to whichever of dh_pysupport or dh_pycentral that a
given source package was using before the transition to dh_python2
(using a lookup table of source package names).

python-defaults
===============
The convention for packages depending on dh_python2 is to include a
Build-Depends on python (>= 2.6.6-3), which will not be satisfiable on
<=maverick. In order to persue the goal of no-source-change backporting,
I prepared modified versions of the python-defaults source (which builds
the python metapackage) for jaunty through maverick, with versions like
2.6.6-3really2.6.2-0ubuntu1pbh1, which additionally depend on the above
mentioned python-backport-helper package.

I tried to pull this trick for hardy too, but discovered to my annoyance
that many hardy python packages actually have a
Depends: python (< 2.6) - thus, there's no way that this and the
Build-Depends above can be satisfied simultaneously. Therefore for hardy
I had to reluctantly abandon the goal of no-source-change backporting,
in favour of having to run a regexp substitution on the debian/control
file when backporting to hardy:

  s/(python(|-all)) \(>= 2\.6\.6-3\)/\1, python-backport-helper/



The above combination all seems to be working pretty well - at least,
packages using it have been promoted into bzr/ppa and I've not heard any
complaints :-)



However, I have since discovered a minor flaw:

dh_pycentral expects certain fields to be present in a debian/control
file of a package using it. These are of course no longer present in
packaging targetted at dh_python2. Most perplexingly, dh_pycentral's
response to this is to emit a warning to stderr (easily missed in a long
buildlog) and DO NOTHING.

As a result, all the dh_pycentral-type packages built using this method
have ended up not actually using python-central at all - instead the
*.py files are installed multiple times, once for each python 2.x
version supported on the distroseries the package is being built for.

This doesn't actually impact the usability of the package at all - it
just means for distroseries which support multiple python versions,
there are multiple copies of all the *.py files in the .deb. As such,
I'm tempted to not bother fixing this issue.



Whew, long email :-)

Now you know the details of why there was a drought of PPA updates for a
time recently.

Max.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: OpenPGP digital signature
URL: <https://lists.ubuntu.com/archives/bazaar/attachments/20110412/9887e5a2/attachment-0001.pgp>


More information about the bazaar mailing list