contrib/builddeb
author Pierre-Yves David <pierre-yves.david@fb.com>
Tue, 09 Feb 2016 23:30:41 +0000
changeset 28141 13bb8de97f87
parent 27212 ef9301ce6046
child 28988 4f1dac94b53f
permissions -rwxr-xr-x
destutil: add more precise error classes for destmerge Having exception classes more precise than 'Abort' will allow us to properly catch "nothing to rebase" situations when we will be using 'destmerge' in rebase.

#!/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
DISTID=`(lsb_release -is 2> /dev/null | tr '[:upper:]' '[:lower:]') || echo debian`
CODENAME=`lsb_release -cs 2> /dev/null || echo unknown`
while [ "$1" ]; do
    case "$1" in
    --distid )
        shift
        DISTID="$1"
        shift
        ;;
    --codename )
        shift
        CODENAME="$1"
        shift
        ;;
    --cleanup )
        shift
        BUILD=
        ;;
    --build )
        shift
        CLEANUP=
        ;;
    * )
        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
debver="$version"
if [ -n "$type" ] ; then
    debver="$debver~$type"
fi
if [ -n "$distance" ] ; then
    debver="$debver+$distance-$node"
fi

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__/$debver/" < $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/$DISTID-$CODENAME}
    mkdir -p "$OUTPUTDIR"
    find ../mercurial*.deb ../mercurial_*.build ../mercurial_*.changes \
          -type f -newer $control -print0 | \
      xargs -Inarf -0 mv narf "$OUTPUTDIR"
    echo "Built packages for $debver:"
    find "$OUTPUTDIR" -type f -newer $control -name '*.deb'
fi