macos-install.sh 2.59 KB
#!/bin/sh
set -e

# Installation for Mac OS X from IHaskell repo directory.
# TODO Split out setup for installation from Hackage released versions.
#
# This script assumes use of Homebrew.
# It is assumed you already have GHC and Cabal installed through Homebrew
# and your environment set up to install executables through Cabal.
#
# Also, XCode command line tools must be installed.
#
# XQuartz is needed for Cairo and Pango.

function abort() {
    for line
    do
        echo >&2 "$line"
    done
    exit 1
}

brew --version >& /dev/null || abort  \
    "Homebrew needs to be installed." \
    "  Download from http://brew.sh/"

# Install IPython.
if command -v pip3 >/dev/null 2>&1
then
    PIP=pip3
elif command -v pip >/dev/null 2>&1
then
    PIP=pip
else
    abort \
        "Python pip needs to be installed." \
        "  One way is to install Homebrew Python:" \
        "  $ brew install python"
fi

$PIP --version >& /dev/null || abort \
    "Python $PIP needs to be installed." \
    "  One way is to install Homebrew Python:" \
    "  $ brew install python"

$PIP install -U 'ipython[all]'

[ -n "`brew --config | grep '^CLT:.*N/A'`" ] && abort \
    "You need to have XCode command line tools installed." \
    "  $ xcode-select --install"

ghc --version >& /dev/null || abort \
    "Please install ghc." \
    "  $ brew install ghc"

cabal --version >& /dev/null || abort \
    "Please install Cabal." \
    "  $ brew install cabal-install"

# Make sure to have basic tools installed.
cabal update
cabal install happy alex
cabal install cpphs
cabal install gtk2hs-buildtools

# Homebrew stuff.
brew update
brew ls --versions zeromq    | grep -q . || brew install zeromq
brew ls --versions libmagic  | grep -q . || brew install libmagic

# XQuartz is required: http://xquartz.macosforge.org/landing/
# The easiest way is through Homebrew.
brew tap Caskroom/cask
brew      ls --versions brew-cask  | grep -q . || brew install brew-cask
brew cask ls --versions xquartz    | grep -q . || brew cask install xquartz
brew      ls --versions cairo      | grep -q . || brew install cairo
brew      ls --versions pango      | grep -q . || brew install pango

# make cabal install magic, which won't work correctly if done using
# default flags, since Homebrew dumps libmagic into /usr/local/lib rather than /lib
brew_prefix=$(brew --prefix)
cabal install magic-1.1  --extra-lib "$brew_prefix/lib" --extra-include "$brew_prefix/include"

# For C compiler to pick up /usr/local and X11 stuff during Cabal builds.
# You may want to put this in your shell startup.
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:/opt/X11/lib/pkgconfig

./build.sh all