jobs: - job: ${{ parameters.name }} timeoutInMinutes: 180 pool: vmImage: ${{ parameters.vmImage }} strategy: matrix: stack-def: BUILD: stack stack-lts-6: BUILD: stack STACK_YAML: stack-lts-6.yaml ARGS: "--resolver lts-6" stack-lts-9: BUILD: stack STACK_YAML: stack-lts-9.yaml ARGS: "--resolver lts-9" stack-lts-11: BUILD: stack STACK_YAML: stack-lts-11.yaml ARGS: "--resolver lts-11" stack-lts-12: BUILD: stack STACK_YAML: stack-lts-12.yaml ARGS: "--resolver lts-12" stack-lts-13: BUILD: stack ARGS: "--resolver lts-13" cabal-7.10.3: BUILD: cabal GHCVER: 7.10.3 CABALVER: 1.22 cabal-8.0.2: BUILD: cabal GHCVER: 8.0.2 CABALVER: 1.24 cabal-8.2.2: BUILD: cabal GHCVER: 8.4.4 CABALVER: 2.0 cabal-8.4.4: BUILD: cabal GHCVER: 8.4.4 CABALVER: 2.2 cabal-8.6.4: BUILD: cabal GHCVER: 8.6.4 CABALVER: 2.4 maxParallel: 6 steps: - script: | export STACK_ROOT="$(Build.SourcesDirectory)"/.stack-root; mkdir -p ~/.local/bin curl -L https://get.haskellstack.org/stable/linux-x86_64.tar.gz | tar xz --wildcards --strip-components=1 -C ~/.local/bin '*/stack' case "$BUILD" in cabal) sudo add-apt-repository -y ppa:hvr/ghc sudo apt-get update sudo apt-get install cabal-install-$CABALVER ghc-$GHCVER # See note here: https://github.com/haskell-CI/haskell-ci#alex--happy-with-ghc--78 if [ "$GHCVER" = "head" ] || [ "${GHCVER%.*}" = "7.8" ] || [ "${GHCVER%.*}" = "7.10" ]; then sudo apt-get install happy-1.19.4 alex-3.1.3 export PATH=/opt/alex/3.1.3/bin:/opt/happy/1.19.4/bin:$PATH else sudo apt-get install happy alex fi export PATH=$HOME/.local/bin:/opt/ghc/$GHCVER/bin:/opt/cabal/$CABALVER/bin:$PATH cabal --version cabal update PACKAGES=$(stack --install-ghc query locals | grep '^ *path' | sed 's@^ *path:@@') cabal install --only-dependencies --enable-tests --enable-benchmarks --force-reinstalls --ghc-options=-O0 --reorder-goals --max-backjumps=-1 $CABALARGS $PACKAGES ;; *) export PATH=$HOME/.local/bin:$PATH stack --install-ghc $ARGS test --bench --only-dependencies ;; esac set -ex case "$BUILD" in cabal) cabal install --enable-tests --enable-benchmarks --force-reinstalls --ghc-options=-O0 --reorder-goals --max-backjumps=-1 $CABALARGS $PACKAGES ORIGDIR=$(pwd) for dir in $PACKAGES do cd $dir cabal check || [ "$CABALVER" == "1.22" ] # https://github.com/yesodweb/wai/pull/754#issuecomment-504866279 cabal sdist PKGVER=$(cabal info . | awk '{print $2;exit}') SRC_TGZ=$PKGVER.tar.gz cd dist tar zxfv "$SRC_TGZ" cd "$PKGVER" cabal configure --enable-tests --ghc-options -O0 cabal build cabal test --show-details=streaming cd $ORIGDIR done ;; *) stack $ARGS test --bench --no-run-benchmarks --haddock --no-haddock-deps ;; esac set +ex env: OS_NAME: ${{ parameters.os }} displayName: 'Installation ${{parameters.os}} & Test'