LGTM

Thanks,

Guido


On Wed, Apr 3, 2013 at 4:43 PM, Michele Tartara <[email protected]> wrote:
> And, one (hopefully) final interdiff:
>
> diff --git a/Makefile.am b/Makefile.am
> index 7e9ea04..e61b45b 100644
> @@ -179,8 +179,8 @@ CLEANFILES = \
>   $(SHELL_ENV_INIT) \
>   daemons/daemon-util \
>   daemons/ganeti-cleaner \
> - devel/squeeze64.tar.gz \
> - devel/squeeze64.conf \
> + devel/squeeze-amd64.tar.gz \
> + devel/squeeze-amd64.conf \
>   $(mandocrst) \
>   doc/manpages-enabled.rst \
>   $(BUILT_EXAMPLES) \
>
> Thanks,
> Michele
>
>
> On Wed, Apr 3, 2013 at 2:57 PM, Michele Tartara <[email protected]> wrote:
>>
>> Setting up a proper environment for building a Ganeti can be quite
>> difficult.
>>
>> This patch adds a script for building a compressed chroot with all the
>> required libraries and tools.
>>
>> Signed-off-by: Michele Tartara <[email protected]>
>> ---
>>  .gitignore                       |   2 +
>>  Makefile.am                      |   3 +
>>  devel/build_chroot               | 151
>> +++++++++++++++++++++++++++++++++++++++
>>  devel/data/final.schroot.conf.in |   6 ++
>>  devel/data/temp.schroot.conf.in  |   6 ++
>>  5 files changed, 168 insertions(+)
>>  create mode 100755 devel/build_chroot
>>  create mode 100644 devel/data/final.schroot.conf.in
>>  create mode 100644 devel/data/temp.schroot.conf.in
>>
>> diff --git a/.gitignore b/.gitignore
>> index 8656a8a..091a892 100644
>> --- a/.gitignore
>> +++ b/.gitignore
>> @@ -31,6 +31,8 @@
>>  /config.log
>>  /config.status
>>  /configure
>> +/devel/squeeze-amd64.tar.gz
>> +/devel/squeeze-amd64.conf
>>  /epydoc.conf
>>  /ganeti
>>  /stamp-srclinks
>> diff --git a/Makefile.am b/Makefile.am
>> index b43c187..7e9ea04 100644
>> --- a/Makefile.am
>> +++ b/Makefile.am
>> @@ -93,6 +93,7 @@ DIRS = \
>>         autotools \
>>         daemons \
>>         devel \
>> +       devel/data \
>>         doc \
>>         doc/css \
>>         doc/examples \
>> @@ -178,6 +179,8 @@ CLEANFILES = \
>>         $(SHELL_ENV_INIT) \
>>         daemons/daemon-util \
>>         daemons/ganeti-cleaner \
>> +       devel/squeeze64.tar.gz \
>> +       devel/squeeze64.conf \
>>         $(mandocrst) \
>>         doc/manpages-enabled.rst \
>>         $(BUILT_EXAMPLES) \
>> diff --git a/devel/build_chroot b/devel/build_chroot
>> new file mode 100755
>> index 0000000..e4225cb
>> --- /dev/null
>> +++ b/devel/build_chroot
>> @@ -0,0 +1,151 @@
>> +#!/bin/bash
>> +#Configuration
>> +: ${DATA_DIR=data}
>> +: ${ARCH=amd64}
>> +: ${DIST_RELEASE=squeeze}
>> +: ${CONF_DIR:=/etc/schroot/chroot.d}
>> +: ${CHROOT_DIR:=/srv/chroot}
>> +
>> +#Automatically generated variables
>> +CHROOTNAME=$DIST_RELEASE-$ARCH
>> +CHNAME=building_$CHROOTNAME
>> +TEMP_CHROOT_CONF=$CONF_DIR/$CHNAME.conf
>> +FINAL_CHROOT_CONF=$CHROOTNAME.conf
>> +ROOT=`pwd`
>> +CHDIR=$ROOT/$CHNAME
>> +USER=`whoami`
>> +COMP_FILENAME=$CHROOTNAME.tar.gz
>> +COMP_FILEPATH=$ROOT/$COMP_FILENAME
>> +
>> +#Runnability checks
>> +if [ $USER != 'root' ]
>> +then
>> +  echo "This script requires root permissions to run"
>> +  exit
>> +fi
>> +
>> +if [ -f $TEMP_CHROOT_CONF ]
>> +then
>> +  echo "The configuration file name for the temporary chroot"
>> +  echo "  $TEMP_CHROOT_CONF"
>> +  echo "already exists."
>> +  echo "Remove it or change the CHNAME value in the script."
>> +  exit
>> +fi
>> +
>> +set -e
>> +
>> +#Cleanup
>> +rm -rf $CHDIR
>> +mkdir $CHDIR
>> +
>> +#Install tools for building chroots
>> +apt-get install -y schroot debootstrap
>> +
>> +shopt -s expand_aliases
>> +alias in_chroot='schroot -c $CHNAME -d / '
>> +alias subst_variables='sed \
>> +  -e "s/\${ARCH}/$ARCH/" \
>> +  -e "s*\${CHDIR}*$CHDIR*" \
>> +  -e "s/\${CHNAME}/$CHNAME/" \
>> +  -e "s/\${CHROOTNAME}/$CHROOTNAME/" \
>> +  -e "s*\${CHROOT_DIR}*$CHROOT_DIR*" \
>> +  -e "s/\${COMP_FILENAME}/$COMP_FILENAME/" \
>> +  -e "s/\${DIST_RELEASE}/$DIST_RELEASE/"'
>> +
>> +#Generate chroot configurations
>> +cat $DATA_DIR/temp.schroot.conf.in | subst_variables > $TEMP_CHROOT_CONF
>> +cat $DATA_DIR/final.schroot.conf.in | subst_variables >
>> $FINAL_CHROOT_CONF
>> +
>> +#Install the base system
>> +debootstrap --arch $ARCH $DIST_RELEASE $CHDIR
>> +
>> +APT_INSTALL="apt-get install -y --no-install-recommends"
>> +
>> +#Install all the packages
>> +in_chroot -- \
>> +  apt-get update
>> +
>> +in_chroot -- \
>> +  $APT_INSTALL python-setuptools build-essential python-dev sudo automake
>> git \
>> +               fakeroot vim rsync locales
>> +
>> +echo "en_US.UTF-8 UTF-8" >> $CHDIR/etc/locale.gen
>> +
>> +in_chroot -- \
>> +  locale-gen
>> +
>> +in_chroot -- \
>> +  $APT_INSTALL lvm2 ssh bridge-utils iproute iputils-arping \
>> +               ndisc6 python python-pyopenssl openssl \
>> +               python-pyparsing python-simplejson \
>> +               python-pyinotify python-pycurl python-yaml socat fping
>> +
>> +in_chroot -- \
>> +  $APT_INSTALL python-paramiko qemu-utils
>> +
>> +in_chroot -- \
>> +  easy_install affinity bitarray ipaddr
>> +
>> +#Haskell packages
>> +in_chroot -- \
>> +  $APT_INSTALL ghc6 \
>> +               libghc6-parallel-dev libghc6-deepseq-dev \
>> +               libghc6-curl-dev
>> +
>> +in_chroot -- \
>> +  $APT_INSTALL cabal-install
>> +
>> +in_chroot -- \
>> +  cabal update
>> +
>> +in_chroot -- \
>> +  $APT_INSTALL libpcre3-dev
>> +
>> +in_chroot -- \
>> +  cabal install --global \
>> +    QuickCheck==2.5.1.1 \
>> +    network==2.3 hslogger Crypto text regex-pcre \
>> +    attoparsec vector \
>> +    json==0.4.4 \
>> +    MonadCatchIO-transformers==0.2.2.0 mtl==2.0.1.0 \
>> +    hashable==1.1.2.0 case-insensitive==0.3 parsec==3.0.1 \
>> +    network==2.3 snap-server==0.8.1 \
>> +    hinotify==0.3.2
>> +
>> +#Python development tools
>> +in_chroot -- \
>> +  $APT_INSTALL pandoc python-epydoc graphviz
>> +
>> +in_chroot -- \
>> +  easy_install sphinx==1.1.3 \
>> +               logilab-common \
>> +               logilab-astng==0.23.1 \
>> +               pylint==0.25.1 \
>> +               pep8==1.2 \
>> +               coverage
>> +
>> +#Haskell development tools
>> +in_chroot -- \
>> +  cabal install --global \
>> +    HUnit \
>> +    happy \
>> +    hlint==1.8.34 \
>> +    hscolour==1.20.3 \
>> +    temporary \
>> +    test-framework==0.6.1 \
>> +    test-framework-hunit==0.2.7 \
>> +    test-framework-quickcheck2==0.2.12.3
>> +
>> +in_chroot -- \
>> +  cabal install --global shelltestrunner
>> +
>> +rm -f $COMP_FILEPATH
>> +echo "Creating compressed schroot image..."
>> +cd $CHDIR
>> +tar czf $COMP_FILEPATH ./*
>> +cd $ROOT
>> +echo "Done"
>> +
>> +rm -rf $CHDIR
>> +rm -f $TEMP_CHROOT_CONF
>> diff --git a/devel/data/final.schroot.conf.in
>> b/devel/data/final.schroot.conf.in
>> new file mode 100644
>> index 0000000..08bb4b0
>> --- /dev/null
>> +++ b/devel/data/final.schroot.conf.in
>> @@ -0,0 +1,6 @@
>> +[${CHROOTNAME}]
>> +description=Debian ${DIST_RELEASE} ${ARCH}
>> +groups=src
>> +source-root-groups=root
>> +type=file
>> +file=${CHROOT_DIR}/${COMP_FILENAME}
>> diff --git a/devel/data/temp.schroot.conf.in
>> b/devel/data/temp.schroot.conf.in
>> new file mode 100644
>> index 0000000..fe9a409
>> --- /dev/null
>> +++ b/devel/data/temp.schroot.conf.in
>> @@ -0,0 +1,6 @@
>> +[${CHNAME}]
>> +description=Debian ${DIST_RELEASE} ${ARCH}
>> +directory=${CHDIR}
>> +groups=src
>> +users=root
>> +type=directory
>> --
>> 1.8.1.3
>>
>



-- 
Guido Trotter
Ganeti engineering
Google Germany

Reply via email to