eobuilder/eobuilder

123 lines
3.0 KiB
Bash
Executable File

#!/bin/sh
USAGE="""Usage: $0 GIT_REPOSITORY_NAME DISTRIBUTION [ARCHITECTURE]\n
\n
GIT_REPOSITORY_NAME: respository name without .git\n
DISTRIBUTION: Debian distroibution like : squeeze, wheezy, ...\n
ARCHITECTURE: amd64 or i368 (Default: amd64)"""
GIT_REPOSITORY_URL="git+ssh://git@repos.entrouvert.org"
GIT_PATH="/var/lib/eobuilder/git"
PBUILDER_RESULT="/var/lib/eobuilder/results"
error()
{
echo $1 >& 2
exit 1
}
if [ $# -lt 2 ]; then
error "$USAGE"
fi
if [ "$(whoami)" != "eobuilder" ]; then
error "You must run be eobuilder to launch this script"
fi
set -e
GIT_NAME=$1
DIST=$2
if [ "$3" ]; then
ARCH=$3
else
ARCH="amd64"
fi
if [ ! -d $GIT_PATH ]; then
mkdir $GIT_PATH
fi
PBUILDER_PROJECT_RESULT="${PBUILDER_RESULT}/${DIST}-${ARCH}/"
PROJECT_NAME=$GIT_NAME
BUILD_DIR="/var/tmp/$PROJECT_NAME"
GIT_PROJECT_PATH="$GIT_PATH/$GIT_NAME"
echo "+ Cloning git repository"
if [ ! -d $GIT_PROJECT_PATH ]; then
echo "+ git clone $GIT_REPOSITORY_URL/$GIT_NAME.git"
cd $GIT_PATH
git clone $GIT_REPOSITORY_URL/$GIT_NAME.git
fi
echo "+ Updating git repository and parsing configuration ..."
cd $GIT_PROJECT_PATH
git checkout master
git pull
VERSION=`git describe | tr - . | sed 's/^v//'`
COMMIT_NUMBER=`git log -n1 | grep 'commit' | sed 's/commit\s*//'`
git checkout debian
git pull
PACKAGE_NAME=`cat debian/control | sed 's/^Source\s*:\s*//; t; d'`
LAST_DEBIAN_PACKAGE_VERSION=`dpkg-parsechangelog | sed 's/^Version: //; t; d'`
LAST_DEBIAN_INC=`echo $LAST_DEBIAN_PACKAGE_VERSION | cut -d '-' -f2`
LAST_VERSION=`echo $LAST_DEBIAN_PACKAGE_VERSION | cut -d '-' -f1`
# Find and increment Debian version number
if [ "$LAST_VERSION" = "$VERSION" ]; then
INC_VERSION=$(($LAST_DEBIAN_INC + 1))
else
INC_VERSION=1
fi
PACKAGE_VERSION="$VERSION-$INC_VERSION"
echo "+ Generating sdist ..."
git checkout master
python setup.py sdist --formats=bztar
echo "+ Prepararing debian build ($PACKAGE_NAME $PACKAGE_VERSION) ..."
git checkout debian
mkdir -p $BUILD_DIR
echo $GIT_PROJECT_PATH/dist/$PROJECT_NAME-$VERSION.tar.bz2
mv $GIT_PROJECT_PATH/dist/$PROJECT_NAME-$VERSION.tar.bz2 /var/tmp/$PROJECT_NAME/${PACKAGE_NAME}_${VERSION}.orig.tar.bz2
cd $BUILD_DIR
tar xfvj ${PACKAGE_NAME}_${VERSION}.orig.tar.bz2
cp -r $GIT_PROJECT_PATH/debian $BUILD_DIR/$PROJECT_NAME-$VERSION
cd $PROJECT_NAME-$VERSION
echo """${PACKAGE_NAME} (${PACKAGE_VERSION}) ${DIST}; urgency=low
* Automatic version : commit ${COMMIT_NUMBER}
-- Jérôme Schneider <info@entrouvert.com> `date -R`
"" " > debian/new_changelog
cat debian/changelog >> debian/new_changelog
mv debian/new_changelog debian/changelog
echo "+ Building package ..."
if [ ! -d $PBUILDER_PROJECT_RESULT ]; then
mkdir -p $PBUILDER_PROJECT_RESULT
fi
DIST=$DIST ARCH=$ARCH pdebuild
echo "+ Commit changelog"
cd $GIT_PROJECT_PATH
git checkout debian
git commit debian/changelog -m 'Automatic: new debian package'
echo "+ Sending package ..."
cd $PBUILDER_PROJECT_RESULT
dput -u $DIST-experimental ${PACKAGE_NAME}_${PACKAGE_VERSION}_${ARCH}.changes
echo "+ Cleanning ..."
if [ "$PROJECT_NAME" ]; then
rm -rf $BUILD_DIR
fi