Armed with a text editor

mu's views on program and recipe! design

Using quilt for inplace tooltips Posted 2008.02.09 16:39 PST (#)

As I talked about earlier, I have a patch for showing inplace tooltips on a gtk+ treeview. Furthermore as it's nearing time to update it, I wanted to record the steps necessary to do so and to apply it.

Most of what I know about quilt I learned from this quilt howto hosted on alioth. So I'm by no means an expert; rather I know just enough to be dangerous. So here are the steps a Debian user can use to update and refresh my inplace tooltips patch.

First: set up quilt. Here's my modified /etc/quilt/quiltrc but feel free to put the equivalent in your own ~/.quiltrc instead. The first line is critical; the others just simplify the patches.

QUILT_PATCHES=debian/patches
QUILT_DIFF_ARGS="--no-timestamps --no-index"
QUILT_REFRESH_ARGS="--no-timestamps --no-index"

Second: get the build dependencies and source.

% sudo apt-get build-dep libgtk2.0-0
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 5 not upgraded.

% apt-get source libgtk2.0-0
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Need to get 23.6MB of source archives.
Get:1 http://http.us.debian.org unstable/main gtk+2.0 2.12.7-1 (dsc) [1565B]
Get:2 http://http.us.debian.org unstable/main gtk+2.0 2.12.7-1 (tar) [23.5MB]
Get:3 http://http.us.debian.org unstable/main gtk+2.0 2.12.7-1 (diff) [89.4kB] 
Fetched 23.6MB in 54s (430kB/s)                                                
dpkg-source: extracting gtk+2.0 in gtk+2.0-2.12.7
dpkg-source: unpacking gtk+2.0_2.12.7.orig.tar.gz
dpkg-source: applying ./gtk+2.0_2.12.7-1.diff.gz

Third: apply the patch.

% cd gtk+2.0-2.12.7
% quilt import ../gtk+2.0-2.12.5/debian/patches/mu-inplace-tips.patch
Importing patch ../gtk+2.0-2.12.5/debian/patches/mu-inplace-tips.patch (stored as mu-inplace-tips.patch)

Fourth: update debian/changelog. You'll want to fix the conflict, revert the changes, or update the number.

% quilt push mu-inplace-tips.patch
% quilt edit debian/changelog
[...]
% quilt refresh
Refreshed patch mu-inplace-tips.patch

Fifth: build the packages. This takes a while.

% dpkg-buildpackage -us -uc
[...]

If anything breaks you'll probably have to run quilt pop mu-inplace-tips.patch, edit the patch to resolve the build failure, run quilt refresh, and try the build again.

Sixth: install the package, and optionally put it on hold. Note that you need only the libgtk2.0-0 package if you haven't bumped up the version in the changelog; you don't really need the others if you have, but they have tightly coupled version dependencies that complain if you don't use them.

% cd ..
% sudo dpkg -i libgtk2.0-0_2.12.7-1+0mu_i386.deb libgtk2.0-dev_2.12.7-1+0mu_i386.deb gtk2-engines-pixbuf_2.12.7-1+0mu_i386.deb
[...]
% echo libgtk2.0-0_2.12.7-1+0mu_i386.deb hold | sudo dpkg --set-selections
% echo libgtk2.0-dev_2.12.7-1+0mu_i386.deb hold | sudo dpkg --set-selections
% echo gtk2-engines-pixbuf_2.12.7-1+0mu_i386.deb hold | sudo dpkg --set-selections

Finally restart any gtk+ programs you want to use your freshly updated gtk+ library.

Categories: debian freesoftware gtk+ quilt

Comments:

Michael Urman @ 2008.02.17 10:39:

After actually trying the patch generated above including the quilt edit debian/changelog, I'm going to recommend against that step. It won't apply to the next package. Edit the changelog without quilt if you like, but not with.