: ${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
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
APT_INSTALL="apt-get install -y --no-install-recommends"
-echo "deb http://backports.debian.org/debian-backports" \
- "$DIST_RELEASE-backports main contrib non-free" \
- > $CHDIR/etc/apt/sources.list.d/backports.list
+if [ DIST_RELEASE = squeeze ]
+then
+ echo "deb http://backports.debian.org/debian-backports" \
+ "$DIST_RELEASE-backports main contrib non-free" \
+ > $CHDIR/etc/apt/sources.list.d/backports.list
+fi
#Install all the packages
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
+case $DIST_RELEASE in
+
+ squeeze)
+
+ # do not install libghc6-network-dev, since it's too old, and just
+ # confuses the dependencies
+ in_chroot -- \
+ $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 qemu-utils \
+ python-docutils \
+ python-simplejson \
+ python-pyparsing \
+ python-pyinotify \
+ python-pycurl \
+ python-ipaddr \
+ python-yaml \
+ python-paramiko
+
+ in_chroot -- \
+ $APT_INSTALL python-setuptools python-dev build-essential
+
+ in_chroot -- \
+ easy_install \
+ logilab-astng==0.24.1 \
+ logilab-common==0.58.3 \
+ mock==1.0.1 \
+ pylint==0.26.0
+
+ in_chroot -- \
+ easy_install \
+ sphinx==1.1.3 \
+ pep8==1.3.3 \
+ coverage==3.4 \
+ bitarray==0.8.0
+
+ in_chroot -- \
+ cabal update
+
+ in_chroot -- \
+ cabal install --global \
+ blaze-builder==0.3.1.1 \
+ network==2.3 \
+ regex-pcre==0.94.4 \
+ hinotify==0.3.2 \
+ hslogger==1.1.4 \
+ quickcheck==2.5.1.1 \
+ attoparsec==0.10.1.1 \
+ crypto==4.2.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 \
+ snap-server==0.8.1 \
+ json==0.4.4
+
+ in_chroot -- \
+ cabal install --global \
+ hunit==1.2.5.2 \
+ happy==1.18.10 \
+ hlint==1.8.43 \
+ hscolour==1.20.3 \
+ temporary==1.1.2.3 \
+ test-framework==0.6.1 \
+ test-framework-hunit==0.2.7 \
+ 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
+
+;;
+
+ wheezy)
+
+ in_chroot -- \
+ $APT_INSTALL \
+ autoconf automake ghc ghc-haddock libghc-network-dev \
+ libghc-test-framework{,-hunit,-quickcheck2}-dev \
+ libghc-json-dev libghc-curl-dev libghc-hinotify-dev \
+ libghc-parallel-dev libghc-utf8-string-dev \
+ libghc-hslogger-dev libghc-crypto-dev \
+ libghc-regex-pcre-dev libghc-attoparsec-dev \
+ libghc-vector-dev libghc-temporary-dev \
+ libghc-snap-server-dev libpcre3 libpcre3-dev hscolour hlint pandoc \
+ python-setuptools python-sphinx python-epydoc graphviz python-pyparsing \
+ python-simplejson python-pycurl python-paramiko \
+ python-bitarray python-ipaddr python-yaml qemu-utils python-coverage pep8 \
+ shelltestrunner python-dev pylint openssh-client vim git git-email
+
+ # We need version 0.9.4 of pyinotify because the packaged version, 0.9.3, is
+ # incompatibile with the packaged version of python-epydoc 3.0.1.
+ # Reason: a logger class in pyinotify calculates its superclasses at
+ # runtime, which clashes with python-epydoc's static analysis phase.
+ #
+ # Problem introduced in:
+ # https://github.com/seb-m/pyinotify/commit/2c7e8f8959d2f8528e0d90847df360
+ # and "fixed" in:
+ # https://github.com/seb-m/pyinotify/commit/98c5f41a6e2e90827a63ff1b878596
+
+ in_chroot -- \
+ easy_install pyinotify==0.9.4
+
+;;
+
+ *)
+
+ in_chroot -- \
+ $APT_INSTALL \
+ autoconf automake ghc ghc-haddock libghc-network-dev \
+ libghc-test-framework{,-hunit,-quickcheck2}-dev \
+ libghc-json-dev libghc-curl-dev libghc-hinotify-dev \
+ libghc-parallel-dev libghc-utf8-string-dev \
+ libghc-hslogger-dev libghc-crypto-dev \
+ libghc-regex-pcre-dev libghc-attoparsec-dev \
+ libghc-vector-dev libghc-temporary-dev \
+ libghc-snap-server-dev libpcre3 libpcre3-dev hscolour hlint pandoc \
+ python-setuptools python-sphinx python-epydoc graphviz python-pyparsing \
+ python-simplejson python-pyinotify python-pycurl python-paramiko \
+ python-bitarray python-ipaddr python-yaml qemu-utils python-coverage pep8 \
+ shelltestrunner python-dev pylint openssh-client vim git git-email
+
+;;
+esac
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 python-mock \
- socat fping
-
-in_chroot -- \
- $APT_INSTALL python-paramiko qemu-utils
-
-in_chroot -- \
- easy_install affinity bitarray ipaddr
+ $APT_INSTALL sudo fakeroot rsync locales less socat
-#Haskell packages
in_chroot -- \
- $APT_INSTALL ghc6 \
- libghc6-parallel-dev libghc6-deepseq-dev \
- libghc6-curl-dev
+ locale-gen
in_chroot -- \
- $APT_INSTALL cabal-install
+ $APT_INSTALL lvm2 ssh bridge-utils iproute iputils-arping \
+ ndisc6 python-openssl openssl \
+ python-mock fping qemu-utils
in_chroot -- \
- cabal update
+ easy_install affinity
in_chroot -- \
- $APT_INSTALL libpcre3-dev
+ $APT_INSTALL \
+ python-epydoc debhelper quilt
-in_chroot -- \
- cabal install --global \
- 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 \
- crypto==4.2.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 \
- text==0.11.3.0 \
- vector==0.9.1 \
- json==0.4.4 \
- process==1.0.1.2
-
-#Python development tools
-in_chroot -- \
- $APT_INSTALL pandoc python-epydoc graphviz
+# extra debian packages
-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 \
- hscolour==1.20.3 \
- temporary==1.1.2.3 \
- test-framework==0.6.1 \
- test-framework-hunit==0.2.7 \
- test-framework-quickcheck2==0.2.12.3
-
-in_chroot -- \
- cabal install --global shelltestrunner
-
-#Tools for creating debian packages
-in_chroot -- \
- apt-get install python-docutils debhelper quilt
+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
echo "Chroot created. In order to run it:"
echo " * Copy the file $FINAL_CHROOT_CONF to $CONF_DIR/$FINAL_CHROOT_CONF"
echo " * Copy the file $COMP_FILEPATH to $CHROOT_DIR/$COMP_FILENAME"
-
echo "Then run \"schroot -c $CHROOTNAME\""