forked from ghcjs/cabal
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsetup-dev.sh
executable file
·36 lines (33 loc) · 1.25 KB
/
setup-dev.sh
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
35
36
#!/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"
# Run tests
./Setup test || die "$1 'test' 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"