From f7ab4caba4913c47aebb2b95ac4c7e27dbf33c43 Mon Sep 17 00:00:00 2001 From: Matthew Wraith Date: Fri, 26 Jun 2026 16:30:11 -0700 Subject: [PATCH 1/2] CI: Add GHC 9.10.3/9.12.4 and LTS 23/24 stack resolvers - cabal matrix: bump 9.10.1 -> 9.10.3 and add 9.12.4 (current nightly). - Add stack-9.8.yaml (lts-23.28) and stack-9.10.yaml (lts-24.46), and add both to the stack CI matrix. - Point the default stack.yaml at lts-24.46 (was lts-22.32) and regenerate stack.yaml.lock accordingly. All current dependency bounds already permit the GHC 9.12 boot libraries (containers 0.7, base 4.21, text 2.1, bytestring 0.12, transformers 0.6). Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/ci.yml | 5 ++++- stack-9.10.yaml | 6 ++++++ stack-9.8.yaml | 6 ++++++ stack.yaml | 2 +- stack.yaml.lock | 8 ++++---- 5 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 stack-9.10.yaml create mode 100644 stack-9.8.yaml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 9fae08bbd..b8e4f9290 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,7 +23,8 @@ jobs: - "9.4.8" - "9.6.6" - "9.8.2" - - "9.10.1" + - "9.10.3" + - "9.12.4" steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -66,6 +67,8 @@ jobs: - "--stack-yaml ./stack-9.2.yaml" - "--stack-yaml ./stack-9.4.yaml" - "--stack-yaml ./stack-9.6.yaml" + - "--stack-yaml ./stack-9.8.yaml" + - "--stack-yaml ./stack-9.10.yaml" steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 diff --git a/stack-9.10.yaml b/stack-9.10.yaml new file mode 100644 index 000000000..a56362639 --- /dev/null +++ b/stack-9.10.yaml @@ -0,0 +1,6 @@ +--- +resolver: lts-24.46 +flags: {} +packages: + - "." +extra-deps: [] diff --git a/stack-9.8.yaml b/stack-9.8.yaml new file mode 100644 index 000000000..ecf369bb1 --- /dev/null +++ b/stack-9.8.yaml @@ -0,0 +1,6 @@ +--- +resolver: lts-23.28 +flags: {} +packages: + - "." +extra-deps: [] diff --git a/stack.yaml b/stack.yaml index 7d0a245a1..6278c9013 120000 --- a/stack.yaml +++ b/stack.yaml @@ -1 +1 @@ -./stack-9.6.yaml \ No newline at end of file +./stack-9.10.yaml \ No newline at end of file diff --git a/stack.yaml.lock b/stack.yaml.lock index db7978f24..b6426ef96 100644 --- a/stack.yaml.lock +++ b/stack.yaml.lock @@ -6,7 +6,7 @@ packages: [] snapshots: - completed: - sha256: 417fa04a2ed8916cdae74c475ff97ac80857fed5000f19dce4f9564b5e635294 - size: 720000 - url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/22/32.yaml - original: lts-22.32 + sha256: 2e84de3088a8643c3743210ec31c50b2aeccf5fb085042d2e43e3ef700e7a2cd + size: 732461 + url: https://raw.githubusercontent.com/commercialhaskell/stackage-snapshots/master/lts/24/46.yaml + original: lts-24.46 From 8af746d90e9268b5b135b74bbac2abe3b6d14a8b Mon Sep 17 00:00:00 2001 From: Matthew Wraith Date: Mon, 29 Jun 2026 09:22:45 -0700 Subject: [PATCH 2/2] CI: Build stack jobs with --system-ghc against action-provisioned GHC Stack's own GHC bindist install started failing on the ubuntu-24.04 runner with a gcc '--target' toolchain error, breaking every stack job. Instead, provision each resolver's exact GHC via haskell-actions/setup and build with --system-ghc --no-install-ghc, matching how the cabal jobs already work on this runner. Also pass the matrix resolver to stack build (it was previously omitted, so every stack job silently built the default stack.yaml). Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/ci.yml | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b8e4f9290..dfd3b23ee 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,7 +53,7 @@ jobs: # cabal test package:prometheus --enable-tests stack: - name: stack ${{ matrix.resolver }} / ${{ matrix.os }} + name: stack ${{ matrix.plan.resolver }} / ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: matrix: @@ -61,14 +61,16 @@ jobs: - ubuntu-latest # - macOS-latest stack: ["latest"] - resolver: - - "--stack-yaml ./stack-8.10.yaml" - - "--stack-yaml ./stack-9.0.yaml" - - "--stack-yaml ./stack-9.2.yaml" - - "--stack-yaml ./stack-9.4.yaml" - - "--stack-yaml ./stack-9.6.yaml" - - "--stack-yaml ./stack-9.8.yaml" - - "--stack-yaml ./stack-9.10.yaml" + # ghc must match each snapshot's compiler exactly, since we build + # with --system-ghc against the GHC provisioned by the setup action. + plan: + - { resolver: "--stack-yaml ./stack-8.10.yaml", ghc: "8.10.7" } + - { resolver: "--stack-yaml ./stack-9.0.yaml", ghc: "9.0.2" } + - { resolver: "--stack-yaml ./stack-9.2.yaml", ghc: "9.2.8" } + - { resolver: "--stack-yaml ./stack-9.4.yaml", ghc: "9.4.8" } + - { resolver: "--stack-yaml ./stack-9.6.yaml", ghc: "9.6.6" } + - { resolver: "--stack-yaml ./stack-9.8.yaml", ghc: "9.8.4" } + - { resolver: "--stack-yaml ./stack-9.10.yaml", ghc: "9.10.3" } steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 @@ -76,6 +78,7 @@ jobs: - uses: haskell-actions/setup@cd0d9bdd65b20557f41bea4dbe43d0b5fbbfe553 # v2.11.0 name: Setup Haskell Stack with: + ghc-version: ${{ matrix.plan.ghc }} stack-version: ${{ matrix.stack }} enable-stack: true @@ -83,11 +86,11 @@ jobs: name: Cache ~/.stack with: path: ~/.stack - key: ${{ matrix.os }}-stack-${{ matrix.resolver }} + key: ${{ matrix.os }}-stack-${{ matrix.plan.ghc }} - name: Build run: | - stack build --test --bench --no-run-tests --no-run-benchmarks --flag prometheus:buildexamples + stack ${{ matrix.plan.resolver }} --system-ghc --no-install-ghc build --test --bench --no-run-tests --no-run-benchmarks --flag prometheus:buildexamples # TODO: Actually add tests # - name: Test