Skip to content

Revisiting gracefulClose with STM racing #198

Revisiting gracefulClose with STM racing

Revisiting gracefulClose with STM racing #198

Workflow file for this run

name: Haskell CI
on:
push:
branches: [ 'master', 'ci' ]
pull_request:
branches: [ 'master' ]
jobs:
autoconf:
runs-on: ubuntu-latest
# container: ubuntu:22.10
steps:
- uses: actions/checkout@v4
- name: install autoconf
run: |
sudo apt-get update -y -qq
sudo apt-get install -y -qq build-essential autoconf${{ env.autoconf_ver }}
- name: run autoreconf
run: |
autoreconf${{ env.autoconf_ver }} -fi
- uses: actions/upload-artifact@v4
with:
name: configure
path: |
configure
include/HsNetworkConfig.h.in
build:
runs-on: ${{ matrix.os }}
needs: autoconf
strategy:
fail-fast: false
matrix:
os: [ 'ubuntu-latest', 'macOS-latest', 'windows-latest' ]
ghc: [ '9.4', '9.6', '9.8' ]
steps:
- uses: actions/checkout@v4
- uses: haskell-actions/setup@v2
id: setup
with:
ghc-version: ${{ matrix.ghc }}
cabal-version: latest
cabal-update: true
- uses: actions/download-artifact@v4
with:
name: configure
- name: Cabal configure
run: |
cabal configure --enable-tests --disable-benchmarks --disable-documentation
- name: Cache (restore)
uses: actions/cache/restore@v4
id: cache
with:
path: ${{ steps.setup.outputs.cabal-store }}
key: build-${{ runner.os }}-ghc-${{ steps.setup.outputs.ghc-version }}-cabal-${{ steps.setup.outputs.cabal-version }}-sha-${{ github.sha }}
# Append commit SHA so that new cache is always written.
# This is fine as long as we do not hit the total cache limit of 10GB.
restore-keys: |
build-${{ runner.os }}-ghc-${{ steps.setup.outputs.ghc-version }}-cabal-${{ steps.setup.outputs.cabal-version }}-
build-${{ runner.os }}-ghc-${{ steps.setup.outputs.ghc-version }}-
- name: Install dependencies
run: |
cabal build --only-dependencies
- name: Cache (save)
uses: actions/cache/save@v4
if: always()
with:
path: ${{ steps.setup.outputs.cabal-store }}
key: ${{ steps.cache.outputs.cache-primary-key }}
- name: Build
run: |
cabal build all
- name: Run tests
run: |
cabal test --test-show-details=streaming
- name: Run doctest
if: ${{ runner.os == 'Linux' }}
run: |
cabal install doctest --overwrite-policy=always
cabal repl --build-depends=QuickCheck --with-ghc=doctest
- name: Cabal check
run: |
cabal check
- name: Haddock
run: |
cabal haddock --disable-documentation
# check windows can generate autoconf too
- uses: msys2/setup-msys2@v2
if: ${{ runner.os == 'Windows' }}
with:
update: true
install: autoconf
- name: Autoreconf (Windows)
if: ${{ runner.os == 'Windows' }}
shell: msys2 {0}
run: |
rm configure include/HsNetworkConfig.h.in
autoreconf -i
- name: Build (Windows)
if: ${{ runner.os == 'Windows' }}
run: |
cabal clean
cabal build --enable-tests --disable-benchmarks all