builddeb
115 lines
| 2.6 KiB
| text/plain
|
TextLexer
Gregory Szorc
|
r38026 | #!/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 | ||||
Gregory Szorc
|
r38033 | ROOTDIR=$(cd $(dirname $0)/../.. > /dev/null; pwd) | ||
Gregory Szorc
|
r38026 | 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 | ||||
muxator
|
r40140 | |||
cleanup() { | ||||
muxator
|
r40142 | if [ "$CLEANUP" ]; then | ||
muxator
|
r40143 | rm -r "$ROOTDIR/debian"; | ||
muxator
|
r40140 | fi | ||
} | ||||
Gregory Szorc
|
r38026 | 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 | ||||
muxator
|
r40143 | cd "$ROOTDIR" | ||
muxator
|
r40140 | trap 'cleanup' EXIT | ||
Gregory Szorc
|
r38026 | |||
set -u | ||||
if [ ! -d .hg ]; then | ||||
muxator
|
r40138 | printf "You are inside %s, which is not the root of a Mercurial repository\n" $(pwd) 1>&2 | ||
Gregory Szorc
|
r38026 | 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 | ||||
muxator
|
r40138 | printf "Error! debian control directory already exists at %s/debian\n" $(pwd) | ||
Gregory Szorc
|
r38026 | exit 1 | ||
fi | ||||
Gregory Szorc
|
r38033 | cp -r "$ROOTDIR"/contrib/packaging/debian debian | ||
Gregory Szorc
|
r38026 | |||
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" | ||||
Gregory Szorc
|
r38033 | "$ROOTDIR/hg" archive $SRCFILE | ||
Gregory Szorc
|
r38026 | 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:" | ||||
muxator
|
r40139 | find "$PWD"/"$OUTPUTDIR" -type f -newer $control -name '*.deb' | ||
Gregory Szorc
|
r38026 | fi | ||