From b8006d61649338ee7285b2cd65860c5ff4d2c166 Mon Sep 17 00:00:00 2001 From: Ollie Charles Date: Thu, 16 Mar 2017 14:26:26 +0000 Subject: [PATCH] Stack-based Travis config --- .travis.yml | 84 ++++++++++++----------------------------------------- stack.yaml | 12 ++++++++ 2 files changed, 31 insertions(+), 65 deletions(-) create mode 100644 stack.yaml diff --git a/.travis.yml b/.travis.yml index 812e691..a3b0690 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,76 +1,30 @@ -# This file has been generated -- see https://github.com/hvr/multi-ghc-travis -language: c sudo: false +# Do not choose a language; we provide our own build tools. +language: generic + +# Caching so the next build will be fast too. cache: directories: - - $HOME/.cabsnap - - $HOME/.cabal/packages + - $HOME/.stack -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.24 GHCVER=8.0.2 - compiler: ": #GHC 8.0.2" - addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.2], sources: [hvr-ghc]}} +# Ensure necessary system libraries are present +addons: + apt: + packages: + - libgmp-dev before_install: - - unset CC - - export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH +# Download and unpack the stack executable +- mkdir -p ~/.local/bin +- export PATH=$HOME/.local/bin:$PATH +- travis_retry curl -L https://www.stackage.org/stack/linux-x86_64 | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack' 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 --enable-tests --enable-benchmarks --dry -v > installplan.txt - - sed -i -e '1,/^Resolving /d' installplan.txt; cat installplan.txt +# Build dependencies +- stack --no-terminal --install-ghc test --only-dependencies -# check whether current requested install-plan matches cached package-db snapshot - - if diff -u $HOME/.cabsnap/installplan.txt 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 --enable-tests --enable-benchmarks; - 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 build # this builds all libraries and executables (including tests/benchmarks) - - cabal test - - cabal check - - cabal sdist # tests that a source-distribution can be generated - -# Check that the resulting source distribution can be built & installed. -# If there are no other `.tar.gz` files in `dist`, this can be even simpler: -# `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 +# Build the package, its tests, and its docs and run the tests +- stack --no-terminal test --haddock --no-haddock-deps +- stack sdist # tests that a source-distribution can be generated diff --git a/stack.yaml b/stack.yaml new file mode 100644 index 0000000..7ba37ca --- /dev/null +++ b/stack.yaml @@ -0,0 +1,12 @@ +resolver: lts-8.5 + +packages: + - location: + git: http://github.com/tomjaguarpaw/haskell-opaleye + commit: master + extra-dep: true + - . + +extra-deps: + - one-liner-0.7 + - streaming-postgresql-simple-0.2.0.0