@@ -221,6 +221,20 @@ jobs:
221
221
if : matrix.ghc == env.GHC_FOR_SOLVER_BENCHMARKS
222
222
run : sh validate.sh $FLAGS -s solver-benchmarks-run
223
223
224
+ # Save the release sdists for later validation
225
+ # only do this on one platform/ghc because the sdists are the same everywhere
226
+ # NB. we only test cabal-install
227
+ - name : Create release sdists
228
+ if : runner.name == 'ubuntu-latest'
229
+ run : cabal sdist cabal-install
230
+
231
+ - name : Upload release sdists to workflow artifacts
232
+ if : runner.name == 'ubuntu-latest'
233
+ uses : actions/upload-artifact@v4
234
+ with :
235
+ name : cabal-sdists-${{ matrix.ghc }}
236
+ path : dist-newstyle/sdist/*
237
+
224
238
validate-old-ghcs :
225
239
name : Validate old ghcs ${{ matrix.extra-ghc }}
226
240
runs-on : ubuntu-latest
@@ -390,6 +404,59 @@ jobs:
390
404
- name : Build using cabal HEAD
391
405
run : sh validate.sh ${{ env.COMMON_FLAGS }} --with-cabal ./cabal-head/cabal -s build
392
406
407
+ # Dogfood the generated sdists, to avoid bugs like https://github.com/haskell/cabal/issues/9833
408
+ # No caching, since the point is to verify they can be installed "from scratch"
409
+ dogfood-sdists :
410
+ name : Dogfood validated sdists on ${{ matrix.os }} ${{ matrix.ghc }}
411
+ runs-on : ${{ matrix.os }}
412
+ if : ${{ github.ref_name}} != 'master'
413
+ needs : validate
414
+ strategy :
415
+ matrix :
416
+ os : [ubuntu-latest]
417
+ # this should be kept up to date with the list above
418
+ # sharing these with the main validate job is possible but extremely painful; sadly,
419
+ # you can't simply reference another job's matrix
420
+ ghc :
421
+ [
422
+ " 9.10.1" ,
423
+ " 9.8.2" ,
424
+ " 9.6.4" ,
425
+ " 9.4.8" ,
426
+ " 9.2.8" ,
427
+ " 9.0.2" ,
428
+ " 8.10.7" ,
429
+ " 8.8.4" ,
430
+ ]
431
+
432
+ steps :
433
+
434
+ - uses : haskell-actions/setup@v2
435
+ id : setup-haskell
436
+ with :
437
+ ghc-version : ${{ matrix.ghc }}
438
+ cabal-version : latest
439
+
440
+ - name : Download sdists from workflow artifacts
441
+ uses : actions/download-artifact@v4
442
+ with :
443
+ name : cabal-sdists-${{ matrix.ghc }}
444
+ path : repo
445
+
446
+ - name : Install from sdists
447
+ run : |
448
+ # skip if a suitable Cabal isn't in the index (i.e. new major version, not released yet)
449
+ # we only want to test cabal-install, to ensure that it works with existing Cabals
450
+ tar xf repo/dist-newstyle/sdists/cabal-install.tar.gz cabal-install.cabal
451
+ # (don't look at this too closely)
452
+ ver="$(sed -n '/^[Vv]ersion:[ \t]*\([0-9][0-9]*\.[0-9][0-9]*\)\.[0-9.]*$/{;s//\1/;p;q;}' cabal-install.cabal)"
453
+ # why???
454
+ if cabal list --simple-output Cabal | grep -q "^Cabal $cbl\\.""; then
455
+ cabal install repo/dist-newstyle/sdists/cabal-install.tar.gz --prefer-oldest
456
+ else
457
+ exit 0
458
+ fi
459
+
393
460
prerelease-head :
394
461
name : Create a GitHub prerelease with the binary artifacts
395
462
runs-on : ubuntu-latest
0 commit comments