So I have been getting used to madduck's workflow for topgit and debian packaging, and one thing that bugged me a bit was all the steps required to to build. I tend to build quite a lot when debugging, so I wrote up a quick and dirty script to
- export a copy of the master branch somewhere
- export the patches from topgit
- invoke debuild
I don't claim this is anywhere ready production quality, but maybe it helps someone.
Assumptions (that I remember)
- you use the workflow above
- you use pristine tar for your original tarballs
- you invoke the script (I call it tg-debuild) from somewhere in your work tree
Here is the actual script:
#!/bin/sh set -x if [ x$1 = x-k ]; then keep=1 else keep=0 fi WORKROOT=/tmp WORKDIR=`mktemp -d $WORKROOT/tg-debuild-XXXX` # yes, this could be nicer SOURCEPKG=`dpkg-parsechangelog | grep ^Source: | sed 's/^Source:\s*//'` UPSTREAM=`dpkg-parsechangelog | grep ^Version: | sed -e 's/^Version:\s*//' -e s/-[^-]*//` ORIG=$WORKDIR/${SOURCEPKG}_${UPSTREAM}.orig.tar.gz pristine-tar checkout $ORIG WORKTREE=$WORKDIR/$SOURCEPKG-$UPSTREAM CDUP=`git rev-parse --show-cdup` GDPATH=$PWD/$CDUP/.git DEST=$PWD/$CDUP/../build-area git archive --prefix=$WORKTREE/ --format=tar master | tar xfP - GIT_DIR=$GDPATH make -C $WORKTREE -f debian/rules tg-export cd $WORKTREE && GIT_DIR=$GDPATH debuild if [ $?==0 -a -d $DEST ]; then cp $WORKDIR/*.deb $WORKDIR/*.dsc $WORKDIR/*.diff.gz $WORKDIR/*.changes $DEST fi if [ $keep = 0 ]; then rm -fr $WORKDIR fi