mirror of
https://github.com/facebook/sapling.git
synced 2024-10-10 00:45:18 +03:00
b611d5489b
This is needed so that launchpad and friends have a unique version number for each distroseries (trusty, wily, xenial, etc). It was discovered when trying to upload 3.8 to launchpad.
105 lines
2.4 KiB
Bash
Executable File
105 lines
2.4 KiB
Bash
Executable File
#!/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
|