on master help sign in
58 lines 2.0 kB history raw
1#!/bin/sh
3set -ex
5cabal --version
6echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]"
7stack --version
9case $BUILD in
10 hlint)
11 echo "Downloading hlint"
12 curl -sSL https://raw.github.com/ndmitchell/hlint/master/misc/run.sh > hlint.sh
13 chmod +x hlint.sh
14 ;;
15 stack)
16 stack --no-terminal --skip-ghc-check setup
17 stack --no-terminal --skip-ghc-check test --only-snapshot
18 ;;
19 cabal)
20 if [ -f $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz ]
21 then
22 zcat $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz > $HOME/.cabal/packages/hackage.haskell.org/00-index.tar
23 fi
24 cabal update -v || cabal update -v
25 sed -i 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config
26 cabal install --only-dependencies --enable-tests --enable-benchmarks --dry -v > installplan.txt
27 sed -i -e '1,/^Resolving /d' installplan.txt; cat installplan.txt
29 # check whether current requested install-plan matches cached package-db snapshot
30 if diff -u installplan.txt $HOME/.cabsnap/installplan.txt;
31 then
32 echo "cabal build-cache HIT";
33 rm -rfv .ghc;
34 cp -a $HOME/.cabsnap/ghc $HOME/.ghc;
35 cp -a $HOME/.cabsnap/lib $HOME/.cabsnap/share $HOME/.cabsnap/bin $HOME/.cabal/;
36 else
37 echo "cabal build-cache MISS";
38 rm -rf $HOME/.cabsnap;
39 mkdir -p $HOME/.ghc $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin;
40 cabal install --only-dependencies --enable-tests --enable-benchmarks;
41 fi
43 # snapshot package-db on cache miss
44 if [ ! -d $HOME/.cabsnap ];
45 then
46 echo "snapshotting package-db to build-cache";
47 mkdir $HOME/.cabsnap;
48 cp -a $HOME/.ghc $HOME/.cabsnap/ghc;
49 cp -a $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin installplan.txt $HOME/.cabsnap/;
50 fi
51 ;;
52 cabal2)
53 cabal v2-update -v
54 sed -i 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config
56 cabal v2-build --only-dependencies --enable-tests --enable-benchmarks --dry
57 ;;
58esac