Document spindles in TSPEC
[ganeti-local] / devel / build_chroot
index 0a91bf8..59f11b3 100755 (executable)
@@ -5,7 +5,10 @@
 : ${CONF_DIR:=/etc/schroot/chroot.d}
 : ${CHROOT_DIR:=/srv/chroot}
 : ${ALTERNATIVE_EDITOR:=/usr/bin/vim.basic}
-# The value of DATA_DIR is read as well from the environment.
+: ${CHROOT_FINAL_HOOK:=/bin/true}
+# Additional Variables taken from the environmen
+# DATA_DIR
+# CHROOT_EXTRA_DEBIAN_PACKAGES
 
 #Automatically generated variables
 CHROOTNAME=$DIST_RELEASE-$ARCH
@@ -88,14 +91,16 @@ 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/"'
+function 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 $ACTUAL_DATA_DIR/temp.schroot.conf.in | subst_variables > $TEMP_CHROOT_CONF
@@ -114,86 +119,73 @@ echo "deb http://backports.debian.org/debian-backports" \
 in_chroot -- \
   apt-get update
 
-#Install selected packages from backports
-in_chroot -- \
-  apt-get -y --no-install-recommends -t squeeze-backports install \
-    git \
-    vim
-
-in_chroot -- \
-  $APT_INSTALL python-setuptools build-essential python-dev sudo automake \
-               fakeroot rsync locales less
-
-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
 
+# do not install libghc6-network-dev, since it's too old, and just
+# confuses the dependencies
 in_chroot -- \
-  $APT_INSTALL python-paramiko qemu-utils
+  $APT_INSTALL \
+    autoconf automake \
+    ghc cabal-install \
+    libghc6-curl-dev \
+    libghc6-parallel-dev \
+    libghc6-text-dev \
+    libghc6-vector-dev \
+    libpcre3-dev \
+    hlint hscolour pandoc \
+    graphviz socat qemu-utils \
+    python-docutils \
+    python-simplejson \
+    python-pyparsing \
+    python-pyinotify \
+    python-pycurl \
+    python-ipaddr \
+    python-yaml \
+    python-paramiko
 
 in_chroot -- \
-  easy_install affinity bitarray ipaddr
+  $APT_INSTALL python-setuptools python-dev build-essential
 
-#Haskell packages
 in_chroot -- \
-  $APT_INSTALL ghc6 \
-               libghc6-parallel-dev libghc6-deepseq-dev \
-               libghc6-curl-dev
+  easy_install \
+    logilab-astng==0.24.1 \
+    logilab-common==0.58.3 \
+    mock==1.0.1 \
+    pylint==0.26.0
 
 in_chroot -- \
-  $APT_INSTALL cabal-install
+  easy_install \
+    sphinx==1.1.3 \
+    pep8==1.3.3 \
+    coverage==3.4 \
+    bitarray==0.8.0
 
 in_chroot -- \
   cabal update
 
 in_chroot -- \
-  $APT_INSTALL libpcre3-dev
-
-in_chroot -- \
   cabal install --global \
+    blaze-builder==0.3.1.1 \
     network==2.3 \
     regex-pcre==0.94.2 \
     hinotify==0.3.2 \
     hslogger==1.1.4 \
-    attoparsec==0.10.1.1\
     quickcheck==2.5.1.1 \
+    attoparsec==0.10.1.1 \
     crypto==4.2.4 \
-    monadcatchio-transformers==0.2.2.0 \
+    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 \
-    text==0.11.3.0 \
-    vector==0.9.1 \
     json==0.4.4
 
-#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==1.2.5.2 \
     happy==1.18.10 \
-    hlint==1.8.34 \
+    hlint==1.8.43 \
     hscolour==1.20.3 \
     temporary==1.1.2.3 \
     test-framework==0.6.1 \
@@ -201,16 +193,61 @@ in_chroot -- \
     test-framework-quickcheck2==0.2.12.3
 
 in_chroot -- \
+  cabal install --global cabal-file-th
+
+in_chroot -- \
   cabal install --global shelltestrunner
 
+#Install selected packages from backports
+in_chroot -- \
+  $APT_INSTALL -t squeeze-backports \
+    git \
+    git-email \
+    vim
+
+in_chroot -- \
+  $APT_INSTALL sudo fakeroot rsync locales less
+
+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-mock \
+               socat fping
+
+in_chroot -- \
+  $APT_INSTALL qemu-utils
+
+in_chroot -- \
+  easy_install affinity
+
+#Python development tools
+in_chroot -- \
+  $APT_INSTALL python-epydoc
+
 #Tools for creating debian packages
 in_chroot -- \
-  $APT_INSTALL python-docutils debhelper quilt
+  $APT_INSTALL debhelper quilt
+
+# extra debian packages
+
+for package in $CHROOT_EXTRA_DEBIAN_PACKAGES
+do in_chroot -- \
+  $APT_INSTALL $package
+done
 
 #Set default editor
 in_chroot -- \
   update-alternatives --set editor $ALTERNATIVE_EDITOR
 
+# Final user hook
+
+in_chroot -- $CHROOT_FINAL_HOOK
+
 rm -f $COMP_FILEPATH
 echo "Creating compressed schroot image..."
 cd $CHDIR