[Kolab-devel] Debian packages, upstream source patching and quilt

Paul Boddie paul at boddie.org.uk
Thu Nov 14 23:27:10 CET 2013


Hello,

I finally managed to get pbuilder to build the Development packages for Debian 
Wheezy using various tricks with hooks and a build dependencies directory that 
I will write up in a blog post that should then appear on Planet Kolab. (This 
can save a lot of time: pbuilder isn't quick itself, but OBS can take up to 9 
minutes on my system to just set up the build environment for a single 
package.) The packages also appeared to install cleanly, and I didn't need to 
use aptitude to navigate a multitude of packaging choices - apt-get was good 
enough - so things certainly seem to be going my way.

I've previously referred to problems with cmake, but these did not occur this 
time round, although since the build environment was Wheezy and not Sid 
there's a chance that something still needs fixing, but I suppose we'll deal 
with that in the future. I didn't bother with the 389 packages just out of 
curiosity as to whether the stock Debian packages would be sufficient, and it 
looks as if they are, at least to install Kolab.

When doing the building I found two packages that seemed to need additional 
packages installed before pbuilder would even get started:

python-icalendar needed python-setuptools, but since I dislike setuptools 
intensely and won't risk it breaking my system (and since I wasn't building 
inside another chroot), I made a patch to replace its use with distutils 
because what setuptools attempts to do when employed most ambitiously isn't 
really attempted here (and generally isn't relevant in a package building 
situation anyway). In other situations I have tended to patch setup.py files 
to remove setuptools dependencies where the upstream developers could have 
easily used good old distutils, and I don't see any significant problems doing 
so here.

php-http-request2 needs pkg-php-tools, and I just accepted that because I 
don't run any PHP stuff myself. I imagine that the Debian build system is 
clever enough to have this as some kind of "pre-build" dependency.

(I noticed that in OBS, the build dependencies are maintained in two places - 
the control file and the .dsc file - so removing python-setuptools as a build 
dependency needed to be done in two places, whereas the .dsc would be updated 
to reflect the control file in a pbuilder-based workflow.)

Doing patches on upstream sources led me to consider how they are delivered. I 
noticed that there were quite a few packages where I got complaints about how 
the patches should be managed using quilt. I don't know whether this is fully 
supported in OBS, but quilt patches typically reside in debian/patches and so 
could be bundled in the debian.tar.gz file that sits in each OBS package 
directory. When building python-icalendar with a modified debian.tar.gz 
containing patches, OBS seemed to apply such patches, but amongst the 
resulting output files there doesn't seem to be a special "debian" patch 
archive like this...

python-icalendar_3.4-1.debian.tar.gz

...but only a file like this:

python-icalendar_3.4-1.diff.gz

I'm sure a lot of the above doesn't really matter, but I know that some people 
prefer recent best practices to be observed, so I thought I should investigate 
whether they can indeed be followed. If it doesn't cause inconvenience, I can 
add quilt patch series to the following packages to make Debian happy:

irony, kolab-freebusy, libkolab, libkolabxml, mozilla-ldap-sdk, roundcubemail, 
roundcubemail-plugin-threadingasdefault

Paul


More information about the devel mailing list