8
8
#
9
9
# For more information, see https://github.com/haskell-CI/haskell-ci
10
10
#
11
- # version: 0.16
11
+ # version: 0.19.20250115
12
12
#
13
- # REGENDATA ("0.16 ",["github","cabal.project"])
13
+ # REGENDATA ("0.19.20250115 ",["github","cabal.project"])
14
14
#
15
15
name : Haskell-CI
16
16
on :
@@ -23,11 +23,16 @@ jobs:
23
23
timeout-minutes :
24
24
60
25
25
container :
26
- image : buildpack-deps:bionic
26
+ image : buildpack-deps:jammy
27
27
continue-on-error : ${{ matrix.allow-failure }}
28
28
strategy :
29
29
matrix :
30
30
include :
31
+ - compiler : ghc-9.12.1
32
+ compilerKind : ghc
33
+ compilerVersion : 9.12.1
34
+ setup-method : ghcup
35
+ allow-failure : false
31
36
- compiler : ghc-9.10.1
32
37
compilerKind : ghc
33
38
compilerVersion : 9.10.1
@@ -38,14 +43,14 @@ jobs:
38
43
compilerVersion : 9.8.1
39
44
setup-method : ghcup
40
45
allow-failure : false
41
- - compiler : ghc-9.6.3
46
+ - compiler : ghc-9.6.1
42
47
compilerKind : ghc
43
- compilerVersion : 9.6.3
48
+ compilerVersion : 9.6.1
44
49
setup-method : ghcup
45
50
allow-failure : false
46
- - compiler : ghc-9.4.7
51
+ - compiler : ghc-9.4.2
47
52
compilerKind : ghc
48
- compilerVersion : 9.4.7
53
+ compilerVersion : 9.4.2
49
54
setup-method : ghcup
50
55
allow-failure : false
51
56
- compiler : ghc-9.2.2
56
61
- compiler : ghc-9.0.1
57
62
compilerKind : ghc
58
63
compilerVersion : 9.0.1
59
- setup-method : hvr-ppa
64
+ setup-method : ghcup
60
65
allow-failure : false
61
66
- compiler : ghc-8.10.7
62
67
compilerKind : ghc
@@ -66,39 +71,33 @@ jobs:
66
71
- compiler : ghc-8.8.3
67
72
compilerKind : ghc
68
73
compilerVersion : 8.8.3
69
- setup-method : hvr-ppa
70
- allow-failure : false
71
- - compiler : ghc-8.6.5
72
- compilerKind : ghc
73
- compilerVersion : 8.6.5
74
- setup-method : hvr-ppa
75
- allow-failure : false
76
- - compiler : ghc-8.4.4
77
- compilerKind : ghc
78
- compilerVersion : 8.4.4
79
- setup-method : hvr-ppa
74
+ setup-method : ghcup
80
75
allow-failure : false
81
76
fail-fast : false
82
77
steps :
83
- - name : apt
78
+ - name : apt-get install
84
79
run : |
85
80
apt-get update
86
81
apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libtinfo5
87
- if [ "${{ matrix.setup-method }}" = ghcup ]; then
88
- mkdir -p "$HOME/.ghcup/bin"
89
- curl -sL https://downloads.haskell.org/ghcup/0.1.19.2/x86_64-linux-ghcup-0.1.19.2 > "$HOME/.ghcup/bin/ghcup"
90
- chmod a+x "$HOME/.ghcup/bin/ghcup"
91
- "$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false)
92
- "$HOME/.ghcup/bin/ghcup" install cabal 3.10.1.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
93
- else
94
- apt-add-repository -y 'ppa:hvr/ghc'
95
- apt-get update
96
- apt-get install -y "$HCNAME"
97
- mkdir -p "$HOME/.ghcup/bin"
98
- curl -sL https://downloads.haskell.org/ghcup/0.1.19.2/x86_64-linux-ghcup-0.1.19.2 > "$HOME/.ghcup/bin/ghcup"
99
- chmod a+x "$HOME/.ghcup/bin/ghcup"
100
- "$HOME/.ghcup/bin/ghcup" install cabal 3.10.1.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
101
- fi
82
+ - name : Install GHCup
83
+ run : |
84
+ mkdir -p "$HOME/.ghcup/bin"
85
+ curl -sL https://downloads.haskell.org/ghcup/0.1.30.0/x86_64-linux-ghcup-0.1.30.0 > "$HOME/.ghcup/bin/ghcup"
86
+ chmod a+x "$HOME/.ghcup/bin/ghcup"
87
+ - name : Install cabal-install
88
+ run : |
89
+ "$HOME/.ghcup/bin/ghcup" install cabal 3.12.1.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
90
+ echo "CABAL=$HOME/.ghcup/bin/cabal-3.12.1.0 -vnormal+nowrap" >> "$GITHUB_ENV"
91
+ - name : Install GHC (GHCup)
92
+ if : matrix.setup-method == 'ghcup'
93
+ run : |
94
+ "$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false)
95
+ HC=$("$HOME/.ghcup/bin/ghcup" whereis ghc "$HCVER")
96
+ HCPKG=$(echo "$HC" | sed 's#ghc$#ghc-pkg#')
97
+ HADDOCK=$(echo "$HC" | sed 's#ghc$#haddock#')
98
+ echo "HC=$HC" >> "$GITHUB_ENV"
99
+ echo "HCPKG=$HCPKG" >> "$GITHUB_ENV"
100
+ echo "HADDOCK=$HADDOCK" >> "$GITHUB_ENV"
102
101
env :
103
102
HCKIND : ${{ matrix.compilerKind }}
104
103
HCNAME : ${{ matrix.compiler }}
@@ -109,28 +108,12 @@ jobs:
109
108
echo "LANG=C.UTF-8" >> "$GITHUB_ENV"
110
109
echo "CABAL_DIR=$HOME/.cabal" >> "$GITHUB_ENV"
111
110
echo "CABAL_CONFIG=$HOME/.cabal/config" >> "$GITHUB_ENV"
112
- HCDIR=/opt/$HCKIND/$HCVER
113
- if [ "${{ matrix.setup-method }}" = ghcup ]; then
114
- HC=$HOME/.ghcup/bin/$HCKIND-$HCVER
115
- echo "HC=$HC" >> "$GITHUB_ENV"
116
- echo "HCPKG=$HOME/.ghcup/bin/$HCKIND-pkg-$HCVER" >> "$GITHUB_ENV"
117
- echo "HADDOCK=$HOME/.ghcup/bin/haddock-$HCVER" >> "$GITHUB_ENV"
118
- echo "CABAL=$HOME/.ghcup/bin/cabal-3.10.1.0 -vnormal+nowrap" >> "$GITHUB_ENV"
119
- else
120
- HC=$HCDIR/bin/$HCKIND
121
- echo "HC=$HC" >> "$GITHUB_ENV"
122
- echo "HCPKG=$HCDIR/bin/$HCKIND-pkg" >> "$GITHUB_ENV"
123
- echo "HADDOCK=$HCDIR/bin/haddock" >> "$GITHUB_ENV"
124
- echo "CABAL=$HOME/.ghcup/bin/cabal-3.10.1.0 -vnormal+nowrap" >> "$GITHUB_ENV"
125
- fi
126
-
127
111
HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')
128
112
echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV"
129
113
echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV"
130
114
echo "ARG_BENCH=--enable-benchmarks" >> "$GITHUB_ENV"
131
115
echo "HEADHACKAGE=false" >> "$GITHUB_ENV"
132
116
echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV"
133
- echo "GHCJSARITH=0" >> "$GITHUB_ENV"
134
117
env :
135
118
HCKIND : ${{ matrix.compilerKind }}
136
119
HCNAME : ${{ matrix.compiler }}
@@ -180,15 +163,15 @@ jobs:
180
163
chmod a+x $HOME/.cabal/bin/cabal-plan
181
164
cabal-plan --version
182
165
- name : checkout
183
- uses : actions/checkout@v3
166
+ uses : actions/checkout@v4
184
167
with :
185
168
path : source
186
169
- name : initial cabal.project for sdist
187
170
run : |
188
171
touch cabal.project
189
172
echo "packages: $GITHUB_WORKSPACE/source/cborg" >> cabal.project
190
173
echo "packages: $GITHUB_WORKSPACE/source/cbor-tool" >> cabal.project
191
- if [ $((HCNUMVER < 90600)) -ne 0 ] ; then echo "packages: $GITHUB_WORKSPACE/source/serialise" >> cabal.project ; fi
174
+ echo "packages: $GITHUB_WORKSPACE/source/serialise" >> cabal.project
192
175
if [ $((HCNUMVER < 90600)) -ne 0 ] ; then echo "packages: $GITHUB_WORKSPACE/source/binary-serialise-cbor" >> cabal.project ; fi
193
176
echo "packages: $GITHUB_WORKSPACE/source/cborg-json" >> cabal.project
194
177
cat cabal.project
@@ -217,31 +200,31 @@ jobs:
217
200
touch cabal.project.local
218
201
echo "packages: ${PKGDIR_cborg}" >> cabal.project
219
202
echo "packages: ${PKGDIR_cbor_tool}" >> cabal.project
220
- if [ $((HCNUMVER < 90600)) -ne 0 ] ; then echo "packages: ${PKGDIR_serialise}" >> cabal.project ; fi
203
+ echo "packages: ${PKGDIR_serialise}" >> cabal.project
221
204
if [ $((HCNUMVER < 90600)) -ne 0 ] ; then echo "packages: ${PKGDIR_binary_serialise_cbor}" >> cabal.project ; fi
222
205
echo "packages: ${PKGDIR_cborg_json}" >> cabal.project
223
206
echo "package cborg" >> cabal.project
224
207
echo " ghc-options: -Werror=missing-methods" >> cabal.project
225
208
echo "package cbor-tool" >> cabal.project
226
209
echo " ghc-options: -Werror=missing-methods" >> cabal.project
227
- if [ $((HCNUMVER < 90600)) -ne 0 ] ; then echo "package serialise" >> cabal.project ; fi
228
- if [ $((HCNUMVER < 90600)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi
210
+ echo "package serialise" >> cabal.project
211
+ echo " ghc-options: -Werror=missing-methods" >> cabal.project
229
212
if [ $((HCNUMVER < 90600)) -ne 0 ] ; then echo "package binary-serialise-cbor" >> cabal.project ; fi
230
213
if [ $((HCNUMVER < 90600)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi
231
214
echo "package cborg-json" >> cabal.project
232
215
echo " ghc-options: -Werror=missing-methods" >> cabal.project
233
216
cat >> cabal.project <<EOF
234
217
allow-newer: store-core:text
235
218
EOF
236
- $HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: $_ installed\n" unless /^(binary-serialise-cbor|cbor-tool|cborg|cborg-json|serialise)$/; }' >> cabal.project.local
219
+ $HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: any. $_ installed\n" unless /^(binary-serialise-cbor|cbor-tool|cborg|cborg-json|serialise)$/; }' >> cabal.project.local
237
220
cat cabal.project
238
221
cat cabal.project.local
239
222
- name : dump install plan
240
223
run : |
241
224
$CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH --dry-run all
242
225
cabal-plan
243
226
- name : restore cache
244
- uses : actions/cache/restore@v3
227
+ uses : actions/cache/restore@v4
245
228
with :
246
229
key : ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }}
247
230
path : ~/.cabal/store
@@ -265,8 +248,8 @@ jobs:
265
248
${CABAL} -vnormal check
266
249
cd ${PKGDIR_cbor_tool} || false
267
250
${CABAL} -vnormal check
268
- if [ $((HCNUMVER < 90600)) -ne 0 ] ; then cd ${PKGDIR_serialise} || false ; fi
269
- if [ $((HCNUMVER < 90600)) -ne 0 ] ; then $ {CABAL} -vnormal check ; fi
251
+ cd ${PKGDIR_serialise} || false
252
+ $ {CABAL} -vnormal check
270
253
if [ $((HCNUMVER < 90600)) -ne 0 ] ; then cd ${PKGDIR_binary_serialise_cbor} || false ; fi
271
254
if [ $((HCNUMVER < 90600)) -ne 0 ] ; then ${CABAL} -vnormal check ; fi
272
255
cd ${PKGDIR_cborg_json} || false
@@ -279,8 +262,8 @@ jobs:
279
262
rm -f cabal.project.local
280
263
$CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks all
281
264
- name : save cache
282
- uses : actions/cache/save@v3
283
265
if : always()
266
+ uses : actions/cache/save@v4
284
267
with :
285
268
key : ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }}
286
269
path : ~/.cabal/store
0 commit comments