1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
|
name: Haskell CI
on:
push:
branches: [ master ]
pull_request:
branches: [ master ]
jobs:
build:
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest]
ghc: ['8.0.2', '8.2.2', '8.4.4', '8.6.5', '8.8.4', '8.10.7', '9.0.2', '9.2.7', '9.4.5', '9.6.1']
cabal: ['3.8.1.0']
include:
- os: macOS-latest
ghc: '9.4.5'
cabal: '3.8.1.0'
- os: macOS-latest
ghc: '9.6.1'
cabal: '3.8.1.0'
- os: windows-latest
ghc: '9.4.5'
cabal: '3.8.1.0'
- os: windows-latest
ghc: '9.6.1'
cabal: '3.8.1.0'
steps:
- uses: actions/checkout@v3
- name: Install dependencies (Ubuntu)
if: runner.os == 'Linux'
run: |
sudo apt-get -y update
sudo apt-get -y install libtinfo5 libtinfo6 libncurses5 libncurses6
- name: Install ghc/cabal
run: |
set -eux
ghcup install ghc --set ${{ matrix.ghc }}
ghcup install cabal ${{ matrix.cabal }}
shell: bash
- name: Build
run: |
set -eux
[ "$(ghc --numeric-version)" = "${{ matrix.ghc }}" ]
cabal update
cabal build --enable-tests --enable-benchmarks
cabal test
cabal bench
cabal haddock
cabal check
cabal sdist
shell: bash
- if: matrix.os == 'ubuntu-latest'
name: make all
run: |
set -eux
export "PATH=$HOME/.cabal/bin:$PATH"
cabal install --overwrite-policy=always --install-method=copy cpphs
make all
git diff --exit-code
i386:
runs-on: ubuntu-latest
container:
image: i386/ubuntu:bionic
steps:
- name: Install
run: |
apt-get update -y
apt-get install -y autoconf build-essential zlib1g-dev libgmp-dev curl libncurses5 libtinfo5 libncurses5-dev libtinfo-dev git
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_NONINTERACTIVE=1 BOOTSTRAP_HASKELL_INSTALL_NO_STACK=1 sh
- uses: actions/checkout@v1
- name: Test
run: |
. ~/.ghcup/env
cabal update
cabal test
cabal bench
# We use github.com/haskell self-hosted runners for ARM testing.
# If they become unavailable in future, put ['armv7', 'aarch64']
# back to emulation jobs above.
arm:
runs-on: [self-hosted, Linux, ARM64]
strategy:
fail-fast: true
matrix:
arch: [arm32v7, arm64v8]
steps:
- uses: docker://hasufell/arm64v8-ubuntu-haskell:focal
name: Cleanup
with:
args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +"
- name: Checkout code
uses: actions/checkout@v3
- if: matrix.arch == 'arm32v7'
uses: docker://hasufell/arm32v7-ubuntu-haskell:focal
name: Run build (arm32v7 linux)
with:
args: sh -c "cabal update && ghcup install ghc --isolate=/usr --force 9.2.2 && cabal test -w ghc-9.2.2 && cabal bench -w ghc-9.2.2"
- if: matrix.arch == 'arm64v8'
uses: docker://hasufell/arm64v8-ubuntu-haskell:focal
name: Run build (arm64v8 linux)
with:
args: sh -c "cabal update && ghcup install ghc --isolate=/usr --force 9.2.2 && cabal test -w ghc-9.2.2 && cabal bench -w ghc-9.2.2"
darwin_arm:
runs-on: ${{ matrix.os }}
env:
MACOSX_DEPLOYMENT_TARGET: 10.13
strategy:
fail-fast: false
matrix:
include:
- os: [self-hosted, macOS, ARM64]
ghc: 8.10.7
- os: [self-hosted, macOS, ARM64]
ghc: 9.2.6
- os: [self-hosted, macOS, ARM64]
ghc: 9.4.4
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Run build
run: |
bash .github/scripts/brew.sh git coreutils llvm@11 autoconf automake
export PATH="$HOME/.brew/bin:$HOME/.brew/sbin:$HOME/.brew/opt/llvm@11/bin:$PATH"
export CC="$HOME/.brew/opt/llvm@11/bin/clang"
export CXX="$HOME/.brew/opt/llvm@11/bin/clang++"
export LD=ld
export AR="$HOME/.brew/opt/llvm@11/bin/llvm-ar"
export RANLIB="$HOME/.brew/opt/llvm@11/bin/llvm-ranlib"
. .github/scripts/env.sh
curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_NONINTERACTIVE=1 BOOTSTRAP_HASKELL_INSTALL_NO_STACK=1 BOOTSTRAP_HASKELL_GHC_VERSION=${{ matrix.ghc }} BOOTSTRAP_HASKELL_ADJUST_BASHRC=yes sh
cabal test
cabal bench
env:
HOMEBREW_CHANGE_ARCH_TO_ARM: 1
|