Skip to content

Commit 818d6b7

Browse files
committed
Support Cabal-3.9 and GHC 9.6.1 alpha
1 parent 952f6da commit 818d6b7

3 files changed

Lines changed: 47 additions & 17 deletions

File tree

.github/workflows/haskell-ci.yml

Lines changed: 38 additions & 10 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.15.20221225
11+
# version: 0.15.20230203
1212
#
13-
# REGENDATA ("0.15.20221225",["github","hackage-cli.cabal"])
13+
# REGENDATA ("0.15.20230203",["github","hackage-cli.cabal"])
1414
#
1515
name: Haskell-CI
1616
on:
@@ -32,6 +32,11 @@ jobs:
3232
strategy:
3333
matrix:
3434
include:
35+
- compiler: ghc-9.6.0.20230128
36+
compilerKind: ghc
37+
compilerVersion: 9.6.0.20230128
38+
setup-method: ghcup
39+
allow-failure: true
3540
- compiler: ghc-9.4.4
3641
compilerKind: ghc
3742
compilerVersion: 9.4.4
@@ -82,8 +87,9 @@ jobs:
8287
mkdir -p "$HOME/.ghcup/bin"
8388
curl -sL https://downloads.haskell.org/ghcup/0.1.18.0/x86_64-linux-ghcup-0.1.18.0 > "$HOME/.ghcup/bin/ghcup"
8489
chmod a+x "$HOME/.ghcup/bin/ghcup"
90+
"$HOME/.ghcup/bin/ghcup" config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml;
8591
"$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false)
86-
"$HOME/.ghcup/bin/ghcup" install cabal 3.6.2.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
92+
"$HOME/.ghcup/bin/ghcup" install cabal 3.9.0.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
8793
apt-get update
8894
apt-get install -y libbrotli-dev
8995
else
@@ -93,7 +99,8 @@ jobs:
9399
mkdir -p "$HOME/.ghcup/bin"
94100
curl -sL https://downloads.haskell.org/ghcup/0.1.18.0/x86_64-linux-ghcup-0.1.18.0 > "$HOME/.ghcup/bin/ghcup"
95101
chmod a+x "$HOME/.ghcup/bin/ghcup"
96-
"$HOME/.ghcup/bin/ghcup" install cabal 3.6.2.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
102+
"$HOME/.ghcup/bin/ghcup" config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml;
103+
"$HOME/.ghcup/bin/ghcup" install cabal 3.9.0.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
97104
fi
98105
env:
99106
HCKIND: ${{ matrix.compilerKind }}
@@ -111,20 +118,20 @@ jobs:
111118
echo "HC=$HC" >> "$GITHUB_ENV"
112119
echo "HCPKG=$HOME/.ghcup/bin/$HCKIND-pkg-$HCVER" >> "$GITHUB_ENV"
113120
echo "HADDOCK=$HOME/.ghcup/bin/haddock-$HCVER" >> "$GITHUB_ENV"
114-
echo "CABAL=$HOME/.ghcup/bin/cabal-3.6.2.0 -vnormal+nowrap" >> "$GITHUB_ENV"
121+
echo "CABAL=$HOME/.ghcup/bin/cabal-3.9.0.0 -vnormal+nowrap" >> "$GITHUB_ENV"
115122
else
116123
HC=$HCDIR/bin/$HCKIND
117124
echo "HC=$HC" >> "$GITHUB_ENV"
118125
echo "HCPKG=$HCDIR/bin/$HCKIND-pkg" >> "$GITHUB_ENV"
119126
echo "HADDOCK=$HCDIR/bin/haddock" >> "$GITHUB_ENV"
120-
echo "CABAL=$HOME/.ghcup/bin/cabal-3.6.2.0 -vnormal+nowrap" >> "$GITHUB_ENV"
127+
echo "CABAL=$HOME/.ghcup/bin/cabal-3.9.0.0 -vnormal+nowrap" >> "$GITHUB_ENV"
121128
fi
122129
123130
HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')
124131
echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV"
125132
echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV"
126133
echo "ARG_BENCH=--enable-benchmarks" >> "$GITHUB_ENV"
127-
echo "HEADHACKAGE=false" >> "$GITHUB_ENV"
134+
if [ $((HCNUMVER >= 90600)) -ne 0 ] ; then echo "HEADHACKAGE=true" >> "$GITHUB_ENV" ; else echo "HEADHACKAGE=false" >> "$GITHUB_ENV" ; fi
128135
echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV"
129136
echo "GHCJSARITH=0" >> "$GITHUB_ENV"
130137
env:
@@ -153,6 +160,18 @@ jobs:
153160
repository hackage.haskell.org
154161
url: http://hackage.haskell.org/
155162
EOF
163+
if $HEADHACKAGE; then
164+
cat >> $CABAL_CONFIG <<EOF
165+
repository head.hackage.ghc.haskell.org
166+
url: https://ghc.gitlab.haskell.org/head.hackage/
167+
secure: True
168+
root-keys: 7541f32a4ccca4f97aea3b22f5e593ba2c0267546016b992dfadcd2fe944e55d
169+
26021a13b401500c8eb2761ca95c61f2d625bfef951b939a8124ed12ecf07329
170+
f76d08be13e9a61a377a85e2fb63f4c5435d40f8feb3e12eb05905edb8cdea89
171+
key-threshold: 3
172+
active-repositories: hackage.haskell.org, head.hackage.ghc.haskell.org:override
173+
EOF
174+
fi
156175
cat >> $CABAL_CONFIG <<EOF
157176
program-default-options
158177
ghc-options: $GHCJOBS +RTS -M3G -RTS
@@ -204,15 +223,18 @@ jobs:
204223
echo " ghc-options: -Werror=missing-methods" >> cabal.project
205224
cat >> cabal.project <<EOF
206225
EOF
226+
if $HEADHACKAGE; then
227+
echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1,/g')" >> cabal.project
228+
fi
207229
$HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: $_ installed\n" unless /^(Cabal|binary|hackage-cli)$/; }' >> cabal.project.local
208230
cat cabal.project
209231
cat cabal.project.local
210232
- name: dump install plan
211233
run: |
212234
$CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH --dry-run all
213235
cabal-plan
214-
- name: cache
215-
uses: actions/cache@v3
236+
- name: restore cache
237+
uses: actions/cache/restore@v3
216238
with:
217239
key: ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }}
218240
path: ~/.cabal/store
@@ -236,8 +258,14 @@ jobs:
236258
${CABAL} -vnormal check
237259
- name: haddock
238260
run: |
239-
$CABAL v2-haddock --haddock-all $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all
261+
$CABAL v2-haddock --disable-documentation --haddock-all $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all
240262
- name: unconstrained build
241263
run: |
242264
rm -f cabal.project.local
243265
$CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks all
266+
- name: save cache
267+
uses: actions/cache/save@v3
268+
if: always()
269+
with:
270+
key: ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }}
271+
path: ~/.cabal/store

