File: setup-dev.sh

package info (click to toggle)
ghc 8.0.1-17
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 55,080 kB
  • ctags: 9,332
  • sloc: haskell: 363,120; ansic: 54,900; sh: 4,782; makefile: 974; perl: 542; asm: 315; python: 306; xml: 154; lisp: 7
file content (34 lines) | stat: -rwxr-xr-x 1,224 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/bin/bash -x
SCRIPT_DIR="`dirname $0`"

die() {
    echo "$*"
    exit 1
}

setup() {
    # Extract parameters
    local NAME="$1"
    shift
    local DEPS="$@"
    # (Re-)create sandbox
    cabal sandbox delete # Ignore error status; probably just means sandbox doesn't exist
    cabal sandbox init || die "$NAME: Could not initialize sandbox"
    # Add dependencies
    for DEP in $DEPS; do
        cabal sandbox add-source "$DEP"
    done
    # Install dependencies
    cabal install --only-dependencies --enable-tests || die "$NAME: Could not install needed dependencies"
    # Build the 'Setup' executable
    ghc --make -threaded -i -i. Setup.hs || die "$NAME: Could not create 'Setup' executable"
    # Build the package
    local PACKAGEDB=`cabal exec -- sh -c 'echo $GHC_PACKAGE_PATH' | sed 's/:.*//'`
    echo "Cabal package DB location: $PACKAGEDB"
    ./Setup configure --enable-tests --package-db="$PACKAGEDB" || die "$NAME: 'configure' failed"
    ./Setup build || die "$NAME: 'build' failed"
}

# Build
(cd ${SCRIPT_DIR}/Cabal         && setup "Cabal"                 ) || die "Failed to build Cabal"
(cd ${SCRIPT_DIR}/cabal-install && setup "cabal-install" ../Cabal) || die "Failed to build cabal-install"