Skip to content

Revival/2025: Part 2 #8

Revival/2025: Part 2

Revival/2025: Part 2 #8

---
name: CI — Linux build & test
on:
push:
branches: [main, master, revivals/**, "**"]
pull_request:
# Avoid duplicate runs on the same ref
concurrency:
group: ci-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
build:
name: build & test (ghc ${{ matrix.ghc }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
ghc: ["9.6.7"]
# When deps allow, expand:
# ghc: ["9.6.7", "9.10.3", "9.12.2"]
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install system deps (X11 etc.)
run: |
sudo apt-get update
sudo apt-get install -y \
build-essential pkg-config \
libx11-dev libxrandr-dev libxinerama-dev libxext-dev libxss-dev
- name: Set up Haskell (GHC+Cabal)
id: setup-hs
uses: haskell-actions/setup@v2
with:
ghc-version: ${{ matrix.ghc }}
cabal-version: latest
- name: Cache Cabal store
uses: actions/cache@v4
with:
path: ${{ steps.setup-hs.outputs.cabal-store }}
key: ${{ runner.os }}-cabal-${{ steps.setup-hs.outputs.ghc-version }}-${{ hashFiles('**/*.cabal', 'cabal.project*') }}
restore-keys: |
${{ runner.os }}-cabal-${{ steps.setup-hs.outputs.ghc-version }}-
${{ runner.os }}-cabal-
- name: Show tool versions
run: |
ghc --version
cabal --version
- name: Freeze solver plan (optional, keeps logs useful)
run: cabal build all --dry-run
- name: Build
run: cabal build all --enable-tests --enable-benchmarks
- name: Test
run: cabal test --test-show-details=direct --keep-going
- name: cabal check (packaging sanity)
run: cabal check