builddeb
104 lines
| 2.4 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 | ||
r27212 | DISTID=`(lsb_release -is 2> /dev/null | tr '[:upper:]' '[:lower:]') || echo debian` | |||
CODENAME=`lsb_release -cs 2> /dev/null || echo unknown` | ||||
Sean Farley
|
r28994 | DEBFLAGS=-b | ||
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= | ||||
;; | ||||
Sean Farley
|
r28994 | --source-only ) | ||
shift | ||||
DEBFLAGS=-S | ||||
;; | ||||
Augie Fackler
|
r24971 | * ) | ||
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 | ||||
Sean Farley
|
r29045 | debver="$debver+$distance-$CODENAME-$node" | ||
Sean Farley
|
r29093 | 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" | ||||
Augie Fackler
|
r26833 | 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 | ||||
Sean Farley
|
r28988 | sed -i.tmp "s/__VERSION__/$debver/" $changelog | ||
sed -i.tmp "s/__DATE__/$(date --rfc-2822)/" $changelog | ||||
Sean Farley
|
r28989 | sed -i.tmp "s/__CODENAME__/$CODENAME/" $changelog | ||
Augie Fackler
|
r26148 | rm $changelog.tmp | ||
Sean Farley
|
r28993 | # remove the node from the version string | ||
SRCFILE="mercurial_$(echo $debver | sed "s,-$node,,").orig.tar.gz" | ||||
"$PWD/hg" archive $SRCFILE | ||||
mv $SRCFILE .. | ||||
Sean Farley
|
r28994 | debuild -us -uc -i -I $DEBFLAGS | ||
Augie Fackler
|
r26148 | 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} | |||
r27212 | mkdir -p "$OUTPUTDIR" | |||
Augie Fackler
|
r26148 | find ../mercurial*.deb ../mercurial_*.build ../mercurial_*.changes \ | ||
Sean Farley
|
r28991 | ../mercurial*.dsc ../mercurial*.gz \ | ||
Sean Farley
|
r28990 | -type f -newer $control -print0 2>/dev/null | \ | ||
Augie Fackler
|
r26148 | 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 | ||||