install-haskell/install-haskell.sh

73 lines
2 KiB
Bash
Raw Normal View History

2014-08-16 18:31:10 +00:00
#!/usr/bin/env zsh
ghcversion="7.8.3"
2014-08-17 10:04:01 +00:00
cabalversion="1.20.0.1"
2014-08-16 18:31:10 +00:00
archi=$(uname -m)
if [[ $(uname -s) = "Darwin" ]]; then
os="apple-darwin"
cabalos="apple-darwin-maverick"
else
os="unknown-linux-deb7"
cabalos="unknown-linux"
fi
tmpdir=/tmp/install-haskell
2014-08-16 18:31:10 +00:00
mkdir -p $tmpdir
cd $tmpdir
2014-08-17 10:04:01 +00:00
ghctar=ghc-${ghcversion}-${archi}-${os}.tar.xz
2014-08-17 09:33:16 +00:00
if [[ ! -e $ghctar ]]; then
2014-08-16 18:31:10 +00:00
echo "Downloading GHC..."
2014-08-17 09:33:16 +00:00
curl -O http://www.haskell.org/ghc/dist/${ghcversion}/$ghctar
2014-08-16 18:31:10 +00:00
else
echo "Using already downloaded GHC ($tmpdir)..."
fi
echo "Installing GHC..."
2014-08-17 09:33:16 +00:00
tar xJf $ghctar
2014-08-16 18:31:10 +00:00
cd ghc-${ghcversion}
./configure && make install
cd $tmpdir
echo "Downloading cabal..."
2014-08-17 10:04:01 +00:00
cabaltar=cabal-$cabalversion-${archi}-${cabalos}.tar.gz
2014-08-17 09:33:16 +00:00
if [[ ! -e $cabaltar ]]; then
curl -O http://www.haskell.org/cabal/release/cabal-install-$cabalversion/$cabaltar
2014-08-16 18:31:10 +00:00
else
echo "Using already downloaded cabal ($tmpdir)..."
fi
2014-08-17 09:33:16 +00:00
tar xzf $cabaltar
2014-08-17 09:24:19 +00:00
echo "Installing cabal..."
if [[ -e ./cabal ]]; then
mv cabal /usr/local/bin
else
mv ./dist/build/cabal/cabal /usr/local/bin
fi
2014-08-16 18:31:10 +00:00
echo "Init cabal..."
cabal info >/dev/null 2>&1
if [[ $1 = "kernel" ]]; then
echo "Using Stackage Exclusively..."
stackageurl="stackage:http://www.stackage.org/stackage/77fb1efe248e3160d1e7dee5a009a0c5713651ae"
2014-08-16 18:31:10 +00:00
else
echo "Using Stackage..."
stackageurl="stackage:http://www.stackage.org/stackage/3cb59cb0cfe26e0513c30a727d889e7b0d427efd"
2014-08-16 18:31:10 +00:00
fi
# use exclusive snapshot by default.
perl -pi.bak -e 's#^remote-repo: .*$#remote-repo: '$stackageurl'#' $HOME/.cabal/config
2014-08-16 18:31:10 +00:00
cabal update
echo "Install useful binaries"
2014-08-16 21:17:05 +00:00
cabal install -j alex happy
2014-08-16 18:31:10 +00:00
echo "Update your PATH in .profile for cabal binaries"
echo 'export PATH=$HOME/.cabal/bin:$PATH' >> $HOME/.profile
echo
echo "Congratulations"
echo "==============="
echo
echo "You should start using Haskell like a pro now"
echo "You shouldn't use cabal sandbox except if you know what you are doing."
echo "So if you follow a tutorial that use cabal sandbox, don't use it."
echo "Unless you don't mind killing some white bear and waiting a lot."