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
