blob: d1160f692f981974523d1e1a1f7a476b2fb0c581 [file] [log] [blame]
#!/bin/bash
#Requirements for this script to work:
#* Make sure that the user who uses the chroot is in group 'src', or change
# the ${GROUP} variable to a group that contains the user.
#* Add any path of the host system that you want to access inside the chroot
# to the /etc/schroot/default/fstab file. This is important in particular if
# your homedir is not in /home.
#* Add this to your /etc/fstab:
# tmpfs /var/lib/schroot/mount tmpfs defaults,size=3G 0 0
# tmpfs /var/lib/schroot/unpack tmpfs defaults,size=3G 0 0
#Configuration
: ${ARCH:=amd64}
: ${DIST_RELEASE:=wheezy}
: ${VARIANT:=}
: ${CONF_DIR:=/etc/schroot/chroot.d}
: ${CHROOT_DIR:=/srv/chroot}
: ${ALTERNATIVE_EDITOR:=/usr/bin/vim.basic}
: ${CHROOT_FINAL_HOOK:=/bin/true}
: ${GROUP:=src}
# Additional Variables taken from the environmen
# DATA_DIR
# CHROOT_EXTRA_DEBIAN_PACKAGES
# make the appended variant name more readable
[ -n "$VARIANT" ] && VARIANT="-${VARIANT#-}"
#Automatically generated variables
CHROOTNAME=$DIST_RELEASE-$ARCH$VARIANT
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
TEMP_DATA_DIR=`mktemp -d`
ACTUAL_DATA_DIR=$DATA_DIR
ACTUAL_DATA_DIR=${ACTUAL_DATA_DIR:-$TEMP_DATA_DIR}
SHA1_LIST='
cabal-install-1.18.0.2.tar.gz 2d1f7a48d17b1e02a1e67584a889b2ff4176a773
cabal-install-1.22.4.0.tar.gz b98eea96d321cdeed83a201c192dac116e786ec2
cabal-install-1.22.6.0.tar.gz d474b0eef6944af1abef92419cea13cee50993f3
ghc-7.6.3-i386-unknown-linux.tar.bz2 f042b4171a2d4745137f2e425e6949c185f8ea14
ghc-7.6.3-x86_64-unknown-linux.tar.bz2 46ec3f3352ff57fba0dcbc8d9c20f7bcb6924b77
ghc-7.8.4-i386-unknown-linux-deb7.tar.bz2 4f523f854c37a43b738359506a89a37a9fa9fc5f
ghc-7.8.4-x86_64-unknown-linux-deb7.tar.bz2 3f68321b064e5c1ffcb05838b85bcc00aa2315b4
ghc-7.10.2-i386-unknown-linux-deb7.tar.bz2 c759ab9af566f5c3c9b75b702615f1d0c2f999fd
ghc-7.10.2-x86_64-unknown-linux-deb7.tar.bz2 f028e4a07995353a47286478fc8644f66defa227
'
# export all variables needed in the schroot
export ARCH SHA1_LIST
# Use gzip --rsyncable if available, to speed up transfers of generated files
# The environment variable GZIP is read automatically by 'gzip',
# see ENVIRONMENT in gzip(1).
gzip --rsyncable </dev/null >/dev/null 2>&1 && export GZIP="--rsyncable"
#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
#Create configuration dir and files if they do not exist
if [ ! -d $ACTUAL_DATA_DIR ]
then
mkdir $ACTUAL_DATA_DIR
echo "The data directory"
echo " $ACTUAL_DATA_DIR"
echo "has been created."
fi
if [ ! -f $ACTUAL_DATA_DIR/final.schroot.conf.in ]
then
cat <<END >$ACTUAL_DATA_DIR/final.schroot.conf.in
[${CHROOTNAME}]
description=Debian ${DIST_RELEASE} ${ARCH}
groups=${GROUP}
source-root-groups=root
type=file
file=${CHROOT_DIR}/${COMP_FILENAME}
END
echo "The file"
echo " $ACTUAL_DATA_DIR/final.schroot.conf.in"
echo "has been created with default configurations."
fi
if [ ! -f $ACTUAL_DATA_DIR/temp.schroot.conf.in ]
then
cat <<END >$ACTUAL_DATA_DIR/temp.schroot.conf.in
[${CHNAME}]
description=Debian ${DIST_RELEASE}${VARIANT} ${ARCH}
directory=${CHDIR}
groups=${GROUP}
users=root
type=directory
END
echo "The file"
echo " $ACTUAL_DATA_DIR/temp.schroot.conf.in"
echo "has been created with default configurations."
fi
#Stop on errors
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 / '
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
cat $ACTUAL_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"
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
# Functions for downloading and checking Haskell core components.
# The functions run commands within the schroot.
# arguments : file_name expected_sha1
function verify_sha1 {
local SUM="$( in_chroot -- sha1sum "$1" | awk '{print $1;exit}' )"
if [ "$SUM" != "$2" ] ; then
echo "ERROR: The SHA1 sum $SUM of $1 doesn't match $2." >&2
return 1
else
echo "SHA1 of $1 verified correct."
fi
}
# arguments: URL
function lookup_sha1 {
grep -o "${1##*/}"'\s\+[0-9a-fA-F]*' <<<"$SHA1_LIST" | awk '{print $2;exit}'
}
# arguments : file_name URL
function download {
local FNAME="$1"
local URL="$2"
in_chroot -- wget --no-check-certificate --output-document="$FNAME" "$URL"
verify_sha1 "$FNAME" "$( lookup_sha1 "$URL" )"
}
function install_ghc {
local GHC_ARCH=$ARCH
local TDIR=$( schroot -c $CHNAME -d / -- mktemp -d )
[ -n "$TDIR" ]
if [ "$ARCH" == "amd64" ] ; then
download "$TDIR"/ghc.tar.bz2 \
http://www.haskell.org/ghc/dist/${GHC_VERSION}/ghc-${GHC_VERSION}-x86_64-unknown-linux${GHC_VARIANT}.tar.bz2
elif [ "$ARCH" == "i386" ] ; then
download "$TDIR"/ghc.tar.bz2 \
http://www.haskell.org/ghc/dist/${GHC_VERSION}/ghc-${GHC_VERSION}-i386-unknown-linux${GHC_VARIANT}.tar.bz2
else
echo "Don't know what GHC to download for architecture $ARCH" >&2
return 1
fi
schroot -c $CHNAME -d "$TDIR" -- \
tar xjf ghc.tar.bz2
schroot -c $CHNAME -d "$TDIR/ghc-${GHC_VERSION}" -- \
./configure --prefix=/usr/local
schroot -c $CHNAME -d "$TDIR/ghc-${GHC_VERSION}" -- \
make install
schroot -c $CHNAME -d "/" -- \
rm -rf "$TDIR"
}
function install_cabal {
local TDIR=$( schroot -c $CHNAME -d / -- mktemp -d )
[ -n "$TDIR" ]
download "$TDIR"/cabal-install.tar.gz \
http://www.haskell.org/cabal/release/cabal-install-${CABAL_INSTALL_VERSION}/cabal-install-${CABAL_INSTALL_VERSION}.tar.gz
schroot -c $CHNAME -d "$TDIR" -- \
tar xzf cabal-install.tar.gz
schroot -c $CHNAME -d "$TDIR/cabal-install-${CABAL_INSTALL_VERSION}" -- \
bash -c 'EXTRA_CONFIGURE_OPTS="--enable-library-profiling" ./bootstrap.sh --global'
schroot -c $CHNAME -d "/" -- \
rm -rf "$TDIR"
}
case ${DIST_RELEASE}${VARIANT} in
squeeze)
GHC_VERSION="7.6.3"
GHC_VARIANT=""
CABAL_INSTALL_VERSION="1.18.0.2"
CABAL_LIB_VERSION=">=1.18.0 && <1.19"
export GHC_VERSION GHC_VARIANT CABAL_INSTALL_VERSION
# do not install libghc6-network-dev, since it's too old, and just
# confuses the dependencies
in_chroot -- \
$APT_INSTALL \
autoconf automake \
zlib1g-dev \
libgmp3-dev \
libcurl4-gnutls-dev \
libpcre3-dev \
happy \
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 \
unittest2==0.5.1 \
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
install_ghc
install_cabal
in_chroot -- \
cabal update
# sinec we're using Cabal >=1.16, we can use the parallel install option
in_chroot -- \
cabal install --global -j --enable-library-profiling \
attoparsec-0.11.1.0 \
base64-bytestring-1.0.0.1 \
blaze-builder-0.3.3.2 \
case-insensitive-1.1.0.3 \
Crypto-4.2.5.1 \
curl-1.3.8 \
happy \
hashable-1.2.1.0 \
hinotify-0.3.6 \
hscolour-1.20.3 \
hslogger-1.2.3 \
json-0.7 \
lifted-base-0.2.2.0 \
lens-4.0.4 \
MonadCatchIO-transformers-0.3.0.0 \
network-2.4.1.2 \
parallel-3.2.0.4 \
parsec-3.1.3 \
regex-pcre-0.94.4 \
temporary-1.2.0.1 \
vector-0.10.9.1 \
zlib-0.5.4.1 \
\
'hlint>=1.9.12' \
HUnit-1.2.5.2 \
QuickCheck-2.6 \
test-framework-0.8.0.3 \
test-framework-hunit-0.3.0.1 \
test-framework-quickcheck2-0.3.0.2 \
\
snap-server-0.9.4.0 \
PSQueue-1.1 \
\
"Cabal $CABAL_LIB_VERSION" \
cabal-file-th-0.2.3 \
shelltestrunner
#Install selected packages from backports
in_chroot -- \
$APT_INSTALL -t squeeze-backports \
git \
git-email \
vim \
exuberant-ctags
;;
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 happy hscolour pandoc \
libghc-zlib-dev libghc-psqueue-dev \
cabal-install \
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 openssh-client vim git git-email exuberant-ctags
# 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 \
logilab-astng==0.24.1 \
logilab-common==0.58.3 \
mock==1.0.1 \
pylint==0.26.0 \
pep8==1.3.3
in_chroot -- \
easy_install pyinotify==0.9.4
in_chroot -- \
cabal update
in_chroot -- \
cabal install --global \
'base64-bytestring>=1' \
lens-3.10.2 \
'lifted-base>=0.1.2' \
'hlint>=1.9.12'
;;
jessie)
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 happy hscolour pandoc \
libghc-zlib-dev libghc-psqueue-dev \
libghc-base64-bytestring-dev libghc-lens-dev libghc-lifted-base-dev \
libghc-cabal-dev \
cabal-install \
python-setuptools python-sphinx python-epydoc graphviz python-pyparsing \
python-simplejson python-pycurl python-pyinotify python-paramiko \
python-bitarray python-ipaddr python-yaml qemu-utils python-coverage pep8 \
shelltestrunner python-dev pylint openssh-client \
vim git git-email exuberant-ctags
in_chroot -- \
cabal update
in_chroot -- \
cabal install --global \
'hlint>=1.9.12'
;;
jessie-ghc710)
GHC_VERSION="7.10.2"
GHC_VARIANT="-deb7"
CABAL_INSTALL_VERSION="1.22.6.0"
# the version of the Cabal library below must match the version used by
# CABAL_INSTALL_VERSION, see the dependencies of cabal-install
CABAL_LIB_VERSION=">=1.22.2 && <1.23"
export GHC_VERSION GHC_VARIANT CABAL_INSTALL_VERSION
in_chroot -- \
$APT_INSTALL \
autoconf automake \
zlib1g-dev \
libgmp3-dev \
libcurl4-openssl-dev \
libpcre3-dev \
happy \
hlint hscolour pandoc \
shelltestrunner \
graphviz qemu-utils \
python-docutils \
python-simplejson \
python-pyparsing \
python-pyinotify \
python-pycurl \
python-ipaddr \
python-yaml \
python-paramiko \
git \
git-email \
vim
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
install_ghc
install_cabal
in_chroot -- \
cabal update
in_chroot -- \
cabal install --global \
HUnit-1.2.5.2 \
PSQueue-1.1 \
StateVar-1.1.0.0 \
ansi-terminal-0.6.2.1 \
ansi-wl-pprint-0.6.7.2 \
base-orphans-0.4.1 \
base64-bytestring-1.0.0.1 \
blaze-builder-0.4.0.1 \
bytestring-builder-0.10.6.0.0 \
bytestring-mmap-0.2.2 \
curl-1.3.8 \
enumerator-0.4.20 \
extensible-exceptions-0.1.1.4 \
hashable-1.2.3.3 \
case-insensitive-1.2.0.4 \
hinotify-0.3.7 \
hostname-1.0 \
hslogger-1.2.9 \
monads-tf-0.1.0.2 \
MonadCatchIO-transformers-0.3.1.3 \
nats-1 \
parallel-3.2.0.6 \
prelude-extras-0.4 \
primitive-0.6 \
reflection-2 \
regex-base-0.93.2 \
regex-pcre-0.94.4 \
regex-posix-0.95.2 \
scientific-0.3.3.8 \
attoparsec-0.12.1.6 \
attoparsec-enumerator-0.3.4 \
streaming-commons-0.1.12.1 \
blaze-builder-enumerator-0.2.1.0 \
syb-0.5.1 \
json-0.9.1 \
tagged-0.8.1 \
tf-random-0.5 \
QuickCheck-2.7.6 \
Crypto-4.2.5.1 \
transformers-compat-0.4.0.4 \
distributive-0.4.4 \
exceptions-0.8.0.2 \
temporary-1.2.0.3 \
transformers-base-0.4.4 \
monad-control-1.0.0.4 \
lifted-base-0.2.3.6 \
unix-compat-0.4.1.4 \
unordered-containers-0.2.5.1 \
semigroups-0.16.2.2 \
bifunctors-5 \
utf8-string-0.3.8 \
vector-0.11.0.0 \
void-0.7 \
contravariant-1.3.2 \
comonad-4.2.7.2 \
profunctors-5.1.1 \
semigroupoids-5.0.0.2 \
free-4.12.1 \
adjunctions-4.2.1 \
kan-extensions-4.2.2 \
lens-4.12.3 \
xml-1.3.14 \
test-framework-0.8.1.1 \
test-framework-hunit-0.3.0.1 \
test-framework-quickcheck2-0.3.0.3 \
zlib-bindings-0.1.1.5 \
zlib-enum-0.2.3.1 \
snap-core-0.9.7.2 \
snap-server-0.9.5.1 \
;;
jessie-ghc78)
GHC_VERSION="7.8.4"
GHC_VARIANT="-deb7"
CABAL_INSTALL_VERSION="1.22.4.0"
# the version of the Cabal library below must match the version used by
# CABAL_INSTALL_VERSION, see the dependencies of cabal-install
CABAL_LIB_VERSION=">=1.22.2 && <1.23"
export GHC_VERSION GHC_VARIANT CABAL_INSTALL_VERSION
in_chroot -- \
$APT_INSTALL \
autoconf automake \
zlib1g-dev \
libgmp3-dev \
libcurl4-openssl-dev \
libpcre3-dev \
happy \
hlint hscolour pandoc \
graphviz qemu-utils \
python-docutils \
python-simplejson \
python-pyparsing \
python-pyinotify \
python-pycurl \
python-ipaddr \
python-yaml \
python-paramiko \
git \
git-email \
vim
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
install_ghc
install_cabal
in_chroot -- \
cabal update
# since we're using Cabal >=1.16, we can use the parallel install option
in_chroot -- \
cabal install --global -j --enable-library-profiling \
attoparsec==0.12.1.6 \
base64-bytestring==1.0.0.1 \
blaze-builder==0.4.0.1 \
case-insensitive==1.2.0.4 \
Crypto==4.2.5.1 \
curl==1.3.8 \
happy==1.19.5 \
hashable==1.2.3.2 \
hinotify==0.3.7 \
hscolour==1.23 \
hslogger==1.2.8 \
json==0.9.1 \
lifted-base==0.2.3.6 \
lens==4.9.1 \
MonadCatchIO-transformers==0.3.1.3 \
network==2.6.0.2 \
parallel==3.2.0.6 \
parsec==3.1.7 \
regex-pcre==0.94.4 \
temporary==1.2.0.3 \
vector==0.10.12.3 \
zlib==0.5.4.2 \
\
hlint==1.9.20 \
HUnit==1.2.5.2 \
QuickCheck==2.8.1 \
test-framework==0.8.1.1 \
test-framework-hunit==0.3.0.1 \
test-framework-quickcheck2==0.3.0.3 \
\
snap-server==0.9.5.1 \
\
"Cabal $CABAL_LIB_VERSION" \
cabal-file-th==0.2.3 \
shelltestrunner==1.3.5
;;
precise)
# ghc, git-email and other dependencies are hosted in the universe
# repository, which is not enabled by default.
echo "Adding universe repository..."
cat > $CHDIR/etc/apt/sources.list.d/universe.list <<EOF
deb http://archive.ubuntu.com/ubuntu precise universe
EOF
in_chroot -- \
apt-get update
echo "Installing packages"
in_chroot -- \
$APT_INSTALL \
autoconf automake ghc ghc-haddock \
libghc-curl-dev libghc-hinotify-dev \
libghc-parallel-dev libghc-utf8-string-dev \
libghc-crypto-dev \
libghc-attoparsec-dev \
libghc-vector-dev libghc-temporary-dev libghc-psqueue-dev \
libghc-cabal-dev \
cabal-install \
libpcre3 libpcre3-dev happy hscolour 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 \
python-dev pylint openssh-client vim git git-email exuberant-ctags \
build-essential
in_chroot -- \
easy_install \
logilab-astng==0.24.1 \
logilab-common==0.58.3 \
mock==1.0.1 \
pylint==0.26.0 \
pep8==1.3.3
in_chroot -- \
cabal update
# Precise has network-2.4.0.0, which breaks, see
# https://github.com/haskell/network/issues/60
in_chroot -- \
cabal install --global \
'base64-bytestring>=1' \
hslogger-1.2.3 \
'hlint>=1.9.12' \
json-0.7 \
lens-3.10.2 \
'lifted-base>=0.1.2' \
'network>=2.4.0.1' \
'regex-pcre>=0.94.4' \
parsec-3.1.3 \
shelltestrunner \
'snap-server>=0.8.1' \
test-framework-0.8.0.3 \
test-framework-hunit-0.3.0.1 \
test-framework-quickcheck2-0.3.0.2 \
'transformers>=0.3.0.0' \
zlib-0.5.4.2
;;
*)
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-psqueue-dev \
libghc-snap-server-dev libpcre3 libpcre3-dev happy hscolour pandoc \
libghc-lens-dev libghc-lifted-base-dev \
libghc-cabal-dev \
cabal-install \
libghc-base64-bytestring-dev \
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 exuberant-ctags \
build-essential
in_chroot -- \
cabal update
in_chroot -- \
cabal install --global \
'hlint>=1.9.12'
;;
esac
# print what packages and versions are installed:
in_chroot -- \
cabal list --installed --simple-output
in_chroot -- \
$APT_INSTALL sudo fakeroot rsync locales less socat
# Configure the locale
case $DIST_RELEASE in
precise)
in_chroot -- \
$APT_INSTALL language-pack-en
;;
*)
echo "en_US.UTF-8 UTF-8" >> $CHDIR/etc/locale.gen
in_chroot -- \
locale-gen
;;
esac
in_chroot -- \
$APT_INSTALL lvm2 ssh bridge-utils iproute iputils-arping \
ndisc6 python-openssl openssl \
python-mock fping qemu-utils
in_chroot -- \
easy_install psutil
in_chroot -- \
easy_install jsonpointer \
jsonpointer \
jsonpatch
in_chroot -- \
$APT_INSTALL \
python-epydoc 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
tar czf $COMP_FILEPATH ./*
cd $ROOT
rm -rf $CHDIR
rm -f $TEMP_CHROOT_CONF
rm -rf $TEMP_DATA_DIR
echo "Chroot created. In order to run it:"
echo " * sudo cp $FINAL_CHROOT_CONF $CONF_DIR/$FINAL_CHROOT_CONF"
echo " * sudo mkdir -p $CHROOT_DIR"
echo " * sudo cp $COMP_FILEPATH $CHROOT_DIR/$COMP_FILENAME"
echo "Then run \"schroot -c $CHROOTNAME\""