builddeb
97 lines
| 2.0 KiB
| text/plain
|
TextLexer
/ contrib / builddeb
Augie Fackler
|
r24971 | #!/bin/sh -e | ||
# | ||||
# Build a Mercurial debian package from the current repo | ||||
# | ||||
# Tested on Jessie (stable as of original script authoring.) | ||||
Augie Fackler
|
r24972 | . $(dirname $0)/packagelib.sh | ||
Augie Fackler
|
r24971 | BUILD=1 | ||
Augie Fackler
|
r26148 | CLEANUP=1 | ||
r27210 | DISTID=debian | |||
r27209 | CODENAME=jessie | |||
Augie Fackler
|
r24971 | while [ "$1" ]; do | ||
case "$1" in | ||||
r27210 | --distid ) | |||
shift | ||||
DISTID="$1" | ||||
shift | ||||
;; | ||||
r27209 | --codename ) | |||
Augie Fackler
|
r26108 | shift | ||
r27209 | CODENAME="$1" | |||
Augie Fackler
|
r26108 | shift | ||
;; | ||||
Augie Fackler
|
r26148 | --cleanup ) | ||
Augie Fackler
|
r24971 | shift | ||
BUILD= | ||||
;; | ||||
Augie Fackler
|
r26148 | --build ) | ||
shift | ||||
CLEANUP= | ||||
;; | ||||
Augie Fackler
|
r24971 | --debbuilddir ) | ||
shift | ||||
DEBBUILDDIR="$1" | ||||
shift | ||||
;; | ||||
* ) | ||||
echo "Invalid parameter $1!" 1>&2 | ||||
exit 1 | ||||
;; | ||||
esac | ||||
done | ||||
Augie Fackler
|
r26148 | trap "if [ '$CLEANUP' ] ; then rm -r '$PWD/debian' ; fi" EXIT | ||
Augie Fackler
|
r26108 | |||
Augie Fackler
|
r24971 | set -u | ||
if [ ! -d .hg ]; then | ||||
echo 'You are not inside a Mercurial repository!' 1>&2 | ||||
exit 1 | ||||
fi | ||||
Augie Fackler
|
r24972 | gethgversion | ||
Augie Fackler
|
r26833 | debver="$version" | ||
if [ -n "$type" ] ; then | ||||
debver="$debver~$type" | ||||
fi | ||||
if [ -n "$distance" ] ; then | ||||
debver="$debver+$distance-$node" | ||||
fi | ||||
Augie Fackler
|
r24971 | |||
Augie Fackler
|
r26148 | control=debian/control | ||
changelog=debian/changelog | ||||
Augie Fackler
|
r24971 | |||
if [ "$BUILD" ]; then | ||||
Augie Fackler
|
r26148 | if [ -d debian ] ; then | ||
echo "Error! debian control directory already exists!" | ||||
exit 1 | ||||
Augie Fackler
|
r24971 | fi | ||
Augie Fackler
|
r26148 | |||
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. | ||||
Augie Fackler
|
r26833 | sed "s/__VERSION__/$debver/" < $changelog > $changelog.tmp | ||
Augie Fackler
|
r26148 | 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 | ||||
Augie Fackler
|
r24971 | fi | ||
Augie Fackler
|
r26148 | if [ "$CLEANUP" ] ; then | ||
echo | ||||
r27210 | OUTPUTDIR=${OUTPUTDIR:=packages/$DISTID-$CODENAME} | |||
Augie Fackler
|
r26148 | find ../mercurial*.deb ../mercurial_*.build ../mercurial_*.changes \ | ||
-type f -newer $control -print0 | \ | ||||
xargs -Inarf -0 mv narf "$OUTPUTDIR" | ||||
Augie Fackler
|
r26833 | echo "Built packages for $debver:" | ||
Augie Fackler
|
r26148 | find "$OUTPUTDIR" -type f -newer $control -name '*.deb' | ||
fi | ||||