Skip to content

Commit 2eecf81

Browse files
committed
Allow building with template-haskell-2.23.* (GHC 9.12)
1 parent 2f84f8f commit 2eecf81

File tree

3 files changed

+50
-35
lines changed

3 files changed

+50
-35
lines changed

.github/workflows/haskell-ci.yml

Lines changed: 34 additions & 33 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.20241021
11+
# version: 0.19.20241223
1212
#
13-
# REGENDATA ("0.19.20241021",["github","--config=cabal.haskell-ci","cabal.project"])
13+
# REGENDATA ("0.19.20241223",["github","--config=cabal.haskell-ci","cabal.project"])
1414
#
1515
name: Haskell-CI
1616
on:
@@ -28,9 +28,9 @@ jobs:
2828
strategy:
2929
matrix:
3030
include:
31-
- compiler: ghc-9.12.20241014
31+
- compiler: ghc-9.12.1
3232
compilerKind: ghc
33-
compilerVersion: 9.12.20241014
33+
compilerVersion: 9.12.1
3434
setup-method: ghcup
3535
allow-failure: false
3636
- compiler: ghc-9.10.1
@@ -95,16 +95,29 @@ jobs:
9595
allow-failure: false
9696
fail-fast: false
9797
steps:
98-
- name: apt
98+
- name: apt-get install
9999
run: |
100100
apt-get update
101101
apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libtinfo5 libnuma-dev
102+
- name: Install GHCup
103+
run: |
102104
mkdir -p "$HOME/.ghcup/bin"
103105
curl -sL https://downloads.haskell.org/ghcup/0.1.30.0/x86_64-linux-ghcup-0.1.30.0 > "$HOME/.ghcup/bin/ghcup"
104106
chmod a+x "$HOME/.ghcup/bin/ghcup"
105-
"$HOME/.ghcup/bin/ghcup" config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.8.yaml;
107+
- name: Install cabal-install
108+
run: |
109+
"$HOME/.ghcup/bin/ghcup" install cabal 3.14.1.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
110+
echo "CABAL=$HOME/.ghcup/bin/cabal-3.14.1.0 -vnormal+nowrap" >> "$GITHUB_ENV"
111+
- name: Install GHC (GHCup)
112+
if: matrix.setup-method == 'ghcup'
113+
run: |
106114
"$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false)
107-
"$HOME/.ghcup/bin/ghcup" install cabal 3.12.1.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
115+
HC=$("$HOME/.ghcup/bin/ghcup" whereis ghc "$HCVER")
116+
HCPKG=$(echo "$HC" | sed 's#ghc$#ghc-pkg#')
117+
HADDOCK=$(echo "$HC" | sed 's#ghc$#haddock#')
118+
echo "HC=$HC" >> "$GITHUB_ENV"
119+
echo "HCPKG=$HCPKG" >> "$GITHUB_ENV"
120+
echo "HADDOCK=$HADDOCK" >> "$GITHUB_ENV"
108121
env:
109122
HCKIND: ${{ matrix.compilerKind }}
110123
HCNAME: ${{ matrix.compiler }}
@@ -115,21 +128,12 @@ jobs:
115128
echo "LANG=C.UTF-8" >> "$GITHUB_ENV"
116129
echo "CABAL_DIR=$HOME/.cabal" >> "$GITHUB_ENV"
117130
echo "CABAL_CONFIG=$HOME/.cabal/config" >> "$GITHUB_ENV"
118-
HCDIR=/opt/$HCKIND/$HCVER
119-
HC=$("$HOME/.ghcup/bin/ghcup" whereis ghc "$HCVER")
120-
HCPKG=$(echo "$HC" | sed 's#ghc$#ghc-pkg#')
121-
HADDOCK=$(echo "$HC" | sed 's#ghc$#haddock#')
122-
echo "HC=$HC" >> "$GITHUB_ENV"
123-
echo "HCPKG=$HCPKG" >> "$GITHUB_ENV"
124-
echo "HADDOCK=$HADDOCK" >> "$GITHUB_ENV"
125-
echo "CABAL=$HOME/.ghcup/bin/cabal-3.12.1.0 -vnormal+nowrap" >> "$GITHUB_ENV"
126131
HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')
127132
echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV"
128133
echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV"
129134
echo "ARG_BENCH=--enable-benchmarks" >> "$GITHUB_ENV"
130-
if [ $((HCNUMVER >= 91200)) -ne 0 ] ; then echo "HEADHACKAGE=true" >> "$GITHUB_ENV" ; else echo "HEADHACKAGE=false" >> "$GITHUB_ENV" ; fi
135+
echo "HEADHACKAGE=false" >> "$GITHUB_ENV"
131136
echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV"
132-
echo "GHCJSARITH=0" >> "$GITHUB_ENV"
133137
env:
134138
HCKIND: ${{ matrix.compilerKind }}
135139
HCNAME: ${{ matrix.compiler }}
@@ -156,18 +160,6 @@ jobs:
156160
repository hackage.haskell.org
157161
url: http://hackage.haskell.org/
158162
EOF
159-
if $HEADHACKAGE; then
160-
cat >> $CABAL_CONFIG <<EOF
161-
repository head.hackage.ghc.haskell.org
162-
url: https://ghc.gitlab.haskell.org/head.hackage/
163-
secure: True
164-
root-keys: 7541f32a4ccca4f97aea3b22f5e593ba2c0267546016b992dfadcd2fe944e55d
165-
26021a13b401500c8eb2761ca95c61f2d625bfef951b939a8124ed12ecf07329
166-
f76d08be13e9a61a377a85e2fb63f4c5435d40f8feb3e12eb05905edb8cdea89
167-
key-threshold: 3
168-
active-repositories: hackage.haskell.org, head.hackage.ghc.haskell.org:override
169-
EOF
170-
fi
171163
cat >> $CABAL_CONFIG <<EOF
172164
program-default-options
173165
ghc-options: $GHCJOBS +RTS -M3G -RTS
@@ -218,12 +210,21 @@ jobs:
218210
if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo "package text-show" >> cabal.project ; fi
219211
if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi
220212
cat >> cabal.project <<EOF
213+
allow-newer: aeson:ghc-prim
214+
allow-newer: aeson:template-haskell
215+
allow-newer: binary-orphans:base
216+
allow-newer: indexed-traversable:base
217+
allow-newer: indexed-traversable-instances:base
218+
allow-newer: integer-conversion:base
219+
allow-newer: microstache:base
220+
allow-newer: quickcheck-instances:base
221+
allow-newer: semialign:base
222+
allow-newer: these:base
223+
allow-newer: uuid-types:template-haskell
224+
221225
package text-show
222226
ghc-options: -Werror
223227
EOF
224-
if $HEADHACKAGE; then
225-
echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1,/g')" >> cabal.project
226-
fi
227228
$HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: any.$_ installed\n" unless /^(text-show)$/; }' >> cabal.project.local
228229
cat cabal.project
229230
cat cabal.project.local
@@ -255,8 +256,8 @@ jobs:
255256
run: |
256257
if [ $((HCNUMVER >= 80400)) -ne 0 ] ; then $CABAL v2-haddock --disable-documentation --haddock-all $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all ; fi
257258
- name: save cache
258-
uses: actions/cache/save@v4
259259
if: always()
260+
uses: actions/cache/save@v4
260261
with:
261262
key: ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }}
262263
path: ~/.cabal/store

