Skip to content

Commit b5e9e40

Browse files
committed
Bump Haskell-CI to GHC 9.14 alpha1
Relax bounds for GHC 9.14
1 parent b985b81 commit b5e9e40

File tree

9 files changed

+101
-26
lines changed

9 files changed

+101
-26
lines changed

.github/workflows/haskell-ci.yml

Lines changed: 81 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
#
99
# For more information, see https://github.com/haskell-CI/haskell-ci
1010
#
11-
# version: 0.19.20250506
11+
# version: 0.19.20250908
1212
#
13-
# REGENDATA ("0.19.20250506",["github","cabal.project"])
13+
# REGENDATA ("0.19.20250908",["github","cabal.project"])
1414
#
1515
name: Haskell-CI
1616
on:
@@ -32,6 +32,11 @@ jobs:
3232
strategy:
3333
matrix:
3434
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
3540
- compiler: ghc-9.12.2
3641
compilerKind: ghc
3742
compilerVersion: 9.12.2
@@ -100,8 +105,8 @@ jobs:
100105
chmod a+x "$HOME/.ghcup/bin/ghcup"
101106
- name: Install cabal-install
102107
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"
105110
- name: Install GHC (GHCup)
106111
if: matrix.setup-method == 'ghcup'
107112
run: |
@@ -116,6 +121,21 @@ jobs:
116121
HCKIND: ${{ matrix.compilerKind }}
117122
HCNAME: ${{ matrix.compiler }}
118123
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 }}
119139
- name: Set PATH and environment variables
120140
run: |
121141
echo "$HOME/.cabal/bin" >> $GITHUB_PATH
@@ -126,7 +146,7 @@ jobs:
126146
echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV"
127147
echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV"
128148
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
130150
echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV"
131151
env:
132152
HCKIND: ${{ matrix.compilerKind }}
@@ -154,6 +174,18 @@ jobs:
154174
repository hackage.haskell.org
155175
url: http://hackage.haskell.org/
156176
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
157189
cat >> $CABAL_CONFIG <<EOF
158190
program-default-options
159191
ghc-options: $GHCJOBS +RTS -M3G -RTS
@@ -177,7 +209,7 @@ jobs:
177209
chmod a+x $HOME/.cabal/bin/cabal-plan
178210
cabal-plan --version
179211
- name: checkout
180-
uses: actions/checkout@v4
212+
uses: actions/checkout@v5
181213
with:
182214
path: source
183215
- name: initial cabal.project for sdist
@@ -230,24 +262,59 @@ jobs:
230262
echo "packages: ${PKGDIR_hackage_security_HTTP}" >> cabal.project
231263
echo "packages: ${PKGDIR_precompute_fileinfo}" >> cabal.project
232264
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
234266
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
236268
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
238270
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
240272
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
242274
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
244276
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
246278
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
248312
cat >> cabal.project <<EOF
249313
constraints: base-compat >= 0.12.2
250314
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
251318
$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
252319
cat cabal.project
253320
cat cabal.project.local

example-client/example-client.cabal

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ build-type: Simple
1212
cabal-version: >=1.10
1313

1414
tested-with:
15+
GHC == 9.14.1
1516
GHC == 9.12.2
1617
GHC == 9.10.2
1718
GHC == 9.8.4
@@ -33,7 +34,7 @@ executable example-client
3334
main-is: Main.hs
3435
other-modules: ExampleClient.Options
3536

36-
build-depends: base >= 4.11 && < 4.22,
37+
build-depends: base >= 4.11 && < 4.23,
3738
bytestring >= 0.10.8.2,
3839
directory >= 1.3.1.5,
3940
filepath >= 1.4.2,

hackage-repo-tool/hackage-repo-tool.cabal

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ homepage: https://github.com/haskell/hackage-security
2424
bug-reports: https://github.com/haskell/hackage-security/issues
2525

2626
tested-with:
27+
GHC == 9.14.1
2728
GHC == 9.12.2
2829
GHC == 9.10.2
2930
GHC == 9.8.4
@@ -59,13 +60,13 @@ executable hackage-repo-tool
5960

6061
-- For boot libraries we try to accomodate the versions bundled with
6162
-- the respective GHC release
62-
build-depends: base >= 4.11 && < 4.22,
63+
build-depends: base >= 4.11 && < 4.23,
6364
bytestring >= 0.10.8.2 && < 0.13,
6465
directory >= 1.3.1.5 && < 1.4,
6566
filepath >= 1.4.2 && < 1.6,
6667
network-uri >= 2.6 && < 2.7,
6768
network >= 2.6 && < 3.3,
68-
time >= 1.8.0.2 && < 1.15
69+
time >= 1.8.0.2 && < 1.16
6970
if !os(windows)
7071
build-depends: unix >= 2.7.2.2 && < 2.9
7172

hackage-root-tool/hackage-root-tool.cabal

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ build-type: Simple
1616
cabal-version: >=1.10
1717

1818
tested-with:
19+
GHC == 9.14.1
1920
GHC == 9.12.2
2021
GHC == 9.10.2
2122
GHC == 9.8.4

