8
8
#
9
9
# For more information, see https://github.com/haskell-CI/haskell-ci
10
10
#
11
- # version: 0.17.20231010
11
+ # version: 0.19.20240514
12
12
#
13
- # REGENDATA ("0.17.20231010 ",["github","cabal.project"])
13
+ # REGENDATA ("0.19.20240514 ",["github","cabal.project"])
14
14
#
15
15
name : Haskell-CI
16
16
on :
27
27
timeout-minutes :
28
28
60
29
29
container :
30
- image : buildpack-deps:bionic
30
+ image : buildpack-deps:jammy
31
31
continue-on-error : ${{ matrix.allow-failure }}
32
32
strategy :
33
33
matrix :
@@ -65,44 +65,24 @@ jobs:
65
65
- compiler : ghc-8.8.4
66
66
compilerKind : ghc
67
67
compilerVersion : 8.8.4
68
- setup-method : hvr-ppa
68
+ setup-method : ghcup
69
69
allow-failure : false
70
70
- compiler : ghc-8.6.5
71
71
compilerKind : ghc
72
72
compilerVersion : 8.6.5
73
- setup-method : hvr-ppa
74
- allow-failure : false
75
- - compiler : ghc-8.4.4
76
- compilerKind : ghc
77
- compilerVersion : 8.4.4
78
- setup-method : hvr-ppa
79
- allow-failure : false
80
- - compiler : ghc-8.2.2
81
- compilerKind : ghc
82
- compilerVersion : 8.2.2
83
- setup-method : hvr-ppa
73
+ setup-method : ghcup
84
74
allow-failure : false
85
75
fail-fast : false
86
76
steps :
87
77
- name : apt
88
78
run : |
89
79
apt-get update
90
80
apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libtinfo5
91
- if [ "${{ matrix.setup-method }}" = ghcup ]; then
92
- mkdir -p "$HOME/.ghcup/bin"
93
- curl -sL https://downloads.haskell.org/ghcup/0.1.19.5/x86_64-linux-ghcup-0.1.19.5 > "$HOME/.ghcup/bin/ghcup"
94
- chmod a+x "$HOME/.ghcup/bin/ghcup"
95
- "$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false)
96
- "$HOME/.ghcup/bin/ghcup" install cabal 3.10.1.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
97
- else
98
- apt-add-repository -y 'ppa:hvr/ghc'
99
- apt-get update
100
- apt-get install -y "$HCNAME"
101
- mkdir -p "$HOME/.ghcup/bin"
102
- curl -sL https://downloads.haskell.org/ghcup/0.1.19.5/x86_64-linux-ghcup-0.1.19.5 > "$HOME/.ghcup/bin/ghcup"
103
- chmod a+x "$HOME/.ghcup/bin/ghcup"
104
- "$HOME/.ghcup/bin/ghcup" install cabal 3.10.1.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
105
- fi
81
+ mkdir -p "$HOME/.ghcup/bin"
82
+ curl -sL https://downloads.haskell.org/ghcup/0.1.20.0/x86_64-linux-ghcup-0.1.20.0 > "$HOME/.ghcup/bin/ghcup"
83
+ chmod a+x "$HOME/.ghcup/bin/ghcup"
84
+ "$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false)
85
+ "$HOME/.ghcup/bin/ghcup" install cabal 3.10.2.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
106
86
env :
107
87
HCKIND : ${{ matrix.compilerKind }}
108
88
HCNAME : ${{ matrix.compiler }}
@@ -114,22 +94,13 @@ jobs:
114
94
echo "CABAL_DIR=$HOME/.cabal" >> "$GITHUB_ENV"
115
95
echo "CABAL_CONFIG=$HOME/.cabal/config" >> "$GITHUB_ENV"
116
96
HCDIR=/opt/$HCKIND/$HCVER
117
- if [ "${{ matrix.setup-method }}" = ghcup ]; then
118
- HC=$("$HOME/.ghcup/bin/ghcup" whereis ghc "$HCVER")
119
- HCPKG=$(echo "$HC" | sed 's#ghc$#ghc-pkg#')
120
- HADDOCK=$(echo "$HC" | sed 's#ghc$#haddock#')
121
- echo "HC=$HC" >> "$GITHUB_ENV"
122
- echo "HCPKG=$HCPKG" >> "$GITHUB_ENV"
123
- echo "HADDOCK=$HADDOCK" >> "$GITHUB_ENV"
124
- echo "CABAL=$HOME/.ghcup/bin/cabal-3.10.1.0 -vnormal+nowrap" >> "$GITHUB_ENV"
125
- else
126
- HC=$HCDIR/bin/$HCKIND
127
- echo "HC=$HC" >> "$GITHUB_ENV"
128
- echo "HCPKG=$HCDIR/bin/$HCKIND-pkg" >> "$GITHUB_ENV"
129
- echo "HADDOCK=$HCDIR/bin/haddock" >> "$GITHUB_ENV"
130
- echo "CABAL=$HOME/.ghcup/bin/cabal-3.10.1.0 -vnormal+nowrap" >> "$GITHUB_ENV"
131
- fi
132
-
97
+ HC=$("$HOME/.ghcup/bin/ghcup" whereis ghc "$HCVER")
98
+ HCPKG=$(echo "$HC" | sed 's#ghc$#ghc-pkg#')
99
+ HADDOCK=$(echo "$HC" | sed 's#ghc$#haddock#')
100
+ echo "HC=$HC" >> "$GITHUB_ENV"
101
+ echo "HCPKG=$HCPKG" >> "$GITHUB_ENV"
102
+ echo "HADDOCK=$HADDOCK" >> "$GITHUB_ENV"
103
+ echo "CABAL=$HOME/.ghcup/bin/cabal-3.10.2.0 -vnormal+nowrap" >> "$GITHUB_ENV"
133
104
HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')
134
105
echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV"
135
106
echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV"
@@ -176,11 +147,6 @@ jobs:
176
147
- name : update cabal index
177
148
run : |
178
149
$CABAL v2-update -v
179
- - name : cache (tools)
180
- uses : actions/cache/restore@v3
181
- with :
182
- key : ${{ runner.os }}-${{ matrix.compiler }}-tools-cb947dfc
183
- path : ~/.haskell-ci-tools
184
150
- name : install cabal-plan
185
151
run : |
186
152
mkdir -p $HOME/.cabal/bin
@@ -193,26 +159,14 @@ jobs:
193
159
- name : install cabal-docspec
194
160
run : |
195
161
mkdir -p $HOME/.cabal/bin
196
- curl -sL https://github.com/phadej/cabal-extras/releases/download/cabal-docspec-0.0.0.20230517 /cabal-docspec-0.0.0.20230517 -x86_64-linux.xz > cabal-docspec.xz
197
- echo '3b31bbe463ad4d671abbc103db49628562ec48a6604cab278207b5b6acd21ed7 cabal-docspec.xz' | sha256sum -c -
162
+ curl -sL https://github.com/phadej/cabal-extras/releases/download/cabal-docspec-0.0.0.20240414 /cabal-docspec-0.0.0.20240414 -x86_64-linux.xz > cabal-docspec.xz
163
+ echo '2d18a3f79619e8ec5f11870f926f6dc2616e02a6c889315b7f82044b95a1adb9 cabal-docspec.xz' | sha256sum -c -
198
164
xz -d < cabal-docspec.xz > $HOME/.cabal/bin/cabal-docspec
199
165
rm -f cabal-docspec.xz
200
166
chmod a+x $HOME/.cabal/bin/cabal-docspec
201
167
cabal-docspec --version
202
- - name : install hlint
203
- run : |
204
- if [ $((HCNUMVER >= 90200 && HCNUMVER < 90400)) -ne 0 ] ; then HLINTVER=$(cd /tmp && (${CABAL} v2-install -v $ARG_COMPILER --dry-run hlint --constraint='hlint >=3.5 && <3.6' | perl -ne 'if (/\bhlint-(\d+(\.\d+)*)\b/) { print "$1"; last; }')); echo "HLint version $HLINTVER" ; fi
205
- if [ $((HCNUMVER >= 90200 && HCNUMVER < 90400)) -ne 0 ] ; then if [ ! -e $HOME/.haskell-ci-tools/hlint-$HLINTVER/hlint ]; then echo "Downloading HLint version $HLINTVER"; mkdir -p $HOME/.haskell-ci-tools; curl --write-out 'Status Code: %{http_code} Redirects: %{num_redirects} Total time: %{time_total} Total Dsize: %{size_download}\n' --silent --location --output $HOME/.haskell-ci-tools/hlint-$HLINTVER.tar.gz "https://github.com/ndmitchell/hlint/releases/download/v$HLINTVER/hlint-$HLINTVER-x86_64-linux.tar.gz"; tar -xzv -f $HOME/.haskell-ci-tools/hlint-$HLINTVER.tar.gz -C $HOME/.haskell-ci-tools; fi ; fi
206
- if [ $((HCNUMVER >= 90200 && HCNUMVER < 90400)) -ne 0 ] ; then mkdir -p $CABAL_DIR/bin && ln -sf "$HOME/.haskell-ci-tools/hlint-$HLINTVER/hlint" $CABAL_DIR/bin/hlint ; fi
207
- if [ $((HCNUMVER >= 90200 && HCNUMVER < 90400)) -ne 0 ] ; then hlint --version ; fi
208
- - name : save cache (tools)
209
- uses : actions/cache/save@v3
210
- if : always()
211
- with :
212
- key : ${{ runner.os }}-${{ matrix.compiler }}-tools-cb947dfc
213
- path : ~/.haskell-ci-tools
214
168
- name : checkout
215
- uses : actions/checkout@v3
169
+ uses : actions/checkout@v4
216
170
with :
217
171
path : source
218
172
- name : initial cabal.project for sdist
@@ -271,15 +225,15 @@ jobs:
271
225
cat >> cabal.project <<EOF
272
226
allow-newer: hermes-json:attoparsec-iso8601
273
227
EOF
274
- $HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: $_ installed\n" unless /^(aeson|aeson-benchmarks|aeson-examples|attoparsec-aeson|attoparsec-iso8601|text-iso8601)$/; }' >> cabal.project.local
228
+ $HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: any. $_ installed\n" unless /^(aeson|aeson-benchmarks|aeson-examples|attoparsec-aeson|attoparsec-iso8601|text-iso8601)$/; }' >> cabal.project.local
275
229
cat cabal.project
276
230
cat cabal.project.local
277
231
- name : dump install plan
278
232
run : |
279
233
$CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH --dry-run all
280
234
cabal-plan
281
235
- name : restore cache
282
- uses : actions/cache/restore@v3
236
+ uses : actions/cache/restore@v4
283
237
with :
284
238
key : ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }}
285
239
path : ~/.cabal/store
@@ -297,18 +251,9 @@ jobs:
297
251
run : |
298
252
$CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH all
299
253
cabal-docspec $ARG_COMPILER
300
- - name : hlint
301
- run : |
302
- if [ $((HCNUMVER >= 90200 && HCNUMVER < 90400)) -ne 0 ] ; then (cd ${PKGDIR_aeson} && hlint -h ${GITHUB_WORKSPACE}/source/.hlint.yaml -XHaskell2010 src) ; fi
303
- if [ $((HCNUMVER >= 90200 && HCNUMVER < 90400)) -ne 0 ] ; then (cd ${PKGDIR_attoparsec_iso8601} && hlint -h ${GITHUB_WORKSPACE}/source/.hlint.yaml -XHaskell2010 src) ; fi
304
- if [ $((HCNUMVER >= 90200 && HCNUMVER < 90400)) -ne 0 ] ; then (cd ${PKGDIR_attoparsec_aeson} && hlint -h ${GITHUB_WORKSPACE}/source/.hlint.yaml -XHaskell2010 src) ; fi
305
- if [ $((HCNUMVER >= 90200 && HCNUMVER < 90400)) -ne 0 ] ; then (cd ${PKGDIR_text_iso8601} && hlint -h ${GITHUB_WORKSPACE}/source/.hlint.yaml -XHaskell2010 src) ; fi
306
- if [ $((HCNUMVER >= 90200 && HCNUMVER < 90400)) -ne 0 ] ; then (cd ${PKGDIR_aeson_examples} && hlint -h ${GITHUB_WORKSPACE}/source/.hlint.yaml -XHaskell2010 src/) ; fi
307
- if [ $((HCNUMVER >= 90200 && HCNUMVER < 90400)) -ne 0 ] ; then (cd ${PKGDIR_aeson_benchmarks} && hlint -h ${GITHUB_WORKSPACE}/source/.hlint.yaml -XHaskell2010 .) ; fi
308
- if [ $((HCNUMVER >= 90200 && HCNUMVER < 90400)) -ne 0 ] ; then (cd ${PKGDIR_aeson_benchmarks} && hlint -h ${GITHUB_WORKSPACE}/source/.hlint.yaml -XHaskell2010 bench examples/src) ; fi
309
254
- name : haddock
310
255
run : |
311
- if [ $((HCNUMVER >= 80600)) -ne 0 ] ; then $ CABAL v2-haddock --disable-documentation --haddock-all $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all ; fi
256
+ $ CABAL v2-haddock --disable-documentation --haddock-all $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all
312
257
- name : unconstrained build
313
258
run : |
314
259
rm -f cabal.project.local
@@ -329,7 +274,7 @@ jobs:
329
274
$CABAL v2-build $ARG_COMPILER --enable-tests --disable-benchmarks --constraint='aeson +ordered-keymap' all
330
275
$CABAL v2-test $ARG_COMPILER --enable-tests --disable-benchmarks --constraint='aeson +ordered-keymap' all
331
276
- name : save cache
332
- uses : actions/cache/save@v3
277
+ uses : actions/cache/save@v4
333
278
if : always()
334
279
with :
335
280
key : ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }}
0 commit comments