Skip to content

CI: cabal-head prerelease: move to a current GitHub Action #132

CI: cabal-head prerelease: move to a current GitHub Action

CI: cabal-head prerelease: move to a current GitHub Action #132

Workflow file for this run

name: Check sdist
# See: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#concurrency.
concurrency:
group: ${{ github.ref }}-${{ github.workflow }}
cancel-in-progress: true
on:
push:
paths-ignore:
- "doc/**"
- "**/README.md"
- "CONTRIBUTING.md"
branches:
- master
pull_request:
paths-ignore:
- "doc/**"
- "**/README.md"
- "CONTRIBUTING.md"
release:
types:
- created
jobs:
# Dogfood the generated sdist, to avoid bugs like https://github.com/haskell/cabal/issues/9833
# No caching, since the point is to verify they can be installed "from scratch"
# Don't run on master or a PR targeting master, because there's never an installable Cabal
dogfood-sdists:
name: Dogfood sdist on ${{ matrix.os }} ghc-${{ matrix.ghc }}
if: github.ref != 'refs/heads/master' && github.base_ref != 'master'
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest]
# this should be kept up to date with the list in validate.yml, but should be the
# *first* compiler release so we validate against what is hopefully the first
# release of a corresponding Cabal and friends. it can also be short since it's
# highly unlikely that we are releasing really old branches.
ghc:
[
"9.10.1",
"9.8.1",
"9.6.1",
"9.4.1",
]
steps:
- uses: haskell-actions/setup@v2
id: setup-haskell
with:
ghc-version: ${{ matrix.ghc }}
cabal-version: latest
- uses: actions/checkout@v4
- name: Make sdist
run: cabal sdist cabal-install
- name: Install from sdist
run: |
# skip if a suitable Cabal isn't in this ghc's bootlibs, since that's the case
# that causes failures for users (otherwise cabal-install will install a matching
# version itself)
# we only want to test cabal-install, to ensure that it works with existing Cabals
# (don't look at this too closely)
sdist="$(ls dist-newstyle/sdist/cabal-install-*.tar.gz | sed -n '\,^dist-newstyle/sdist/cabal-install-[0-9.]*\.tar\.gz$,{;p;q;}')"
# extract the cabal-install major version
ver="$(echo "$sdist" | sed -n 's,^dist-newstyle/sdist/cabal-install-\([0-9][0-9]*\.[0-9][0-9]*\)\.[0-9.]*$,\1,p')"
# dunno if this will ever be extended to freebsd, but grep -q is a gnu-ism
if ghc-pkg --global --simple-output list Cabal | grep "^Cabal-$cbl\\." >/dev/null; then
# sigh, someone broke installing from tarballs
rm -rf cabal*.project Cabal Cabal-syntax cabal-install-solver cabal-install
tar xfz "$sdist"
cd "cabal-install-$cbl"*
cabal install
else
echo No matching bootlib Cabal version to test against.
exit 0
fi