@@ -0,0 +1,119 @@
1+jobs:
2+- job: ${{ parameters.name }}
3+ pool:
4+ vmImage: ${{ parameters.vmImage }}
5+ strategy:
6+ matrix:
7+ stack-def:
8+ BUILD: stack
9+ STACK_YAML: stack.yaml
10+ stack-lts-6:
11+ BUILD: stack
12+ STACK_YAML: stack-lts-6.yaml
13+ ARGS: "--resolver lts-6"
14+ stack-lts-9:
15+ BUILD: stack
16+ STACK_YAML: stack-lts-9.yaml
17+ ARGS: "--resolver lts-9"
18+ stack-lts-11:
19+ BUILD: stack
20+ STACK_YAML: stack-lts-11.yaml
21+ ARGS: "--resolver lts-11"
22+ stack-lts-12:
23+ BUILD: stack
24+ STACK_YAML: stack-lts-12.yaml
25+ ARGS: "--resolver lts-12"
26+ stack-lts-13:
27+ BUILD: stack
28+ STACK_YAML: stack.yaml
29+ ARGS: "--resolver lts-13"
30+ cabal-7.10.3:
31+ BUILD: cabal
32+ GHCVER: 7.10.3
33+ CABALVER: 1.22
34+ cabal-8.0.2:
35+ BUILD: cabal
36+ GHCVER: 8.0.2
37+ CABALVER: 1.24
38+ cabal-8.2.2:
39+ BUILD: cabal
40+ GHCVER: 8.4.4
41+ CABALVER: 2.0
42+ cabal-8.4.4:
43+ BUILD: cabal
44+ GHCVER: 8.4.4
45+ CABALVER: 2.2
46+ cabal-8.6.4:
47+ BUILD: cabal
48+ GHCVER: 8.6.4
49+ CABALVER: 2.4
50+ nightly:
51+ BUILD: stack
52+ STACK_YAML: stack-nightly.yaml
53+ ARGS: "--resolver nightly"
54+ pedantic:
55+ BUILD: pedantic
56+ STACK_YAML: stack.yaml
57+ maxParallel: 6
58+ steps:
59+ - script: |
60+ export STACK_ROOT="$(Build.SourcesDirectory)"/.stack-root;
61+ mkdir -p ~/.local/bin
62+ curl -L https://get.haskellstack.org/stable/linux-x86_64.tar.gz | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack'
63+ case "$BUILD" in
64+ cabal)
65+ sudo add-apt-repository -y ppa:hvr/ghc
66+ sudo apt-get update
67+ sudo apt-get install cabal-install-$CABALVER ghc-$GHCVER
68+ # See note here: https://github.com/haskell-CI/haskell-ci#alex--happy-with-ghc--78
69+ if [ "$GHCVER" = "head" ] || [ "${GHCVER%.*}" = "7.8" ] || [ "${GHCVER%.*}" = "7.10" ]; then
70+ sudo apt-get install happy-1.19.4 alex-3.1.3
71+ export PATH=/opt/alex/3.1.3/bin:/opt/happy/1.19.4/bin:$PATH
72+ else
73+ sudo apt-get install happy alex
74+ fi
75+ export PATH=$HOME/.local/bin:/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH
76+ cabal --version
77+ cabal update
78+ PACKAGES=$(stack --install-ghc query locals | grep '^ *path' | sed 's@^ *path:@@')
79+ cabal install --only-dependencies --enable-tests --enable-benchmarks --force-reinstalls --ghc-options=-O0 --reorder-goals --max-backjumps=-1 $CABALARGS $PACKAGES
80+ ;;
81+ *)
82+ export PATH=$HOME/.local/bin:$PATH
83+ stack --install-ghc $ARGS test --bench --only-dependencies
84+ ;;
85+ esac
86+ set -ex
87+ case "$BUILD" in
88+ cabal)
89+ cabal install --enable-tests --enable-benchmarks --force-reinstalls --ghc-options=-O0 --reorder-goals --max-backjumps=-1 $CABALARGS $PACKAGES
90+
91+ ORIGDIR=$(pwd)
92+ for dir in $PACKAGES
93+ do
94+ cd $dir
95+ cabal check || [ "$CABALVER" == "1.16" ]
96+ cabal sdist
97+ PKGVER=$(cabal info . | awk '{print $2;exit}')
98+ SRC_TGZ=$PKGVER.tar.gz
99+ cd dist
100+ tar zxfv "$SRC_TGZ"
101+ cd "$PKGVER"
102+ cabal configure --enable-tests --ghc-options -O0
103+ cabal build
104+ if [ "$CABALVER" = "1.16" ] || [ "$CABALVER" = "1.18" ]; then
105+ cabal test
106+ else
107+ cabal test --show-details=streaming
108+ fi
109+ cd $ORIGDIR
110+ done
111+ ;;
112+ *)
113+ stack $ARGS test --bench --no-run-benchmarks --haddock --no-haddock-deps
114+ ;;
115+ esac
116+ set +ex
117+ env:
118+ OS_NAME: ${{ parameters.os }}
119+ displayName: 'Installation ${{parameters.os}} & Test'