Skip to content

Commit

Permalink
Merge pull request #64 from phadej/travis-update
Browse files Browse the repository at this point in the history
Update travis config (dependency cache)
  • Loading branch information
codedmart committed May 30, 2016
2 parents a1de32a + d55967b commit c68efac
Show file tree
Hide file tree
Showing 2 changed files with 82 additions and 29 deletions.
103 changes: 75 additions & 28 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,29 +1,30 @@
# NB: don't set `language: haskell` here

# The following enables several GHC versions to be tested; often it's enough to test only against the last release in a major GHC version. Feel free to omit lines listings versions you don't need/want testing for.
env:
#- CABALVER=1.16 GHCVER=7.6.1
#- CABALVER=1.16 GHCVER=7.6.2
- CABALVER=1.18 GHCVER=7.6.3
#- CABALVER=1.18 GHCVER=7.8.1 # see note about Alex/Happy for GHC >= 7.8
#- CABALVER=1.18 GHCVER=7.8.2
#- CABALVER=1.18 GHCVER=7.8.3
- CABALVER=1.18 GHCVER=7.8.4
- CABALVER=1.22 GHCVER=7.10.2
- CABALVER=1.24 GHCVER=8.0.1

# Note: the distinction between `before_install` and `install` is not important.
before_install:
- travis_retry sudo add-apt-repository -y ppa:hvr/ghc
- travis_retry sudo apt-get update
- travis_retry sudo apt-get install cabal-install-$CABALVER ghc-$GHCVER # see note about happy/alex
- export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH
# This file has been generated -- see https://github.com/hvr/multi-ghc-travis
language: c
# sudo: false

install:
- cabal --version
- echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]"
- travis_retry cabal update
- cabal install --only-dependencies --enable-tests
cache:
directories:
- $HOME/.cabsnap
- $HOME/.cabal/packages

before_cache:
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/build-reports.log
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/00-index.tar

matrix:
include:
- env: CABALVER=1.16 GHCVER=7.6.3 NOBENCH=YES
compiler: ": #GHC 7.6.3"
addons: {apt: {packages: [cabal-install-1.16,ghc-7.6.3], sources: [hvr-ghc]}}
- env: CABALVER=1.18 GHCVER=7.8.4
compiler: ": #GHC 7.8.4"
addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.4], sources: [hvr-ghc]}}
- env: CABALVER=1.22 GHCVER=7.10.3
compiler: ": #GHC 7.10.3"
addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3], sources: [hvr-ghc]}}
- env: CABALVER=1.24 GHCVER=8.0.1
compiler: ": #GHC 8.0.1"
addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.1], sources: [hvr-ghc]}}

before_script:
- source /etc/lsb-release && echo "deb http://download.rethinkdb.com/apt $DISTRIB_CODENAME main" | sudo tee /etc/apt/sources.list.d/rethinkdb.list
Expand All @@ -32,11 +33,55 @@ before_script:
- sudo apt-get install rethinkdb
- rethinkdb --bind all &

# Here starts the actual work to be performed for the package under test; any command which exits with a non-zero exit code causes the build to fail.
before_install:
- unset CC
- export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH
- CABALOPTS="--enable-tests"
- if [ ! "x$NOBENCH" = "xYES" ]; then
CABALOPTS="$CABALOPTS --enable-benchmarks";
fi

install:
- cabal --version
- echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]"
- if [ -f $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz ];
then
zcat $HOME/.cabal/packages/hackage.haskell.org/00-index.tar.gz >
$HOME/.cabal/packages/hackage.haskell.org/00-index.tar;
fi
- travis_retry cabal update -v
- sed -i 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config
- cabal install --only-dependencies $CABALOPTS --dry -v > installplan.txt
- sed -i -e '1,/^Resolving /d' installplan.txt; cat installplan.txt

# check whether current requested install-plan matches cached package-db snapshot
- if diff -u installplan.txt $HOME/.cabsnap/installplan.txt;
then
echo "cabal build-cache HIT";
rm -rfv .ghc;
cp -a $HOME/.cabsnap/ghc $HOME/.ghc;
cp -a $HOME/.cabsnap/lib $HOME/.cabsnap/share $HOME/.cabsnap/bin $HOME/.cabal/;
else
echo "cabal build-cache MISS";
rm -rf $HOME/.cabsnap;
mkdir -p $HOME/.ghc $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin;
cabal install --only-dependencies $CABALOPTS;
fi

# snapshot package-db on cache miss
- if [ ! -d $HOME/.cabsnap ];
then
echo "snapshotting package-db to build-cache";
mkdir $HOME/.cabsnap;
cp -a $HOME/.ghc $HOME/.cabsnap/ghc;
cp -a $HOME/.cabal/lib $HOME/.cabal/share $HOME/.cabal/bin installplan.txt $HOME/.cabsnap/;
fi

# Here starts the actual work to be performed for the package under test;
# any command which exits with a non-zero exit code causes the build to fail.
script:
- if [ -f configure.ac ]; then autoreconf -i; fi
#- cabal configure --enable-tests --enable-benchmarks -v2 # -v2 provides useful information for debugging
- cabal configure --enable-tests
- cabal configure $CABALOPTS -v2 # -v2 provides useful information for debugging
- cabal build # this builds all libraries and executables (including tests/benchmarks)
- cabal test
- cabal check
Expand All @@ -47,3 +92,5 @@ script:
# `cabal install --force-reinstalls dist/*-*.tar.gz`
- SRC_TGZ=$(cabal info . | awk '{print $2;exit}').tar.gz &&
(cd dist && cabal install --force-reinstalls "$SRC_TGZ")

# EOF
8 changes: 7 additions & 1 deletion rethinkdb.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,12 @@ description:
category: Database
author: Etienne Laurin, Brandon Martin

tested-with:
GHC==7.6.3,
GHC==7.8.4,
GHC==7.10.3,
GHC==8.0.1

source-repository head
type: git
location: https://github.com/atnnn/haskell-rethinkdb
Expand All @@ -28,7 +34,7 @@ library
aeson >=0.7 && <0.12,
bytestring ==0.10.*,
containers ==0.5.*,
data-default >=0.5 && <0.7,
data-default >=0.5 && <0.8,
network >=2.4 && <2.7,
mtl >=2.1 && <2.3,
vector >=0.10 && <0.12,
Expand Down

0 comments on commit c68efac

Please sign in to comment.