on 1.2.1.0 help sign in
47 lines 1.7 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 stack)
11 stack --no-terminal --skip-ghc-check setup
12 stack --no-terminal --skip-ghc-check test --only-snapshot
13 ;;
14 cabal)
15 if [ -f $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz ]
16 then
17 zcat $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz > $HOME/.cabal/packages/hackage.haskell.org/00-index.tar
18 fi
19 cabal update -v || cabal update -v
20 sed -i 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config
21 cabal install --only-dependencies --enable-tests --enable-benchmarks --dry -v > installplan.txt
22 sed -i -e '1,/^Resolving /d' installplan.txt; cat installplan.txt
24 # check whether current requested install-plan matches cached package-db snapshot
25 if diff -u installplan.txt $HOME/.cabsnap/installplan.txt;
26 then
27 echo "cabal build-cache HIT";
28 rm -rfv .ghc;
29 cp -a $HOME/.cabsnap/ghc $HOME/.ghc;
30 cp -a $HOME/.cabsnap/lib $HOME/.cabsnap/share $HOME/.cabsnap/bin $HOME/.cabal/;
31 else
32 echo "cabal build-cache MISS";
33 rm -rf $HOME/.cabsnap;
34 mkdir -p $HOME/.ghc $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin;
35 cabal install --only-dependencies --enable-tests --enable-benchmarks;
36 fi
38 # snapshot package-db on cache miss
39 if [ ! -d $HOME/.cabsnap ];
40 then
41 echo "snapshotting package-db to build-cache";
42 mkdir $HOME/.cabsnap;
43 cp -a $HOME/.ghc $HOME/.cabsnap/ghc;
44 cp -a $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin installplan.txt $HOME/.cabsnap/;
45 fi
46 ;;
47esac