Skip to content

Commit bb4b772

Browse files
committed
Build also with stack on travis (benchmarks)
1 parent 973feb4 commit bb4b772

File tree

3 files changed

+86
-52
lines changed

3 files changed

+86
-52
lines changed

.travis.yml

Lines changed: 17 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
# This file has been generated -- see https://github.com/hvr/multi-ghc-travis
1+
# This file has been modified from generated version
2+
# see https://github.com/hvr/multi-ghc-travis
23
language: c
34
sudo: false
45

@@ -8,6 +9,7 @@ notifications:
89

910
cache:
1011
directories:
12+
- $HOME/.stack
1113
- $HOME/.cabsnap
1214
- $HOME/.cabal/packages
1315

@@ -17,75 +19,38 @@ before_cache:
1719

1820
matrix:
1921
include:
20-
- env: CABALVER=1.16 GHCVER=7.4.2
22+
- env: BUILD=cabal CABALVER=1.16 GHCVER=7.4.2
2123
compiler: ": #GHC 7.4.2"
2224
addons: {apt: {packages: [cabal-install-1.16,ghc-7.4.2], sources: [hvr-ghc]}}
23-
- env: CABALVER=1.16 GHCVER=7.6.3
25+
- env: BUILD=cabal CABALVER=1.16 GHCVER=7.6.3
2426
compiler: ": #GHC 7.6.3"
2527
addons: {apt: {packages: [cabal-install-1.16,ghc-7.6.3], sources: [hvr-ghc]}}
26-
- env: CABALVER=1.18 GHCVER=7.8.4
28+
- env: BUILD=cabal CABALVER=1.18 GHCVER=7.8.4
2729
compiler: ": #GHC 7.8.4"
2830
addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.4], sources: [hvr-ghc]}}
29-
- env: CABALVER=1.22 GHCVER=7.10.2
31+
- env: BUILD=cabal CABALVER=1.22 GHCVER=7.10.2
3032
compiler: ": #GHC 7.10.2"
3133
addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.2], sources: [hvr-ghc]}}
32-
- env: CABALVER=1.24 GHCVER=8.0.1
34+
- env: BUILD=cabal CABALVER=1.24 GHCVER=8.0.1
3335
compiler: ": #GHC 8.0.1"
3436
addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.1], sources: [hvr-ghc]}}
37+
- env: BUILD=stack CABALVER=1.22 GHCVER=7.10.3
38+
compiler: ": #GHC 7.10.3"
39+
addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3], sources: [hvr-ghc]}}
3540

3641
before_install:
3742
- unset CC
38-
- export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH
43+
- export PATH=$HOME/.local/bin:/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH
44+
# Download and unpack the stack executable
45+
- mkdir -p ~/.local/bin
46+
- travis_retry curl -L https://www.stackage.org/stack/linux-x86_64 | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack'
3947

4048
install:
41-
- cabal --version
42-
- echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]"
43-
- if [ -f $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz ];
44-
then
45-
zcat $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz >
46-
$HOME/.cabal/packages/hackage.haskell.org/00-index.tar;
47-
fi
48-
- travis_retry cabal update -v
49-
- sed -i 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config
50-
- cabal install --only-dependencies --enable-tests --enable-benchmarks --dry -v > installplan.txt
51-
- sed -i -e '1,/^Resolving /d' installplan.txt; cat installplan.txt
52-
53-
# check whether current requested install-plan matches cached package-db snapshot
54-
- if diff -u installplan.txt $HOME/.cabsnap/installplan.txt;
55-
then
56-
echo "cabal build-cache HIT";
57-
rm -rfv .ghc;
58-
cp -a $HOME/.cabsnap/ghc $HOME/.ghc;
59-
cp -a $HOME/.cabsnap/lib $HOME/.cabsnap/share $HOME/.cabsnap/bin $HOME/.cabal/;
60-
else
61-
echo "cabal build-cache MISS";
62-
rm -rf $HOME/.cabsnap;
63-
mkdir -p $HOME/.ghc $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin;
64-
cabal install --only-dependencies --enable-tests --enable-benchmarks;
65-
fi
66-
67-
# snapshot package-db on cache miss
68-
- if [ ! -d $HOME/.cabsnap ];
69-
then
70-
echo "snapshotting package-db to build-cache";
71-
mkdir $HOME/.cabsnap;
72-
cp -a $HOME/.ghc $HOME/.cabsnap/ghc;
73-
cp -a $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin installplan.txt $HOME/.cabsnap/;
74-
fi
49+
- travis/install.sh
7550

7651
# Here starts the actual work to be performed for the package under test;
7752
# any command which exits with a non-zero exit code causes the build to fail.
7853
script:
79-
- if [ -f configure.ac ]; then autoreconf -i; fi
80-
- cabal configure --enable-tests --enable-benchmarks -v2 # -v2 provides useful information for debugging
81-
- cabal build # this builds all libraries and executables (including tests/benchmarks)
82-
- cabal test
83-
- cabal sdist # tests that a source-distribution can be generated
84-
85-
# Check that the resulting source distribution can be built & installed.
86-
# If there are no other `.tar.gz` files in `dist`, this can be even simpler:
87-
# `cabal install --force-reinstalls dist/*-*.tar.gz`
88-
- SRC_TGZ=$(cabal info . | awk '{print $2;exit}').tar.gz &&
89-
(cd dist && cabal install --force-reinstalls "$SRC_TGZ")
54+
- travis/script.sh
9055

9156
# EOF

travis/install.sh

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
#!/bin/sh
2+
3+
set -e
4+
5+
cabal --version
6+
echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]"
7+
stack --version
8+
9+
case $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
23+
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
37+
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+
;;
47+
esac

travis/script.sh

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/bin/sh
2+
3+
set -x
4+
5+
case $BUILD in
6+
stack)
7+
stack build --test --haddock
8+
;;
9+
cabal)
10+
if [ -f configure.ac ]; then autoreconf -i; fi
11+
cabal configure --enable-tests --enable-benchmarks -v2 # -v2 provides useful information for debugging
12+
cabal build # this builds all libraries and executables (including tests/benchmarks)
13+
cabal test
14+
cabal sdist # tests that a source-distribution can be generated
15+
16+
# Check that the resulting source distribution can be built & installed.
17+
# If there are no other `.tar.gz` files in `dist`, this can be even simpler:
18+
# `cabal install --force-reinstalls dist/*-*.tar.gz`
19+
SRC_TGZ=$(cabal info . | awk '{print $2;exit}').tar.gz &&
20+
(cd dist && cabal install --force-reinstalls "$SRC_TGZ")
21+
;;
22+
esac

0 commit comments

Comments
 (0)