cabal.project

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,15 @@
11
packages: .
2+
3+
-- TODO: Remove this once the ecosystem has caught up with GHC 9.12
4+
allow-newer:
5+
aeson:ghc-prim,
6+
aeson:template-haskell,
7+
binary-orphans:base,
8+
indexed-traversable:base,
9+
indexed-traversable-instances:base,
10+
integer-conversion:base,
11+
microstache:base,
12+
quickcheck-instances:base,
13+
semialign:base,
14+
these:base,
15+
uuid-types:template-haskell

text-show.cabal

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ library
157157
, containers >= 0.1 && < 0.8
158158
, ghc-boot-th >= 8.0 && < 9.13
159159
, ghc-prim
160-
, template-haskell >= 2.11 && < 2.23
160+
, template-haskell >= 2.11 && < 2.24
161161
, text >= 1.1 && < 2.2
162162
, th-abstraction >= 0.5 && < 0.8
163163
, transformers >= 0.5 && < 0.7
@@ -312,7 +312,7 @@ test-suite spec
312312
, hspec >= 2 && < 3
313313
, QuickCheck >= 2.14.3 && < 2.16
314314
, quickcheck-instances >= 0.3.28 && < 0.4
315-
, template-haskell >= 2.11 && < 2.23
315+
, template-haskell >= 2.11 && < 2.24
316316
, text >= 1.1 && < 2.2
317317
, text-show
318318
, transformers >= 0.5 && < 0.7

0 commit comments

Comments
 (0)