| #!/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\"" |