on wai-extra-3.0.24.3 help sign in
typeable/wai/.travis.yml
251 lines 9.8 kB history raw
1# This is the complex Travis configuration, which is intended for use
2# on open source libraries which need compatibility across multiple GHC
3# versions, must work with cabal-install, and should be
4# cross-platform. For more information and other options, see:
5#
6# https://docs.haskellstack.org/en/stable/travis_ci/
7#
8# Copy these contents into the root directory of your Github project in a file
9# named .travis.yml
11# Use new container infrastructure to enable caching
12sudo: false
14# Do not choose a language; we provide our own build tools.
15language: generic
17# Caching so the next build will be fast too.
18cache:
19 directories:
20 - $HOME/.ghc
21 - $HOME/.cabal
22 - $HOME/.stack
23 - $TRAVIS_BUILD_DIR/.stack-work
25# The different configurations we want to test. We have BUILD=cabal which uses
26# cabal-install, and BUILD=stack which uses Stack. More documentation on each
27# of those below.
29# We set the compiler values here to tell Travis to use a different
30# cache file per set of arguments.
32# If you need to have different apt packages for each combination in the
33# matrix, you can use a line such as:
34# addons: {apt: {packages: [libfcgi-dev,libgmp-dev]}}
35matrix:
36 include:
37 # We grab the appropriate GHC and cabal-install versions from hvr's PPA. See:
38 # https://github.com/hvr/multi-ghc-travis
39 #- env: BUILD=cabal GHCVER=7.0.4 CABALVER=1.16 HAPPYVER=1.19.5 ALEXVER=3.1.7
40 # compiler: ": #GHC 7.0.4"
41 # addons: {apt: {packages: [cabal-install-1.16,ghc-7.0.4,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
42 #- env: BUILD=cabal GHCVER=7.2.2 CABALVER=1.16 HAPPYVER=1.19.5 ALEXVER=3.1.7
43 # compiler: ": #GHC 7.2.2"
44 # addons: {apt: {packages: [cabal-install-1.16,ghc-7.2.2,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
45 #- env: BUILD=cabal GHCVER=7.4.2 CABALVER=1.16 HAPPYVER=1.19.5 ALEXVER=3.1.7
46 # compiler: ": #GHC 7.4.2"
47 # addons: {apt: {packages: [cabal-install-1.16,ghc-7.4.2,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
48 #- env: BUILD=cabal GHCVER=7.6.3 CABALVER=1.16 HAPPYVER=1.19.5 ALEXVER=3.1.7
49 # compiler: ": #GHC 7.6.3"
50 # addons: {apt: {packages: [cabal-install-1.16,ghc-7.6.3,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
51 #- env: BUILD=cabal GHCVER=7.8.4 CABALVER=1.18 HAPPYVER=1.19.5 ALEXVER=3.1.7
52 # compiler: ": #GHC 7.8.4"
53 # addons: {apt: {packages: [cabal-install-1.18,ghc-7.8.4,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
54 - env: BUILD=cabal GHCVER=7.10.3 CABALVER=1.22 HAPPYVER=1.19.5 ALEXVER=3.1.7
55 compiler: ": #GHC 7.10.3"
56 addons: {apt: {packages: [cabal-install-1.22,ghc-7.10.3,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
57 - env: BUILD=cabal GHCVER=8.0.2 CABALVER=1.24 HAPPYVER=1.19.5 ALEXVER=3.1.7
58 compiler: ": #GHC 8.0.2"
59 addons: {apt: {packages: [cabal-install-1.24,ghc-8.0.2,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
60 - env: BUILD=cabal GHCVER=8.2.2 CABALVER=2.0 HAPPYVER=1.19.5 ALEXVER=3.1.7
61 compiler: ": #GHC 8.2.2"
62 addons: {apt: {packages: [cabal-install-2.0,ghc-8.2.2,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
63 - env: BUILD=cabal GHCVER=8.4.3 CABALVER=2.2 HAPPYVER=1.19.5 ALEXVER=3.1.7
64 compiler: ": #GHC 8.4.3"
65 addons: {apt: {packages: [cabal-install-2.2,ghc-8.4.3,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
67 # Build with the newest GHC and cabal-install. This is an accepted failure,
68 # see below.
69 - env: BUILD=cabal GHCVER=head CABALVER=head HAPPYVER=1.19.5 ALEXVER=3.1.7
70 compiler: ": #GHC HEAD"
71 addons: {apt: {packages: [cabal-install-head,ghc-head,happy-1.19.5,alex-3.1.7], sources: [hvr-ghc]}}
73 # The Stack builds. We can pass in arbitrary Stack arguments via the ARGS
74 # variable, such as using --stack-yaml to point to a different file.
75 #- env: BUILD=stack ARGS=""
76 # compiler: ": #stack default"
77 # addons: {apt: {packages: [libfcgi-dev,libgmp-dev]}}
79 #- env: BUILD=stack ARGS="--resolver lts-2"
80 # compiler: ": #stack 7.8.4"
81 # addons: {apt: {packages: [libfcgi-dev,libgmp-dev]}}
83 #- env: BUILD=stack ARGS="--resolver lts-3"
84 # compiler: ": #stack 7.10.2"
85 # addons: {apt: {packages: [libfcgi-dev,libgmp-dev]}}
87 - env: BUILD=stack ARGS="--resolver lts-6" STACK_YAML="stack-lts-6.yaml"
88 compiler: ": #stack 7.10.3"
89 addons: {apt: {packages: [libgmp-dev]}}
91 #- env: BUILD=stack ARGS="--resolver lts-7"
92 # compiler: ": #stack 8.0.1"
93 # addons: {apt: {packages: [libfcgi-dev,libgmp-dev]}}
95 - env: BUILD=stack ARGS="--resolver lts-9" STACK_YAML="stack-lts-9.yaml"
96 compiler: ": #stack 8.0.2"
97 addons: {apt: {packages: [libgmp-dev]}}
99 - env: BUILD=stack ARGS="--resolver lts-11" STACK_YAML="stack-lts-11.yaml"
100 compiler: ": #stack 8.2.2"
101 addons: {apt: {packages: [libgmp-dev]}}
103 - env: BUILD=stack ARGS="--resolver lts-12" STACK_YAML="stack-lts-12.yaml"
104 compiler: ": #stack 8.4.3"
105 addons: {apt: {packages: [libgmp-dev]}}
107 # Nightly builds are allowed to fail
108 - env: BUILD=stack ARGS="--resolver nightly" STACK_YAML="stack-nightly.yaml"
109 compiler: ": #stack nightly"
110 addons: {apt: {packages: [libgmp-dev]}}
112 # Build on macOS in addition to Linux
113 #- env: BUILD=stack ARGS=""
114 # compiler: ": #stack default osx"
115 # os: osx
117 # Travis includes an macOS which is incompatible with GHC 7.8.4
118 #- env: BUILD=stack ARGS="--resolver lts-2"
119 # compiler: ": #stack 7.8.4 osx"
120 # os: osx
122 #- env: BUILD=stack ARGS="--resolver lts-3"
123 # compiler: ": #stack 7.10.2 osx"
124 # os: osx
126 - env: BUILD=stack ARGS="--resolver lts-6" STACK_YAML="stack-lts-6.yaml"
127 compiler: ": #stack 7.10.3 osx"
128 os: osx
130 #- env: BUILD=stack ARGS="--resolver lts-7"
131 # compiler: ": #stack 8.0.1 osx"
132 # os: osx
134 - env: BUILD=stack ARGS="--resolver lts-9" STACK_YAML="stack-lts-9.yaml"
135 compiler: ": #stack 8.0.2 osx"
136 os: osx
138 - env: BUILD=stack ARGS="--resolver lts-11" STACK_YAML="stack-lts-11.yaml"
139 compiler: ": #stack 8.2.2 osx"
140 os: osx
142 - env: BUILD=stack ARGS="--resolver lts-12" STACK_YAML="stack-lts-12.yaml"
143 compiler: ": #stack 8.4.3 osx"
144 os: osx
146 - env: BUILD=stack ARGS="--resolver nightly"
147 compiler: ": #stack nightly osx"
148 os: osx
150 allow_failures:
151 - env: BUILD=cabal GHCVER=head CABALVER=head HAPPYVER=1.19.5 ALEXVER=3.1.7
152 #- env: BUILD=stack ARGS="--resolver nightly"
154before_install:
155# Using compiler above sets CC to an invalid value, so unset it
156- unset CC
158# We want to always allow newer versions of packages when building on GHC HEAD
159- CABALARGS=""
160- if [ "x$GHCVER" = "xhead" ]; then CABALARGS=--allow-newer; fi
162# Download and unpack the stack executable
163- export PATH=/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$HOME/.local/bin:/opt/alex/$ALEXVER/bin:/opt/happy/$HAPPYVER/bin:$HOME/.cabal/bin:$PATH
164- mkdir -p ~/.local/bin
165- |
166 if [ `uname` = "Darwin" ]
167 then
168 travis_retry curl --insecure -L https://get.haskellstack.org/stable/osx-x86_64.tar.gz | tar xz --strip-components=1 --include '*/stack' -C ~/.local/bin
169 else
170 travis_retry curl -L https://get.haskellstack.org/stable/linux-x86_64.tar.gz | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack'
171 fi
173 # Use the more reliable S3 mirror of Hackage
174 mkdir -p $HOME/.cabal
175 echo 'remote-repo: hackage.haskell.org:http://hackage.fpcomplete.com/' > $HOME/.cabal/config
176 echo 'remote-repo-cache: $HOME/.cabal/packages' >> $HOME/.cabal/config
179install:
180- echo "$(ghc --version) [$(ghc --print-project-git-commit-id 2> /dev/null || echo '?')]"
181- if [ -f configure.ac ]; then autoreconf -i; fi
182- |
183 set -ex
184 case "$BUILD" in
185 stack)
186 # Avoid out of memory condition
187 stack --no-terminal --install-ghc $ARGS build Cabal
189 # Add in extra-deps for older snapshots, as necessary
190 #
191 # This is disabled by default, as relying on the solver like this can
192 # make builds unreliable. Instead, if you have this situation, it's
193 # recommended that you maintain multiple stack-lts-X.yaml files.
195 #stack --no-terminal --install-ghc $ARGS test --bench --dry-run || ( \
196 # stack --no-terminal $ARGS build cabal-install && \
197 # stack --no-terminal $ARGS solver --update-config)
199 # Build the dependencies
200 stack --no-terminal --install-ghc $ARGS test --bench --only-dependencies
201 ;;
202 cabal)
203 cabal --version
204 travis_retry cabal update
206 # Get the list of packages from the stack.yaml file. Note that
207 # this will also implicitly run hpack as necessary to generate
208 # the .cabal files needed by cabal-install.
209 PACKAGES=$(stack --install-ghc query locals | grep '^ *path' | sed 's@^ *path:@@')
211 # Due to dependency on wai-logger (which depends on some packages here),
212 # we can't build just dependencies
213 #
214 # cabal install --only-dependencies --enable-tests --enable-benchmarks --force-reinstalls --ghc-options=-O0 --reorder-goals --max-backjumps=-1 $CABALARGS $PACKAGES
215 ;;
216 esac
217 set +ex
219script:
220- |
221 set -ex
222 case "$BUILD" in
223 stack)
224 stack --no-terminal $ARGS test --bench --no-run-benchmarks --haddock --no-haddock-deps
225 ;;
226 cabal)
227 cabal install --enable-tests --enable-benchmarks --force-reinstalls --ghc-options=-O0 --reorder-goals --max-backjumps=-1 $CABALARGS $PACKAGES
229 ORIGDIR=$(pwd)
230 for dir in $PACKAGES
231 do
232 cd $dir
233 cabal check || [ "$CABALVER" == "1.16" ]
234 cabal sdist
235 PKGVER=$(cabal info . | awk '{print $2;exit}')
236 SRC_TGZ=$PKGVER.tar.gz
237 cd dist
238 tar zxfv "$SRC_TGZ"
239 cd "$PKGVER"
240 cabal configure --enable-tests --ghc-options -O0
241 cabal build
242 if [ "$CABALVER" = "1.16" ] || [ "$CABALVER" = "1.18" ]; then
243 cabal test
244 else
245 cabal test --show-details=streaming --log=/dev/stdout
246 fi
247 cd $ORIGDIR
248 done
249 ;;
250 esac
251 set +ex