contrib/builddeb
author Gregory Szorc <gregory.szorc@gmail.com>
Sat, 22 Aug 2015 18:15:42 -0700
changeset 26218 7d45ec47c0af
parent 26148 7f49efcaa9b4
child 26833 6474b64045fb
permissions -rwxr-xr-x
hgweb: create function to perform actions on new repo We perform some common tasks when a new repo instance is obtained. In preparation for changing how we obtain repo instances, factor this functionality into a standalone function.

#!/bin/sh -e
#
# Build a Mercurial debian package from the current repo
#
# Tested on Jessie (stable as of original script authoring.)

. $(dirname $0)/packagelib.sh

BUILD=1
CLEANUP=1
DEBVERSION=jessie
while [ "$1" ]; do
    case "$1" in
    --release )
        shift
        DEBVERSION="$1"
        shift
        ;;
    --cleanup )
        shift
        BUILD=
        ;;
    --build )
        shift
        CLEANUP=
        ;;
    --debbuilddir )
        shift
        DEBBUILDDIR="$1"
        shift
        ;;
    * )
        echo "Invalid parameter $1!" 1>&2
        exit 1
        ;;
    esac
done

trap "if [ '$CLEANUP' ] ; then rm -r '$PWD/debian' ; fi" EXIT

set -u

if [ ! -d .hg ]; then
    echo 'You are not inside a Mercurial repository!' 1>&2
    exit 1
fi

gethgversion

control=debian/control
changelog=debian/changelog

if [ "$BUILD" ]; then
    if [ -d debian ] ; then
        echo "Error! debian control directory already exists!"
        exit 1
    fi

    cp -r $PWD/contrib/debian debian
    chmod -R 0755 debian

    # This looks like sed -i, but sed -i behaves just differently enough
    # between BSD and GNU sed that I gave up and did the dumb thing.
    sed "s/__VERSION__/$version/" < $changelog > $changelog.tmp
    date=$(date --rfc-2822)
    sed "s/__DATE__/$date/" < $changelog.tmp > $changelog
    rm $changelog.tmp

    debuild -us -uc -b
    if [ $? != 0 ]; then
        echo 'debuild failed!'
        exit 1
    fi

fi
if [ "$CLEANUP" ] ; then
    echo
    OUTPUTDIR=${OUTPUTDIR:=packages/debian-$DEBVERSION}
    find ../mercurial*.deb ../mercurial_*.build ../mercurial_*.changes \
          -type f -newer $control -print0 | \
      xargs -Inarf -0 mv narf "$OUTPUTDIR"
    echo "Built packages for $version-$release:"
    find "$OUTPUTDIR" -type f -newer $control -name '*.deb'
fi