From 13461d3b00443a394244ac66314d5863d8133bb8 Mon Sep 17 00:00:00 2001 From: Kristen Kozak Date: Thu, 19 Mar 2026 17:00:24 -0700 Subject: [PATCH 1/2] Assert aeson version in order to verify use of Stackage snapshot --- .github/scripts/assert-version.sh | 21 +++++++++++++++++++++ .github/workflows/ci.yml | 10 ++++++++-- 2 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 .github/scripts/assert-version.sh diff --git a/.github/scripts/assert-version.sh b/.github/scripts/assert-version.sh new file mode 100644 index 0000000..516b250 --- /dev/null +++ b/.github/scripts/assert-version.sh @@ -0,0 +1,21 @@ +#!/usr/bin/env bash +# Usage: ./assert-version.sh + +set -euo pipefail + +PKG="$1" +EXPECTED="$2" +FREEZE_FILE="cabal.project.freeze" + +cabal freeze -v0 +[[ -f "$FREEZE_FILE" ]] || { echo "Error: Missing freeze file"; exit 1; } + +if grep -q "any.$PKG ==$EXPECTED" "$FREEZE_FILE"; then + echo "Assertion passed: $PKG's version is $EXPECTED" + rm "$FREEZE_FILE" +else + echo "Assertion failed: $PKG's version is NOT $EXPECTED" + cat "$FREEZE_FILE" | grep "any.$PKG" + rm "$FREEZE_FILE" + exit 1 +fi diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 79e6606..5392ccc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,6 +40,11 @@ jobs: - uses: actions/checkout@v3 + - name: Add scripts to GITHUB_PATH + run: | + chmod +x .github/scripts/* + echo "${{ github.workspace }}/.github/scripts" >> $GITHUB_PATH + - name: Set up GHC and Cabal uses: haskell-actions/setup@v2 with: @@ -58,9 +63,9 @@ jobs: run: | echo "import: https://www.stackage.org/${{ matrix.stackage }}/cabal.config" >> cabal.project.local - - name: Constrain aeson version + - name: Assert aeson version run: | - echo "constraints: aeson==${{ matrix.aeson }}" >> cabal.project.local + assert-version.sh aeson "${{ matrix.aeson }}" - name: Install dependencies run: cabal v2-build --only-dependencies --enable-tests @@ -87,6 +92,7 @@ jobs: PKGDIR=$(basename "$SDIST" .tar.gz) mv cabal.project.local "$PKGDIR" cd "$PKGDIR" + assert-version.sh aeson "${{ matrix.aeson }}" cabal v2-build all else echo "expected '$SDIST' not found" From 4915197c274001a6c2b1f39b01f7700aa736d2d4 Mon Sep 17 00:00:00 2001 From: Kristen Kozak Date: Thu, 19 Mar 2026 17:23:37 -0700 Subject: [PATCH 2/2] Remove existing json-rpc-server constraint from Stackage snapshot --- .github/workflows/ci.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5392ccc..ede3e5c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -61,7 +61,13 @@ jobs: - name: Import Stackage snapshot run: | - echo "import: https://www.stackage.org/${{ matrix.stackage }}/cabal.config" >> cabal.project.local + LOCAL_CONFIG="stackage-local.config" + curl -sSL https://www.stackage.org/${{ matrix.stackage }}/cabal.config > $LOCAL_CONFIG + + # Remove any existing constraint on this package from the Stackage snapshot. + sed -i "/^[[:space:]]*json-rpc-server[[:space:]]*==/d" $LOCAL_CONFIG + + echo "import: $LOCAL_CONFIG" >> cabal.project.local - name: Assert aeson version run: | @@ -85,12 +91,12 @@ jobs: - name: Verify that sdist installs run: | SDIST=$(grep '^version:' json-rpc-server.cabal | awk '{print "json-rpc-server-" $2 ".tar.gz"}') - cp cabal.project.local dist-newstyle/sdist/ + cp cabal.project.local stackage-local.config dist-newstyle/sdist/ cd dist-newstyle/sdist/ if [ -f "$SDIST" ]; then tar xzf "$SDIST" PKGDIR=$(basename "$SDIST" .tar.gz) - mv cabal.project.local "$PKGDIR" + mv cabal.project.local stackage-local.config "$PKGDIR" cd "$PKGDIR" assert-version.sh aeson "${{ matrix.aeson }}" cabal v2-build all