diff --git a/contrib/builddeb b/contrib/builddeb --- a/contrib/builddeb +++ b/contrib/builddeb @@ -46,6 +46,13 @@ if [ ! -d .hg ]; then 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 @@ -61,7 +68,7 @@ if [ "$BUILD" ]; then # 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 + sed "s/__VERSION__/$debver/" < $changelog > $changelog.tmp date=$(date --rfc-2822) sed "s/__DATE__/$date/" < $changelog.tmp > $changelog rm $changelog.tmp @@ -79,6 +86,6 @@ if [ "$CLEANUP" ] ; then find ../mercurial*.deb ../mercurial_*.build ../mercurial_*.changes \ -type f -newer $control -print0 | \ xargs -Inarf -0 mv narf "$OUTPUTDIR" - echo "Built packages for $version-$release:" + echo "Built packages for $debver:" find "$OUTPUTDIR" -type f -newer $control -name '*.deb' fi diff --git a/contrib/buildrpm b/contrib/buildrpm --- a/contrib/buildrpm +++ b/contrib/buildrpm @@ -49,6 +49,18 @@ fi gethgversion +# TODO: handle distance/node set, and type set + +if [ -z "$type" ] ; then + release=1 +else + release=0.9_$type +fi + +if [ -n "$distance" ] ; then + release=$release+$distance_$node +fi + if [ "$PYTHONVER" ]; then release=$release+$PYTHONVER RPMPYTHONVER=$PYTHONVER diff --git a/contrib/packagelib.sh b/contrib/packagelib.sh --- a/contrib/packagelib.sh +++ b/contrib/packagelib.sh @@ -1,3 +1,12 @@ +# Extract version number into 4 parts, some of which may be empty: +# +# version: the numeric part of the most recent tag. Will always look like 1.3. +# +# type: if an rc build, "rc", otherwise empty +# +# distance: the distance from the nearest tag, or empty if built from a tag +# +# node: the node|short hg was built from, or empty if built from a tag gethgversion() { make clean make local || make local PURE=--pure @@ -7,13 +16,20 @@ gethgversion() { hgversion=`$HG version | sed -ne 's/.*(version \(.*\))$/\1/p'` + if echo $hgversion | grep + > /dev/null 2>&1 ; then + tmp=`echo $hgversion | cut -d+ -f 2` + hgversion=`echo $hgversion | cut -d+ -f 1` + distance=`echo $tmp | cut -d- -f 1` + node=`echo $tmp | cut -d- -f 2` + else + distance='' + node='' + fi if echo $hgversion | grep -- '-' > /dev/null 2>&1; then - # nightly build case, version is like 1.3.1+250-20b91f91f9ca version=`echo $hgversion | cut -d- -f1` - release=`echo $hgversion | cut -d- -f2 | sed -e 's/+.*//'` + type=`echo $hgversion | cut -d- -f2` else - # official tag, version is like 1.3.1 - version=`echo $hgversion | sed -e 's/+.*//'` - release='0' + version=$hgversion + type='' fi }