hackage-security-HTTP/hackage-security-HTTP.cabal

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ bug-reports: https://github.com/haskell/hackage-security/issues
1919
build-type: Simple
2020

2121
tested-with:
22+
GHC == 9.14.1
2223
GHC == 9.12.2
2324
GHC == 9.10.2
2425
GHC == 9.8.4
@@ -40,7 +41,7 @@ source-repository head
4041

4142
library
4243
exposed-modules: Hackage.Security.Client.Repository.HttpLib.HTTP
43-
build-depends: base >= 4.11 && < 4.22,
44+
build-depends: base >= 4.11 && < 4.23,
4445
bytestring >= 0.10.8.2 && < 0.13,
4546
HTTP >= 4000.2.19 && < 4000.5,
4647
mtl >= 2.2.2 && < 2.4,

hackage-security-curl/hackage-security-curl.cabal

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ build-type: Simple
1616
cabal-version: >=1.10
1717

1818
tested-with:
19+
GHC == 9.14.1
1920
GHC == 9.12.2
2021
GHC == 9.10.2
2122
GHC == 9.8.4
@@ -30,7 +31,7 @@ tested-with:
3031

3132
library
3233
exposed-modules: Hackage.Security.Client.Repository.HttpLib.Curl
33-
build-depends: base >= 4.11 && < 4.22,
34+
build-depends: base >= 4.11 && < 4.23,
3435
bytestring >= 0.10.8.2 && < 0.13,
3536
network-uri >= 2.6 && < 2.7,
3637
network >= 2.6 && < 3.3,

hackage-security-http-client/hackage-security-http-client.cabal

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ cabal-version: >=1.10
1616
extra-source-files: ChangeLog.md
1717

1818
tested-with:
19+
GHC == 9.14.1
1920
GHC == 9.12.2
2021
GHC == 9.10.2
2122
GHC == 9.8.4
@@ -30,7 +31,7 @@ tested-with:
3031

3132
library
3233
exposed-modules: Hackage.Security.Client.Repository.HttpLib.HttpClient
33-
build-depends: base >= 4.11 && < 4.22,
34+
build-depends: base >= 4.11 && < 4.23,
3435
bytestring >= 0.10.8.2 && < 0.13,
3536
http-client >= 0.4 && < 0.8,
3637
http-types >= 0.12.2 && < 0.13,

hackage-security/hackage-security.cabal

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ bug-reports: https://github.com/haskell/hackage-security/issues
3131
build-type: Simple
3232

3333
tested-with:
34+
GHC == 9.14.1
3435
GHC == 9.12.2
3536
GHC == 9.10.2
3637
GHC == 9.8.4
@@ -106,11 +107,11 @@ library
106107
Hackage.Security.Util.Stack
107108
Hackage.Security.Util.TypedEmbedded
108109

109-
build-depends: base >= 4.11 && < 4.22,
110+
build-depends: base >= 4.11 && < 4.23,
110111
base16-bytestring >= 0.1.1 && < 1.1,
111112
base64-bytestring >= 1.0 && < 1.3,
112113
bytestring >= 0.10.8.2 && < 0.13,
113-
containers >= 0.5.11 && < 0.8,
114+
containers >= 0.5.11 && < 0.9,
114115
cryptohash-sha256 >= 0.11 && < 0.12,
115116
directory >= 1.3.1.5 && < 1.4,
116117
ed25519 >= 0.0 && < 0.1,
@@ -123,8 +124,8 @@ library
123124
-- 0.4.2 introduces TarIndex, 0.4.4 introduces more
124125
-- functionality, 0.5.0 changes type of serialise
125126
tar >= 0.5 && < 0.7,
126-
template-haskell >= 2.13 && < 2.24,
127-
time >= 1.8.0.2 && < 1.15,
127+
template-haskell >= 2.13 && < 2.25,
128+
time >= 1.8.0.2 && < 1.16,
128129
transformers >= 0.3 && < 0.7,
129130
zlib >= 0.5 && < 0.8,
130131
-- whatever versions are bundled with ghc:

precompute-fileinfo/precompute-fileinfo.cabal

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ build-type: Simple
1515
cabal-version: >=1.10
1616

1717
tested-with:
18+
GHC == 9.14.1
1819
GHC == 9.12.2
1920
GHC == 9.10.2
2021
GHC == 9.8.4
@@ -29,9 +30,9 @@ tested-with:
2930

3031
executable precompute-fileinfo
3132
main-is: Main.hs
32-
build-depends: base >= 4.11 && < 4.22,
33+
build-depends: base >= 4.11 && < 4.23,
3334
bytestring >= 0.10.8.2 && < 0.13,
34-
containers >= 0.5.11 && < 0.8,
35+
containers >= 0.5.11 && < 0.9,
3536
deepseq >= 1.4.3 && < 1.6,
3637
filepath >= 1.4.2 && < 1.6,
3738
optparse-applicative >= 0.13 && < 0.20,

0 commit comments

Comments
 (0)