jobs: - job: ${{ parameters.name }} pool: vmImage: ${{ parameters.vmImage }} strategy: matrix: stack-def: BUILD: stack STACK_YAML: stack.yaml stack-lts-9: BUILD: stack STACK_YAML: stack-lts-9.yaml ARGS: "--resolver lts-9" stack-lts-11: BUILD: stack STACK_YAML: stack.yaml ARGS: "--resolver lts-11" stack-lts-12: BUILD: stack STACK_YAML: stack.yaml ARGS: "--resolver lts-12" stack-lts-13: BUILD: stack STACK_YAML: stack.yaml ARGS: "--resolver lts-13" stack-persistent-2-9: BUILD: stack STACK_YAML: stack-persistent-2-9.yaml ARGS: "" stack-persistent-2-10: BUILD: stack STACK_YAML: stack-persistent-2-10.yaml ARGS: "" cabal-8.0.2: BUILD: cabal GHCVER: 8.0.2 CABALVER: 1.24 cabal-8.2.2: BUILD: cabal GHCVER: 8.2.2 CABALVER: 2.0 cabal-8.4.4: BUILD: cabal GHCVER: 8.4.4 CABALVER: 2.2 cabal-8.6.5: BUILD: cabal GHCVER: 8.6.5 CABALVER: 2.4 nightly: BUILD: stack ARGS: "--resolver nightly" pedantic: BUILD: pedantic STACK_YAML: stack.yaml 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.16" ] 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 if [ "$CABALVER" = "1.16" ] || [ "$CABALVER" = "1.18" ]; then cabal test else cabal test --show-details=streaming fi 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'