forked from haskell/cabal
-
Notifications
You must be signed in to change notification settings - Fork 1
/
.travis.yml
150 lines (133 loc) · 4.95 KB
/
.travis.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# NB: don't set `language: haskell` here
# We specify language: c, so it doesn't default to e.g. ruby
language: c
sudo: false
# Remember to add release branches
# we whitelist branches, as we don't really need to build dev-branches.
branches:
only:
- master
- "1.24"
- "1.22"
- "1.20"
- "1.18"
# 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.
matrix:
include:
- env: GHCVER=8.0.1 SCRIPT=meta BUILDER=none
os: linux
sudo: required
# These don't have -dyn/-prof whitelisted yet, so we have to
# do the old-style installation
- env: GHCVER=7.4.2 SCRIPT=script CABAL_LIB_ONLY=YES TEST_OTHER_VERSIONS=YES
os: linux
sudo: required
- env: GHCVER=7.6.3 SCRIPT=script
os: linux
sudo: required
- env: GHCVER=7.8.4 SCRIPT=script
os: linux
sudo: required
# Ugh, we'd like to drop 'sudo: required' and use the
# apt plugin for the next two
# but the GCE instance we get has more memory, which makes
# a big difference
- env: GHCVER=7.10.3 SCRIPT=script
os: linux
sudo: required
- env: GHCVER=8.0.1 SCRIPT=script DEPLOY_DOCS=YES
sudo: required
os: linux
- env: GHCVER=8.0.1 SCRIPT=solver-debug-flags
sudo: required
os: linux
- env: GHCVER=8.0.1 SCRIPT=script PARSEC=YES
os: linux
sudo: required
- env: GHCVER=8.0.1 SCRIPT=bootstrap
sudo: required
os: linux
# We axed GHC 7.6 and earlier because it's not worth the trouble to
# make older GHC work with clang's cpp. See
# https://ghc.haskell.org/trac/ghc/ticket/8493
- env: GHCVER=7.8.4 SCRIPT=script CABAL_LIB_ONLY=YES
os: osx
osx_image: xcode6.4 # We need 10.10
- env: GHCVER=7.8.4 SCRIPT=script CABAL_INSTALL_ONLY=YES
os: osx
osx_image: xcode6.4
# TODO: We might want to specify OSX version
# https://docs.travis-ci.com/user/osx-ci-environment/#OS-X-Version
- env: GHCVER=7.10.3 SCRIPT=script CABAL_LIB_ONLY=YES
os: osx
- env: GHCVER=7.10.3 SCRIPT=script CABAL_INSTALL_ONLY=YES
os: osx
- env: GHCVER=8.0.1 SCRIPT=script CABAL_LIB_ONLY=YES
os: osx
- env: GHCVER=8.0.1 SCRIPT=script CABAL_INSTALL_ONLY=YES
os: osx
- env: GHCVER=8.0.1 SCRIPT=bootstrap
os: osx
- env: GHCVER=via-stack SCRIPT=stack STACKAGE_RESOLVER=lts
os: linux
addons:
apt:
packages:
- libgmp-dev
allow_failures:
- env: GHCVER=via-stack SCRIPT=stack STACKAGE_RESOLVER=lts
# TODO add PARSEC_BUNDLED=YES when it's so
# It seems pointless to run head if we're going to ignore the results.
#- GHCVER=head
# Note: the distinction between `before_install` and `install` is not important.
before_install:
- export PATH=/opt/ghc/$GHCVER/bin:$PATH
- export PATH=$HOME/.ghc-install/$GHCVER/bin:$PATH
- export PATH=$HOME/bin:$PATH
- export PATH=$HOME/.cabal/bin:$PATH
- export PATH=$HOME/.local/bin:$PATH
- export PATH=/opt/cabal/1.24/bin:$PATH
- export PATH=/opt/happy/1.19.5/bin:$PATH
- export PATH=/opt/alex/3.1.7/bin:$PATH
- ./travis-install.sh
# Set up deployment to the haskell/cabal-website repo.
# NB: these commands MUST be in .travis.yml, otherwise the secret key can be
# leaked! See https://github.com/travis-ci/travis.rb/issues/423.
# umask to get the permissions to be 400.
- if [ "x$TRAVIS_REPO_SLUG" = "xhaskell/cabal" -a "x$TRAVIS_PULL_REQUEST" = "xfalse" -a "x$TRAVIS_BRANCH" = "xmaster" -a "x$DEPLOY_DOCS" = "xYES" ]; then (umask 377 && openssl aes-256-cbc -K $encrypted_edaf6551664d_key -iv $encrypted_edaf6551664d_iv -in id_rsa_cabal_website.aes256.enc -out ~/.ssh/id_rsa -d); fi
install:
# We intentionally do not install anything before trying to build Cabal because
# it should build with each supported GHC version out-of-the-box.
# 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. Using
# ./dist/setup/setup here instead of cabal-install to avoid breakage when the
# build config format changed.
script:
- ./travis-${SCRIPT}.sh -j
cache:
directories:
- $HOME/.cabal/packages
- $HOME/.cabal/store
- $HOME/.cabal/bin
- $HOME/.stack/bin
- $HOME/.stack/precompiled
- $HOME/.stack/programs
- $HOME/.stack/setup-exe-cache
- $HOME/.stack/snapshots
# We remove the index because it churns quite a bit and we don't want
# to pay the cost of repeatedly caching it even though we don't care
# about most changing packages.
before_cache:
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/build-reports.log
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/00-index*
- rm -fv $HOME/.cabal/packages/hackage.haskell.org/*.json
# Deploy Haddocks to the haskell/cabal-website repo.
after_success:
- ./travis-deploy.sh
notifications:
irc:
channels:
- "chat.freenode.net##haskell-cabal"
slack: haskell-cabal:sCq6GLfy9N8MJrInosg871n4