hackage-cli.cabal

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
cabal-version: 2.4
22
name: hackage-cli
3-
version: 0.1.0.0
4-
x-revision: 1
3+
version: 0.1.0.1
54

65
synopsis: CLI tool for Hackage
76
description:
@@ -19,6 +18,7 @@ build-type: Simple
1918
-- Supported GHC versions when building with cabal:
2019
tested-with:
2120
-- Keep in descending order.
21+
GHC == 9.6.0
2222
GHC == 9.4.4
2323
GHC == 9.2.5
2424
GHC == 9.0.2
@@ -36,7 +36,6 @@ extra-source-files:
3636
-- Supported GHC versions when building with stack:
3737
stack-9.4.4.yaml
3838
stack-9.2.5.yaml
39-
stack-9.2.4.yaml
4039
stack-9.0.2.yaml
4140
stack-8.10.7.yaml
4241

@@ -51,10 +50,9 @@ library cabal-revisions
5150
ghc-options: -Wall -Wcompat
5251

5352
build-depends:
54-
, base >= 4.10.0.0 && < 4.18
53+
, base >= 4.10.0.0 && < 4.19
5554
, bytestring >= 0.10.4.0 && < 0.12
56-
, Cabal >= 3.4 && < 3.9
57-
-- issue #55: build failure with Cabal-3.9.0.0
55+
, Cabal >= 3.4 && < 3.11
5856
, containers >= 0.5.0.0 && < 0.7
5957
, mtl >= 2.2.2 && < 2.3 || >= 2.3.1 && < 2.4
6058
, pretty ^>= 1.1.2

lib/Distribution/Server/Util/CabalRevisions.hs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,12 +176,16 @@ checkCabalFileRevision checkXRevision old new = do
176176
newwarns -> fail $ "New parse warning: "
177177
++ unlines (map (showPWarning filename) newwarns)
178178

179+
checkPackageChecks :: Check GenericPackageDescription
179180
checkPackageChecks pkg pkg' =
180181
let checks = checkPackage pkg Nothing
181182
checks' = checkPackage pkg' Nothing
182183
in case checks' \\ checks of
183184
[] -> return ()
184-
newchecks -> fail $ unlines (map explanation newchecks)
185+
newchecks -> fail $ unlines (map ppPackageCheck newchecks)
186+
#if !MIN_VERSION_Cabal(3,9,0)
187+
where ppPackageCheck = explanation
188+
#endif
185189

186190
checkGenericPackageDescription :: Bool -> Check GenericPackageDescription
187191
checkGenericPackageDescription checkXRevision

0 commit comments

Comments
 (0)