##// END OF EJS Templates
builddeb: rework how output dir and platform are specified...
builddeb: rework how output dir and platform are specified This makes it possible to write tests for both builddeb and dockerdeb that actually build .debs and then sanity check the contents.

File last commit:

r26108:05306b93 default
r26108:05306b93 default
Show More
builddeb
70 lines | 1.5 KiB | text/plain | TextLexer
#!/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
DEBVERSION=jessie
while [ "$1" ]; do
case "$1" in
--release )
shift
DEBVERSION="$1"
shift
;;
--prepare )
shift
BUILD=
;;
--debbuilddir )
shift
DEBBUILDDIR="$1"
shift
;;
* )
echo "Invalid parameter $1!" 1>&2
exit 1
;;
esac
done
DEBBUILDDIR=${OUTPUTDIR:="$PWD/debbuild"}
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
make PREFIX=$DEBBUILDDIR/usr install
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