|
89 | 89 | cd bytestring-*/ |
90 | 90 | bld() { cabal build bytestring:tests --enable-tests --enable-benchmarks; } |
91 | 91 | bld || bld || bld |
92 | | - |
| 92 | +
|
93 | 93 | - name: Run Test |
94 | 94 | # test broken linking on windows: https://github.com/haskell/bytestring/issues/497 |
95 | 95 | run: | |
@@ -122,7 +122,7 @@ jobs: |
122 | 122 | strategy: |
123 | 123 | fail-fast: true |
124 | 124 | matrix: |
125 | | - arch: ['s390x', 'ppc64le', 'armv7', 'aarch64'] |
| 125 | + arch: ['s390x', 'ppc64le'] |
126 | 126 | steps: |
127 | 127 | - uses: actions/checkout@v3 |
128 | 128 | |
@@ -187,18 +187,42 @@ jobs: |
187 | 187 | - name: Install |
188 | 188 | run: | |
189 | 189 | apt-get update -y |
190 | | - apt-get install -y ghc cabal-install |
| 190 | + apt-get install -y autoconf build-essential zlib1g-dev libgmp-dev curl libncurses5 libtinfo5 libncurses5-dev libtinfo-dev |
| 191 | + curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | BOOTSTRAP_HASKELL_NONINTERACTIVE=1 BOOTSTRAP_HASKELL_INSTALL_NO_STACK=1 sh |
191 | 192 | - uses: actions/checkout@v1 |
192 | | - # We need to break dependency circuit between optparse-applicative, |
193 | | - # process, unix and bytestring. Newer versions of Cabal are capable |
194 | | - # of coming up with these automatically, but older ones need a hint. |
195 | | - # Specifically, we need to inform Cabal that: |
196 | | - # |
197 | | - # * optparse-applicative doesn't use process; |
198 | | - # * QuickCheck uses the old random package; and |
199 | | - # * tasty doesn't use unix. |
200 | 193 | - name: Test |
201 | 194 | run: | |
| 195 | + source ~/.ghcup/env |
202 | 196 | cabal update |
203 | | - cabal install --dependencies-only --enable-tests --constraint 'optparse-applicative -process' --constraint 'QuickCheck +old-random' --constraint 'tasty -unix' |
204 | 197 | cabal test |
| 198 | +
|
| 199 | + # We use github.com/haskell self-hosted runners for ARM testing. |
| 200 | + # If they become unavailable in future, put ['armv7', 'aarch64'] |
| 201 | + # back to emulation jobs above. |
| 202 | + arm: |
| 203 | + needs: build |
| 204 | + runs-on: [self-hosted, Linux, ARM64] |
| 205 | + strategy: |
| 206 | + fail-fast: true |
| 207 | + matrix: |
| 208 | + arch: [arm32v7, arm64v8] |
| 209 | + steps: |
| 210 | + - uses: docker://hasufell/arm64v8-ubuntu-haskell:focal |
| 211 | + name: Cleanup |
| 212 | + with: |
| 213 | + args: "find . -mindepth 1 -maxdepth 1 -exec rm -rf -- {} +" |
| 214 | + |
| 215 | + - name: Checkout code |
| 216 | + uses: actions/checkout@v3 |
| 217 | + |
| 218 | + - if: matrix.arch == 'arm32v7' |
| 219 | + uses: docker://hasufell/arm32v7-ubuntu-haskell:focal |
| 220 | + name: Run build (arm32v7 linux) |
| 221 | + with: |
| 222 | + args: sh -c "cabal update && cabal test" |
| 223 | + |
| 224 | + - if: matrix.arch == 'arm64v8' |
| 225 | + uses: docker://hasufell/arm64v8-ubuntu-haskell:focal |
| 226 | + name: Run build (arm64v8 linux) |
| 227 | + with: |
| 228 | + args: sh -c "cabal update && cabal test" |
0 commit comments