Initial import from admin sys repository

This commit is contained in:
Jérôme Schneider 2013-08-08 18:24:29 +02:00
commit 9c261143b1
8 changed files with 417 additions and 0 deletions

30
Makefile Normal file
View File

@ -0,0 +1,30 @@
all: install
install:
apt-get install pbuilder devscripts debhelper cowbuilder git dput fakeroot sudo
if ! getent passwd eobuilder > /dev/null 2>&1; then useradd eobuilder --home-dir /var/lib/eobuilder --create-home; fi
su eobuilder -p -c "cp pbuilderrc /var/lib/eobuilder/.pbuilderrc"
su eobuilder -p -c "cp dput.cf /var/lib/eobuilder/.dput.cf"
su eobuilder -p -c "cp gitconfig /var/lib/eobuilder/.gitconfig"
cp eobuilder /usr/local/bin
chroots:
if [ ! -d /var/cache/pbuilder/squeeze-i386 ]; then \
mkdir /var/cache/pbuilder/squeeze-i386; \
cowbuilder --create --basepath /var/cache/pbuilder/squeeze-i386/base.cow --distribution squeeze --debootstrapopts --arch --debootstrapopts i386; \
fi
if [ ! -d /var/cache/pbuilder/squeeze-amd64 ]; then \
mkdir /var/cache/pbuilder/squeeze-amd64; \
cowbuilder --create --basepath /var/cache/pbuilder/squeeze-amd64/base.cow --distribution squeeze --debootstrapopts --arch --debootstrapopts amd64; \
fi
if [ ! -d /var/cache/pbuilder/wheezy-i386 ]; then \
mkdir /var/cache/pbuilder/wheezy-i386; \
cowbuilder --create --basepath /var/cache/pbuilder/wheezy-i386/base.cow --distribution wheezy --debootstrapopts --arch --debootstrapopts i386; \
fi
if [ ! -d /var/cache/pbuilder/wheezy-amd64 ]; then \
mkdir /var/cache/pbuilder/wheezy-amd64; \
cowbuilder --create --basepath /var/cache/pbuilder/wheezy-amd64/base.cow --distribution wheezy --debootstrapopts --arch --debootstrapopts amd64; \
fi

36
README.rst Normal file
View File

@ -0,0 +1,36 @@
=======
README
=======
Requirments
------------
Use must use a Debian OS. You need to install make.
Installation
------------
Install eobuilder::
sudo make install
Install chroots (if you want i386 - amd64 wheezy and squeeze)::
sudo make chroots
Configuration
-------------
Generate a ssh key for eobuilder or use an existing one.
Configure your Debian repository to allow this key.
You need to add thes line into your sudoers::
eobuilder ALL= SETENV:NOPASSWD:/usr/sbin/cowbuilder
Quick start
------------
Example with python-entrouvert::
sudo -u eobuilder eobuilder python-entrouvert squeeze

2
TODO Normal file
View File

@ -0,0 +1,2 @@
- Migrate to getopts
- Create a Jenkins version

9
dput.cf Normal file
View File

@ -0,0 +1,9 @@
[squeeze-experimental]
method = scp
fqdn = deb.entrouvert.org
incoming = /var/vhosts/deb.entrouvert.org/incoming/squeeze-experimental
[wheezy-experimental]
method = scp
fqdn = deb.entrouvert.org
incoming = /var/vhosts/deb.entrouvert.org/incoming/wheezy-experimental

122
eobuilder Executable file
View File

@ -0,0 +1,122 @@
#!/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

120
eobuilder.orig Executable file
View File

@ -0,0 +1,120 @@
#!/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
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
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

7
gitconfig Normal file
View File

@ -0,0 +1,7 @@
[core]
excludesfile = "/var/lib/eobuilder/.gitignore"
[user]
name = EO builder bot
email = admin@entrouvert.com

91
pbuilderrc Normal file
View File

