8
8
#
9
9
# For more information, see https://github.com/haskell-CI/haskell-ci
10
10
#
11
- # version: 0.19.20250506
11
+ # version: 0.19.20250908
12
12
#
13
- # REGENDATA ("0.19.20250506 ",["github","cabal.project"])
13
+ # REGENDATA ("0.19.20250908 ",["github","cabal.project"])
14
14
#
15
15
name : Haskell-CI
16
16
on :
32
32
strategy :
33
33
matrix :
34
34
include :
35
+ - compiler : ghc-9.14.0.20250819
36
+ compilerKind : ghc
37
+ compilerVersion : 9.14.0.20250819
38
+ setup-method : ghcup-prerelease
39
+ allow-failure : false
35
40
- compiler : ghc-9.12.2
36
41
compilerKind : ghc
37
42
compilerVersion : 9.12.2
@@ -100,8 +105,8 @@ jobs:
100
105
chmod a+x "$HOME/.ghcup/bin/ghcup"
101
106
- name : Install cabal-install
102
107
run : |
103
- "$HOME/.ghcup/bin/ghcup" install cabal 3.14.2 .0 || (cat "$HOME"/.ghcup/logs/*.* && false)
104
- echo "CABAL=$HOME/.ghcup/bin/cabal-3.14.2 .0 -vnormal+nowrap" >> "$GITHUB_ENV"
108
+ "$HOME/.ghcup/bin/ghcup" install cabal 3.16.0 .0 || (cat "$HOME"/.ghcup/logs/*.* && false)
109
+ echo "CABAL=$HOME/.ghcup/bin/cabal-3.16.0 .0 -vnormal+nowrap" >> "$GITHUB_ENV"
105
110
- name : Install GHC (GHCup)
106
111
if : matrix.setup-method == 'ghcup'
107
112
run : |
@@ -116,6 +121,21 @@ jobs:
116
121
HCKIND : ${{ matrix.compilerKind }}
117
122
HCNAME : ${{ matrix.compiler }}
118
123
HCVER : ${{ matrix.compilerVersion }}
124
+ - name : Install GHC (GHCup prerelease)
125
+ if : matrix.setup-method == 'ghcup-prerelease'
126
+ run : |
127
+ "$HOME/.ghcup/bin/ghcup" config add-release-channel prereleases
128
+ "$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false)
129
+ HC=$("$HOME/.ghcup/bin/ghcup" whereis ghc "$HCVER")
130
+ HCPKG=$(echo "$HC" | sed 's#ghc$#ghc-pkg#')
131
+ HADDOCK=$(echo "$HC" | sed 's#ghc$#haddock#')
132
+ echo "HC=$HC" >> "$GITHUB_ENV"
133
+ echo "HCPKG=$HCPKG" >> "$GITHUB_ENV"
134
+ echo "HADDOCK=$HADDOCK" >> "$GITHUB_ENV"
135
+ env :
136
+ HCKIND : ${{ matrix.compilerKind }}
137
+ HCNAME : ${{ matrix.compiler }}
138
+ HCVER : ${{ matrix.compilerVersion }}
119
139
- name : Set PATH and environment variables
120
140
run : |
121
141
echo "$HOME/.cabal/bin" >> $GITHUB_PATH
@@ -126,7 +146,7 @@ jobs:
126
146
echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV"
127
147
echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV"
128
148
echo "ARG_BENCH=--enable-benchmarks" >> "$GITHUB_ENV"
129
- echo "HEADHACKAGE=false" >> "$GITHUB_ENV"
149
+ if [ $((HCNUMVER >= 91400)) -ne 0 ] ; then echo "HEADHACKAGE=true" >> "$GITHUB_ENV" ; else echo "HEADHACKAGE= false" >> "$GITHUB_ENV" ; fi
130
150
echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV"
131
151
env :
132
152
HCKIND : ${{ matrix.compilerKind }}
@@ -154,6 +174,18 @@ jobs:
154
174
repository hackage.haskell.org
155
175
url: http://hackage.haskell.org/
156
176
EOF
177
+ if $HEADHACKAGE; then
178
+ cat >> $CABAL_CONFIG <<EOF
179
+ repository head.hackage.ghc.haskell.org
180
+ url: https://ghc.gitlab.haskell.org/head.hackage/
181
+ secure: True
182
+ root-keys: 7541f32a4ccca4f97aea3b22f5e593ba2c0267546016b992dfadcd2fe944e55d
183
+ 26021a13b401500c8eb2761ca95c61f2d625bfef951b939a8124ed12ecf07329
184
+ f76d08be13e9a61a377a85e2fb63f4c5435d40f8feb3e12eb05905edb8cdea89
185
+ key-threshold: 3
186
+ active-repositories: hackage.haskell.org, head.hackage.ghc.haskell.org:override
187
+ EOF
188
+ fi
157
189
cat >> $CABAL_CONFIG <<EOF
158
190
program-default-options
159
191
ghc-options: $GHCJOBS +RTS -M3G -RTS
@@ -177,7 +209,7 @@ jobs:
177
209
chmod a+x $HOME/.cabal/bin/cabal-plan
178
210
cabal-plan --version
179
211
- name : checkout
180
- uses : actions/checkout@v4
212
+ uses : actions/checkout@v5
181
213
with :
182
214
path : source
183
215
- name : initial cabal.project for sdist
@@ -230,24 +262,59 @@ jobs:
230
262
echo "packages: ${PKGDIR_hackage_security_HTTP}" >> cabal.project
231
263
echo "packages: ${PKGDIR_precompute_fileinfo}" >> cabal.project
232
264
echo "package hackage-security" >> cabal.project
233
- echo " ghc-options: -Werror=missing-methods" >> cabal.project
265
+ echo " ghc-options: -Werror=missing-methods -Werror=missing-fields " >> cabal.project
234
266
echo "package hackage-security-http-client" >> cabal.project
235
- echo " ghc-options: -Werror=missing-methods" >> cabal.project
267
+ echo " ghc-options: -Werror=missing-methods -Werror=missing-fields " >> cabal.project
236
268
echo "package example-client" >> cabal.project
237
- echo " ghc-options: -Werror=missing-methods" >> cabal.project
269
+ echo " ghc-options: -Werror=missing-methods -Werror=missing-fields " >> cabal.project
238
270
echo "package hackage-security-curl" >> cabal.project
239
- echo " ghc-options: -Werror=missing-methods" >> cabal.project
271
+ echo " ghc-options: -Werror=missing-methods -Werror=missing-fields " >> cabal.project
240
272
echo "package hackage-root-tool" >> cabal.project
241
- echo " ghc-options: -Werror=missing-methods" >> cabal.project
273
+ echo " ghc-options: -Werror=missing-methods -Werror=missing-fields " >> cabal.project
242
274
echo "package hackage-repo-tool" >> cabal.project
243
- echo " ghc-options: -Werror=missing-methods" >> cabal.project
275
+ echo " ghc-options: -Werror=missing-methods -Werror=missing-fields " >> cabal.project
244
276
echo "package hackage-security-HTTP" >> cabal.project
245
- echo " ghc-options: -Werror=missing-methods" >> cabal.project
277
+ echo " ghc-options: -Werror=missing-methods -Werror=missing-fields " >> cabal.project
246
278
echo "package precompute-fileinfo" >> cabal.project
247
- echo " ghc-options: -Werror=missing-methods" >> cabal.project
279
+ echo " ghc-options: -Werror=missing-methods -Werror=missing-fields" >> cabal.project
280
+ if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo "package hackage-security" >> cabal.project ; fi
281
+ if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo " ghc-options: -Werror=unused-packages" >> cabal.project ; fi
282
+ if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo "package hackage-security-http-client" >> cabal.project ; fi
283
+ if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo " ghc-options: -Werror=unused-packages" >> cabal.project ; fi
284
+ if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo "package example-client" >> cabal.project ; fi
285
+ if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo " ghc-options: -Werror=unused-packages" >> cabal.project ; fi
286
+ if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo "package hackage-security-curl" >> cabal.project ; fi
287
+ if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo " ghc-options: -Werror=unused-packages" >> cabal.project ; fi
288
+ if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo "package hackage-root-tool" >> cabal.project ; fi
289
+ if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo " ghc-options: -Werror=unused-packages" >> cabal.project ; fi
290
+ if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo "package hackage-repo-tool" >> cabal.project ; fi
291
+ if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo " ghc-options: -Werror=unused-packages" >> cabal.project ; fi
292
+ if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo "package hackage-security-HTTP" >> cabal.project ; fi
293
+ if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo " ghc-options: -Werror=unused-packages" >> cabal.project ; fi
294
+ if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo "package precompute-fileinfo" >> cabal.project ; fi
295
+ if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo " ghc-options: -Werror=unused-packages" >> cabal.project ; fi
296
+ if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo "package hackage-security" >> cabal.project ; fi
297
+ if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
298
+ if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo "package hackage-security-http-client" >> cabal.project ; fi
299
+ if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
300
+ if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo "package example-client" >> cabal.project ; fi
301
+ if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
302
+ if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo "package hackage-security-curl" >> cabal.project ; fi
303
+ if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
304
+ if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo "package hackage-root-tool" >> cabal.project ; fi
305
+ if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
306
+ if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo "package hackage-repo-tool" >> cabal.project ; fi
307
+ if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
308
+ if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo "package hackage-security-HTTP" >> cabal.project ; fi
309
+ if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
310
+ if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo "package precompute-fileinfo" >> cabal.project ; fi
311
+ if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
248
312
cat >> cabal.project <<EOF
249
313
constraints: base-compat >= 0.12.2
250
314
EOF
315
+ if $HEADHACKAGE; then
316
+ echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1,/g')" >> cabal.project
317
+ fi
251
318
$HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: any.$_ installed\n" unless /^(example-client|hackage-repo-tool|hackage-root-tool|hackage-security|hackage-security-HTTP|hackage-security-curl|hackage-security-http-client|precompute-fileinfo)$/; }' >> cabal.project.local
252
319
cat cabal.project
253
320
cat cabal.project.local
0 commit comments