view contrib/builddeb @ 37860:a91f31a1e281

revlog: extract function for getting node from known-to-exist rev Many of the calls to index_node() (which converts a rev to a nodeid) are done with a rev that's know to exist. If the function fails, there's something really wrong and we should just abort. This was done in only one place. This patch starts by extracting that code to a function that we can reuse in later patches. Differential Revision: https://phab.mercurial-scm.org/D3456
author Martin von Zweigbergk <martinvonz@google.com>
date Fri, 04 May 2018 21:58:43 -0700
parents f1c2552c2de7
children ea70512b1ad6
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`
DEBFLAGS=-b
while [ "$1" ]; do
    case "$1" in
    --distid )
        shift
        DISTID="$1"
        shift
        ;;
    --codename )
        shift
        CODENAME="$1"
        shift
        ;;
    --cleanup )
        shift
        BUILD=
        ;;
    --build )
        shift
        CLEANUP=
        ;;
    --source-only )
        shift
        DEBFLAGS=-S
        ;;
    * )
        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-$CODENAME-$node"
elif [ "$DEBFLAGS" = "-S" ] ; then
    # for building a ppa (--source-only) for a release (distance == 0), we need
    # to version the distroseries so that we can upload to launchpad
    debver="$debver~${CODENAME}1"
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

    sed -i.tmp "s/__VERSION__/$debver/" $changelog
    sed -i.tmp "s/__DATE__/$(date --rfc-2822)/" $changelog
    sed -i.tmp "s/__CODENAME__/$CODENAME/" $changelog
    rm $changelog.tmp

    # remove the node from the version string
    SRCFILE="mercurial_$(echo $debver | sed "s,-$node,,").orig.tar.gz"
    "$PWD/hg" archive $SRCFILE
    mv $SRCFILE ..
    debuild -us -uc -i -I $DEBFLAGS
    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 \
          ../mercurial*.dsc ../mercurial*.gz \
          -type f -newer $control -print0 2>/dev/null | \
      xargs -Inarf -0 mv narf "$OUTPUTDIR"
    echo "Built packages for $debver:"
    find "$OUTPUTDIR" -type f -newer $control -name '*.deb'
fi