view contrib/builddeb @ 25881:9de443515f1d stable

help: scripting help topic There are a lot of non-human consumers of Mercurial. And the challenges and considerations for machines consuming Mercurial is significantly different from what humans face. I think there are enough special considerations around how machines consume Mercurial that a dedicated help topic is warranted. I concede the audience for this topic is probably small compared to the general audience. However, lots of normal Mercurial users do things like create one-off shell scripts for common workflows that I think this is useful enough to be in the install (as opposed to, say, a wiki page - which most users will likely never find). This text is by no means perfect. But you have to start somewhere. I think I did cover the important parts, though.
author Gregory Szorc <gregory.szorc@gmail.com>
date Sat, 18 Jul 2015 17:10:28 -0700
parents 56c64c91b429
children e5f2a2a095cb
line wrap: on
line source

#!/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
DEBBUILDDIR="$PWD/debbuild"
while [ "$1" ]; do
    case "$1" in
    --prepare )
        shift
        BUILD=
        ;;
    --debbuilddir )
        shift
        DEBBUILDDIR="$1"
        shift
        ;;
    * )
        echo "Invalid parameter $1!" 1>&2
        exit 1
        ;;
    esac
done

set -u

rm -rf $DEBBUILDDIR
mkdir -p $DEBBUILDDIR

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

gethgversion

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

control=$DEBBUILDDIR/DEBIAN/control

# 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/" < $control > $control.tmp
mv $control.tmp $control

if [ "$BUILD" ]; then
    dpkg-deb --build $DEBBUILDDIR
    mv $DEBBUILDDIR.deb $DEBBUILDDIR/mercurial-$version-$release.deb
    if [ $? = 0 ]; then
        echo
        echo "Built packages for $version-$release:"
        find $DEBBUILDDIR/ -type f -newer $control
    fi
else
    echo "Prepared sources for $version-$release $control are in $DEBBUILDDIR - use like:"
    echo "dpkg-deb --build $DEBBUILDDIR"
fi