Use haskell setup action for ghc 8.0.2 and 8.2.2 #445
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Haskell CI | |
on: | |
push: | |
branches: | |
- master | |
pull_request: | |
jobs: | |
build: | |
name: ${{ matrix.name }} | |
env: | |
# ------------------------------------------------------------------------ | |
# Common options | |
# ------------------------------------------------------------------------ | |
CABAL_REINIT_CONFIG: y | |
LC_ALL: C.UTF-8 | |
DISABLE_TEST: n | |
# ------------------------------------------------------------------------ | |
# cabal options | |
# ------------------------------------------------------------------------ | |
CABAL_CHECK_RELAX: y | |
CABAL_NO_SANDBOX: y | |
CABAL_HACKAGE_MIRROR: "hackage.haskell.org:http://hackage.fpcomplete.com" | |
# ------------------------------------------------------------------------ | |
# Location of packcheck.sh | |
# ------------------------------------------------------------------------ | |
PACKCHECK_LOCAL_PATH: "./packcheck.sh" | |
PACKCHECK_GITHUB_URL: "https://raw.githubusercontent.com/composewell/packcheck" | |
PACKCHECK_GITHUB_COMMIT: "e575ff318c93add2a6d3f9107a52c5e37c666a98" | |
# ------------------------------------------------------------------------ | |
# Build options | |
# ------------------------------------------------------------------------ | |
GHCUP_VERSION: 0.1.20.0 | |
BUILD: cabal-v2 ${{ matrix.pack_options }} | |
GHCVER: ${{ matrix.ghc_version }} | |
CABALVER: ${{ matrix.cabal_version }} | |
runs-on: ${{ matrix.runner }} | |
# [NOTE] The following is a hack to fix the lack of “allow-failure” feature. | |
# All configurations should set “ignore_error” to false, except for “head”. | |
continue-on-error: ${{ matrix.ignore_error }} | |
strategy: | |
fail-fast: false | |
matrix: | |
name: | |
- 8.0.2 | |
- 8.2.2 | |
- 8.4.4 | |
- 8.6.5 | |
- 8.8.4 | |
- 8.10.7 | |
- 9.0.2 | |
- 9.2.8+ucd2haskell | |
- 9.4.8 | |
- 9.4.8+macOS | |
- 9.6.5 | |
- 9.8.2 | |
- 9.10.1+ucd2haskell | |
- 9.12.1-alpha | |
- hlint | |
include: | |
- name: 8.0.2 | |
use_haskell_actions: true | |
ghc_version: 8.0.2 | |
runner: ubuntu-latest | |
cabal_version: 3.2.0.0 | |
pack_options: DISABLE_TEST=y | |
ignore_error: false | |
- name: 8.2.2 | |
use_haskell_actions: true | |
ghc_version: 8.2.2 | |
runner: ubuntu-latest | |
cabal_version: 3.2.0.0 | |
pack_options: DISABLE_TEST=y | |
ignore_error: false | |
- name: 8.4.4 | |
ghc_version: 8.4.4 | |
runner: ubuntu-latest | |
cabal_version: 3.2.0.0 | |
pack_options: DISABLE_TEST=y | |
ignore_error: false | |
- name: 8.6.5 | |
ghc_version: 8.6.5 | |
runner: ubuntu-latest | |
cabal_version: 3.2.0.0 | |
ignore_error: false | |
- name: 8.8.4 | |
ghc_version: 8.8.4 | |
runner: ubuntu-latest | |
cabal_version: 3.2.0.0 | |
ignore_error: false | |
- name: 8.10.7 | |
ghc_version: 8.10.7 | |
runner: ubuntu-latest | |
cabal_version: 3.2.0.0 | |
ignore_error: false | |
- name: 9.0.2 | |
ghc_version: 9.0.2 | |
runner: ubuntu-latest | |
cabal_version: 3.2.0.0 | |
ignore_error: false | |
- name: 9.2.8+ucd2haskell | |
ghc_version: 9.2.8 | |
# [NOTE] Oldest version supported by ucd2haskell | |
pack_options: CABAL_BUILD_OPTIONS="-f ucd2haskell" | |
runner: ubuntu-latest | |
cabal_version: 3.6.2.0 | |
ignore_error: false | |
- name: 9.4.8 | |
ghc_version: 9.4.8 | |
runner: ubuntu-latest | |
cabal_version: 3.8.1.0 | |
ignore_error: false | |
- name: 9.4.8+macOS | |
ghc_version: 9.4.8 | |
runner: macos-latest | |
cabal_version: 3.10.1.0 | |
ignore_error: false | |
- name: 9.6.5 | |
ghc_version: 9.6.5 | |
runner: ubuntu-latest | |
cabal_version: 3.10.1.0 | |
ignore_error: false | |
- name: 9.8.2 | |
ghc_version: 9.8.2 | |
cabal_version: 3.12.1.0 | |
runner: ubuntu-latest | |
ignore_error: false | |
- name: 9.10.1+ucd2haskell | |
ghc_version: 9.10.1 | |
cabal_version: 3.12.1.0 | |
pack_options: CABAL_BUILD_OPTIONS="-f ucd2haskell" | |
runner: ubuntu-latest | |
ignore_error: false | |
- name: 9.12.1-alpha | |
ghc_version: head | |
cabal_version: 3.12.1.0 | |
pack_options: GHCUP_GHC_OPTIONS="-u https://downloads.haskell.org/ghc/9.12.1-alpha1/ghc-9.12.20241014-x86_64-deb12-linux.tar.xz" DISABLE_TEST=y | |
runner: ubuntu-latest | |
ignore_error: false | |
# Template for release candidates | |
# - name: 9.10.0 | |
# ghc_version: 9.8.0.XXXXX | |
# ghcup_release_channel: "https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml" | |
# runner: ubuntu-latest | |
# cabal_version: latest | |
# ignore_error: false | |
- name: hlint | |
pack_options: HLINT_OPTIONS="lint" HLINT_TARGETS="lib exe" | |
runner: ubuntu-latest | |
cabal_version: 3.2.0.0 | |
ignore_error: false | |
steps: | |
- uses: actions/checkout@v4 | |
# This is only required for 8.0.2 and 8.2.2 | |
# Fails with the following error when we use ghcup: | |
# /usr/local/.ghcup/tmp/ghcup-05bf9c49ec7cd38c/usr/local/.ghcup/ghc/8.0.2/lib/ghc-8.0.2/bin/ghc-pkg: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory | |
# This might be because the older ghc installers look for libtinfo.so.5 and not libtinfo.so | |
# If that is the case "sudo ln libtinfo.so libtinfo.so.5" should fix the problem | |
# But we can't sudo on the CI so this is the roundabout way to get the CIs working with minimal effort | |
- uses: haskell-actions/setup@v2 | |
if: ${{ matrix.use_haskell_actions }} | |
with: | |
ghc-version: ${{ matrix.ghc_version }} | |
ghcup-release-channel: ${{ matrix.ghcup_release_channel }} | |
cabal-version: ${{ matrix.cabal_version }} | |
- uses: actions/cache@v4 | |
name: Cache ~/.cabal | |
with: | |
path: ~/.cabal | |
key: ${{ runner.os }}-${{ matrix.ghc_version }}-1 | |
- name: Download packcheck | |
run: | | |
if test ! -e "$PACKCHECK_LOCAL_PATH" | |
then | |
if test -z "$PACKCHECK_GITHUB_COMMIT" | |
then | |
die "PACKCHECK_GITHUB_COMMIT is not specified." | |
fi | |
PACKCHECK_URL=${PACKCHECK_GITHUB_URL}/${PACKCHECK_GITHUB_COMMIT}/packcheck.sh | |
curl --fail -sL -o "$PACKCHECK_LOCAL_PATH" $PACKCHECK_URL || exit 1 | |
chmod +x $PACKCHECK_LOCAL_PATH | |
elif test ! -x "$PACKCHECK_LOCAL_PATH" | |
then | |
chmod +x $PACKCHECK_LOCAL_PATH | |
fi | |
- name: Run packcheck | |
run: | | |
# /usr/local/opt/curl/bin for macOS | |
export PATH=$HOME/.local/bin:$HOME/.ghcup/bin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/opt/curl/bin | |
bash -x -c "$PACKCHECK_LOCAL_PATH $BUILD" |