@ -0,0 +1,91 @@
# Codenames for Debian suites according to their alias. Update these when
# needed.
UNSTABLE_CODENAME="sid"
TESTING_CODENAME="jessie"
STABLE_CODENAME="wheezy"
OLDSTABLE_CODENAME="squeeze"
STABLE_BACKPORTS_SUITE="$STABLE_CODENAME-backports"
# Use cowbuilder
PDEBUILD_PBUILDER="cowbuilder"
# List of Debian suites.
DEBIAN_SUITES=($UNSTABLE_CODENAME $TESTING_CODENAME $STABLE_CODENAME $OLDSTABLE_CODENAME
"unstable" "testing" "stable" "oldstable")
# List of Ubuntu suites. Update these when needed.
UBUNTU_SUITES=("natty" "maverick" "lucid" "karmic" "jaunty" "hardy")
# Mirrors to use. Update these to your preferred mirror.
MIRRORSITE=http://ftp.fr.debian.org/debian
DEBIAN_MIRROR="ftp.fr.debian.org"
UBUNTU_MIRROR="ftp.ubuntu.com"
# Optionally use the changelog of a package to determine the suite to use if
# none set.
if [ -z "${DIST}" ] && [ -r "debian/changelog" ]; then
DIST=$(dpkg-parsechangelog | awk '/^Distribution: / {print $2}')
# Use the unstable suite for certain suite values.
if $(echo "experimental UNRELEASED" | grep -q $DIST); then
DIST="$UNSTABLE_CODENAME"
fi
fi
# Optionally set a default distribution if none is used. Note that you can set
# your own default (i.e. ${DIST:="unstable"}).
: ${DIST:="$(lsb_release --short --codename)"}
# Optionally change Debian release states in $DIST to their names.
case "$DIST" in
unstable)
DIST="$UNSTABLE_CODENAME"
;;
testing)
DIST="$TESTING_CODENAME"
;;
stable)
DIST="$STABLE_CODENAME"
;;
oldstable)
DIST="$OLDSTABLE_CODENAME"
;;
esac
# Optionally set the architecture to the host architecture if none set. Note
# that you can set your own default (i.e. ${ARCH:="i386"}).
: ${ARCH:="$(dpkg --print-architecture)"}
NAME="$DIST"
if [ -n "${ARCH}" ]; then
NAME="$NAME-$ARCH"
DEBOOTSTRAPOPTS=("--arch" "$ARCH" "${DEBOOTSTRAPOPTS[@]}")
fi
#BASETGZ="/var/cache/pbuilder/$NAME-base.tgz"
# Optionally, set BASEPATH (and not BASETGZ) if using cowbuilder
BASEPATH="/var/cache/pbuilder/$NAME/base.cow/"
DISTRIBUTION="$DIST"
BUILDRESULT="/var/lib/eobuilder/results/$NAME/"
APTCACHE="/var/cache/pbuilder/$NAME/aptcache/"
BUILDPLACE="/var/cache/pbuilder/build"
BUILDUSERNAME="eobuilder"
OTHERMIRROR="deb http://$DEBIAN_MIRROR/debian $DIST-backports main | deb http://deb.entrouvert.org/ $DIST-experimental main"
if $(echo ${DEBIAN_SUITES[@]} | grep -q $DIST); then
# Debian configuration
MIRRORSITE="http://$DEBIAN_MIRROR/debian/"
COMPONENTS="main contrib non-free"
DEBOOTSTRAPOPTS=("${DEBOOTSTRAPOPTS[@]}" "--keyring=/usr/share/keyrings/debian-archive-keyring.gpg")
elif $(echo ${UBUNTU_SUITES[@]} | grep -q $DIST); then
# Ubuntu configuration
MIRRORSITE="http://$UBUNTU_MIRROR/ubuntu/"
COMPONENTS="main restricted universe multiverse"
DEBOOTSTRAPOPTS=("${DEBOOTSTRAPOPTS[@]}" "--keyring=/usr/share/keyrings/ubuntu-archive-keyring.gpg")
else
echo "Unknown distribution: $DIST"
exit 1
fi