#!/bin/zsh set -e sudo true last-word() { last= for i in $*; do last=$i done print $last } install-ghc() { ver=${1/ghc-/} print "===> GHC $ver" sudo stow -d /opt -t /usr/local $1 if [[ $ver == 6.8.3 ]] || [[ $ver == 6.10.4 ]]; then export runhaskell=/opt/ghc-6.12.3/bin/runhaskell else export runhaskell=/usr/local/bin/runhaskell fi rehash cabal install random extensible-exceptions >& /dev/null || true if [[ $(last-word $(ghc --version)) != $ver ]] && [[ $ver != head ]]; then print 'Version mismatch!' remove-ghc exit 1 fi } remove-ghc() { sudo stow -d /opt -t /usr/local -D $1 export runhaskell=runhaskell rehash print } find-package() { last-word $(sed '/using$/{N;s/\n/ /}' log|grep "using $1") } run-cabal() { rm -rf dist if $runhaskell Setup.lhs configure $* --user -v 2>&1 | grep Flags >&2 && $runhaskell Setup.lhs build >&2; then print "OK, $(find-package base) $(find-package extensible-exceptions)" else print 'Failed!' fi } build-quickcheck() { print -n "Base-4: " run-cabal -fbase4 print -n "Base-3: " run-cabal -f-base4 print -n "No options: " run-cabal } rm -f log for i in /opt/ghc-*; do ghc=$(basename $i) install-ghc $ghc build-quickcheck 2>>log remove-ghc $ghc done print "===> System GHC: v$(last-word $(ghc --version))" build-quickcheck 2>>log