Dealing with autotools

Enrico Zini enrico at enricozini.org
Tue Mar 10 14:32:50 UTC 2009


Hello,

I am trying to find a good workflow to maintain a package in git.  The
package requires several patches to its configure.ac and Makefile.am
files, and upstream is generally too overworked to be able to review and
integreate patches.

I also want to stick to existing tools like git-import-dsc,
git-import-orig, git-buildpackage and pristine-tar as much as possible.

My main problem is that after importing upstream's sources, I end up
with the various autotools fluff (./configure, Makefile.in and so on)
committed in.  When I change autotools files in topic branches, and test
if it works, then the fluff gets updated as well.  If I commit
everything, then at the point of merging the various topic branches
together, or at the point of importing a new upstream version, I risk
ending up with conflicts all over the place.

The way I figured so far is this:

 1. git-import-dsc --pristine-tar
 2. branch off upstream and create a topic branch
 3. do my changes and test them
 4. commit only the files that I have changed, and not the files that
    autotools has regenerated.  This could be a bit cumbersome, but it
    can be automated with something like:
      git checkout aclocal.m4 configure `git ls-files -c |grep .in\$`
 5. I do not merge topic branches into the debian branch, but I collect
    them as quilt patches

In this way, I can easily merge a new upstream version into the topic
branches, and "git diff upstream tbranch1" will always give me a clean
patch.  I get to test all topic branches separately, and they can even
be merged cleanly into a temporary branch to test if they work together.
The point of the topic branches becomes to maintain the patch as
upstream is updated.

This sounds an awful lot like topgit, but I have not explored it enough
to know whether I'm just redoing what it does.

I am now tempted to maintain a FIXME.branchname file per branch, where I
keep notes of why the patch is there, what's missing for upstream to
integrate it, and so on.

When packaging, I'm undecided on these two options:
 1. Build-depend on automake and let it rebuilt itself at 'make' time
 2. git checkout master -b temp
    quilt push -a
    autoreconf -if
    git show > debian/patches/autotools.diff
    # Ensure that autotools.diff is the last patch in the series
    git checkout master
    git branch -D temp
Option 2 sounds quite nice, but wow, 1476264 bytes of patch.


Ciao,

Enrico

-- 
GPG key: 1024D/797EBFAB 2000-12-05 Enrico Zini <enrico at debian.org>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 835 bytes
Desc: Digital signature
Url : http://lists.alioth.debian.org/pipermail/vcs-pkg-discuss/attachments/20090310/93c84474/attachment.pgp 


More information about the vcs-pkg-discuss mailing list