Could you also output "something" in /etc/debian_chroot, please? :)

Thanks,

Guido


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