diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 06b0fd5..470e666 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -15,22 +15,17 @@ jobs: matrix: os: [ubuntu-latest] ghc: ['8.6', '8.8', '8.10', '9.0', '9.2', '9.4', '9.6', '9.8'] - cabal: ['3.8.1.0'] include: - os: macOS-13 ghc: '9.4' - cabal: '3.8.1.0' - os: macOS-13 ghc: '9.6' - cabal: '3.8.1.0' - os: windows-latest ghc: '9.4' - cabal: '3.8.1.0' - os: windows-latest ghc: '9.6' - cabal: '3.8.1.0' steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install dependencies (Ubuntu) if: runner.os == 'Linux' @@ -38,15 +33,10 @@ jobs: sudo apt-get -y update sudo apt-get -y install libtinfo6 libncurses6 - - name: Install GHCup - uses: haskell/ghcup-setup@v1 - - - name: Install ghc/cabal - run: | - set -eux - ghcup install ghc --set ${{ matrix.ghc }} - ghcup install cabal --set ${{ matrix.cabal }} - shell: bash + - uses: haskell/ghcup-setup@v1 + with: + ghc: ${{ matrix.ghc }} + cabal: latest - name: Build run: | @@ -54,7 +44,6 @@ jobs: cabal update cabal build --enable-tests --enable-benchmarks cabal test - cabal bench cabal haddock cabal check cabal sdist @@ -69,7 +58,7 @@ jobs: - name: Run build (32 bit linux) uses: docker://hasufell/i386-alpine-haskell:3.12 with: - args: sh -c "cabal update && cabal test && cabal bench" + args: sh -c "cabal update && cabal test" # We use github.com/haskell self-hosted runners for ARM testing. # If they become unavailable in future, put ['armv7', 'aarch64'] @@ -105,6 +94,7 @@ jobs: runs-on: ${{ matrix.os }} env: MACOSX_DEPLOYMENT_TARGET: 10.13 + HOMEBREW_CHANGE_ARCH_TO_ARM: 1 strategy: fail-fast: false matrix: @@ -119,23 +109,25 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Install GHCup - uses: haskell/ghcup-setup@v1 + - name: Install prerequisites + run: | + bash .github/scripts/brew.sh git coreutils llvm@13 autoconf automake + echo PATH="$HOME/.brew/bin:$HOME/.brew/sbin:$HOME/.brew/opt/llvm@13/bin:$PATH" >> "$GITHUB_ENV" + echo CC="$HOME/.brew/opt/llvm@13/bin/clang" >> "$GITHUB_ENV" + echo CXX="$HOME/.brew/opt/llvm@13/bin/clang++" >> "$GITHUB_ENV" + echo LD=ld >> "$GITHUB_ENV" + echo AR="$HOME/.brew/opt/llvm@13/bin/llvm-ar" >> "$GITHUB_ENV" + echo RANLIB="$HOME/.brew/opt/llvm@13/bin/llvm-ranlib" >> "$GITHUB_ENV" + + - uses: haskell/ghcup-setup@v1 + with: + ghc: ${{ matrix.ghc }} + cabal: latest - name: Run build run: | - bash .github/scripts/brew.sh git coreutils llvm@13 autoconf automake - export PATH="$HOME/.brew/bin:$HOME/.brew/sbin:$HOME/.brew/opt/llvm@13/bin:$PATH" - export CC="$HOME/.brew/opt/llvm@13/bin/clang" - export CXX="$HOME/.brew/opt/llvm@13/bin/clang++" - export LD=ld - export AR="$HOME/.brew/opt/llvm@13/bin/llvm-ar" - export RANLIB="$HOME/.brew/opt/llvm@13/bin/llvm-ranlib" cabal update cabal test - cabal bench - env: - HOMEBREW_CHANGE_ARCH_TO_ARM: 1 freebsd: runs-on: ${{ matrix.os }} @@ -153,42 +145,15 @@ jobs: - name: Install prerequisites run: | - sudo pkg install -y curl gcc gmp gmake ncurses perl5 libffi libiconv git bash misc/compat10x misc/compat11x misc/compat12x gmake autoconf + sudo pkg install -y curl gcc gmp gmake ncurses perl5 libffi libiconv git bash misc/compat10x misc/compat11x misc/compat12x gmake llvm14 autoconf - - name: Install GHCup - uses: haskell/ghcup-setup@v1 + - uses: haskell/ghcup-setup@v1 + with: + ghc: ${{ matrix.ghc }} + cabal: latest - name: Run build run: | cabal update cabal test cabal bench - - # Emulation is incredibly slow and memory demanding. It seems that any - # executable with GHC RTS takes at least 7-8 Gb of RAM, so we can run - # `cabal` or `ghc` on their own, but cannot run them both at the same time, - # striking out `cabal test`. Instead we rely on system packages and invoke - # `ghc --make` manually, and even so `ghc -O` is prohibitively expensive. - emulated: - runs-on: ubuntu-latest - strategy: - fail-fast: true - matrix: - arch: ['s390x', 'ppc64le'] - steps: - - uses: actions/checkout@v4 - - uses: uraimo/run-on-arch-action@v2.8.1 - timeout-minutes: 60 - with: - arch: ${{ matrix.arch }} - distro: ubuntu_rolling - githubToken: ${{ github.token }} - install: | - apt-get update -y - apt-get install -y curl ghc libghc-tasty-quickcheck-dev libghc-syb-dev - run: | - ghc --version - ghc --make -itests:tests/bytestring-tests -o Main tests/bytestring-tests/Main.hs +RTS -s - ./Main +RTS -s - ghc --make -itests:tests/encoding -o Main tests/encoding/Main.hs +RTS -s - ./Main +RTS -s