view contrib/builddeb @ 27294:5aa2afb4f81a

hgweb: move entry-preparing code from webcommands to webutils.commonentry() The new function is used to fill basic information about a ctx, such as revision number and hash, author, commit message, etc. Before, every webcommand used to get this basic information on its own using some boilerplate code, and some things in some places just weren't available.
author Anton Shestakov <av6@dwimlabs.net>
date Fri, 13 Nov 2015 14:35:36 +0800
parents ef9301ce6046
children 4f1dac94b53f
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
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