# Based on the template here: https://kodimensional.dev/github-actions name: Build with stack and cabal # Trigger the workflow on push or pull request, but only for the master branch on: pull_request: push: branches: [master] jobs: cabal: name: ${{ matrix.os }} / ghc ${{ matrix.ghc }} runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest] cabal: ["latest"] ghc: - "8.6.5" - "8.8.3" - "8.10.7" exclude: - os: macos-latest ghc: 8.8.3 - os: macos-latest ghc: 8.6.5 - os: windows-latest ghc: 8.8.3 - os: windows-latest ghc: 8.6.5 steps: - uses: actions/checkout@v2 if: github.event.action == 'opened' || github.event.action == 'synchronize' || github.event.ref == 'refs/heads/master' - uses: haskell/actions/setup@v1.2.9 id: setup-haskell-cabal name: Setup Haskell with: ghc-version: ${{ matrix.ghc }} cabal-version: ${{ matrix.cabal }} - name: Freeze run: | cabal freeze - uses: actions/cache@v1 name: Cache ~/.cabal/store with: path: ${{ steps.setup-haskell-cabal.outputs.cabal-store }} key: ${{ runner.os }}-${{ matrix.ghc }} # key: ${{ runner.os }}-${{ matrix.ghc }}-${{ hashFiles('cabal.project.freeze') }} - name: Build run: | cabal configure --enable-tests --enable-benchmarks --test-show-details=direct cabal build all # - name: Test # run: | # cabal test all stack: name: stack / ghc ${{ matrix.ghc }} runs-on: ubuntu-latest strategy: matrix: stack: ["latest"] ghc: ["7.10.3","8.0.2", "8.2.2", "8.4.4", "8.6.5", "8.8.4", "8.10.7"] # ghc: ["8.8.3"] steps: - uses: actions/checkout@v2 if: github.event.action == 'opened' || github.event.action == 'synchronize' || github.event.ref == 'refs/heads/master' - uses: haskell/actions/setup@v1.2.9 name: Setup Haskell Stack with: ghc-version: ${{ matrix.ghc }} stack-version: 'latest' enable-stack: true # Fix linker errrors on ghc-7.10.3 for ubuntu (see https://github.com/commercialhaskell/stack/blob/255cd830627870cdef34b5e54d670ef07882523e/doc/faq.md#i-get-strange-ld-errors-about-recompiling-with--fpic) - run: sed -i.bak 's/"C compiler link flags", "/&-no-pie /' /home/runner/.ghcup/ghc/7.10.3/lib/ghc-7.10.3/settings if: matrix.ghc == '7.10.3' - uses: actions/cache@v1 name: Cache ~/.stack with: path: ~/.stack key: ${{ runner.os }}-${{ matrix.ghc }}-stack--${{ hashFiles(format('stack-ghc{0}', matrix.ghc)) }} restore-keys: | ${{ runner.os }}-${{ matrix.ghc }}-stack - name: Build run: | stack build --system-ghc --stack-yaml stack-ghc${{ matrix.ghc }}.yaml # stack build --system-ghc --test --bench --no-run-tests --no-run-benchmarks - name: Test run: | stack test --system-ghc --stack-yaml stack-ghc${{ matrix.ghc }}.yaml