88#
99# For more information, see https://github.com/haskell-CI/haskell-ci
1010#
11- # version: 0.17.20240109
11+ # version: 0.19.20240514
1212#
13- # REGENDATA ("0.17.20240109 ",["github","cabal.project"])
13+ # REGENDATA ("0.19.20240514 ",["github","cabal.project"])
1414#
1515name : Haskell-CI
1616on :
@@ -27,29 +27,29 @@ jobs:
2727 timeout-minutes :
2828 60
2929 container :
30- image : buildpack-deps:bionic
30+ image : buildpack-deps:jammy
3131 continue-on-error : ${{ matrix.allow-failure }}
3232 strategy :
3333 matrix :
3434 include :
35- - compiler : ghcjs-8.4
36- compilerKind : ghcjs
37- compilerVersion : " 8.4 "
38- setup-method : hvr-ppa
35+ - compiler : ghc-9.10.1
36+ compilerKind : ghc
37+ compilerVersion : 9.10.1
38+ setup-method : ghcup
3939 allow-failure : false
40- - compiler : ghc-9.8.1
40+ - compiler : ghc-9.8.2
4141 compilerKind : ghc
42- compilerVersion : 9.8.1
42+ compilerVersion : 9.8.2
4343 setup-method : ghcup
4444 allow-failure : false
45- - compiler : ghc-9.6.3
45+ - compiler : ghc-9.6.5
4646 compilerKind : ghc
47- compilerVersion : 9.6.3
47+ compilerVersion : 9.6.5
4848 setup-method : ghcup
4949 allow-failure : false
50- - compiler : ghc-9.4.7
50+ - compiler : ghc-9.4.8
5151 compilerKind : ghc
52- compilerVersion : 9.4.7
52+ compilerVersion : 9.4.8
5353 setup-method : ghcup
5454 allow-failure : false
5555 - compiler : ghc-9.2.8
@@ -70,119 +70,49 @@ jobs:
7070 - compiler : ghc-8.8.4
7171 compilerKind : ghc
7272 compilerVersion : 8.8.4
73- setup-method : hvr-ppa
73+ setup-method : ghcup
7474 allow-failure : false
7575 - compiler : ghc-8.6.5
7676 compilerKind : ghc
7777 compilerVersion : 8.6.5
78- setup-method : hvr-ppa
79- allow-failure : false
80- - compiler : ghc-8.4.4
81- compilerKind : ghc
82- compilerVersion : 8.4.4
83- setup-method : hvr-ppa
84- allow-failure : false
85- - compiler : ghc-8.2.2
86- compilerKind : ghc
87- compilerVersion : 8.2.2
88- setup-method : hvr-ppa
89- allow-failure : false
90- - compiler : ghc-8.0.2
91- compilerKind : ghc
92- compilerVersion : 8.0.2
93- setup-method : hvr-ppa
94- allow-failure : false
95- - compiler : ghc-7.10.3
96- compilerKind : ghc
97- compilerVersion : 7.10.3
98- setup-method : hvr-ppa
99- allow-failure : false
100- - compiler : ghc-7.8.4
101- compilerKind : ghc
102- compilerVersion : 7.8.4
103- setup-method : hvr-ppa
104- allow-failure : false
105- - compiler : ghc-7.6.3
106- compilerKind : ghc
107- compilerVersion : 7.6.3
108- setup-method : hvr-ppa
109- allow-failure : false
110- - compiler : ghc-7.4.2
111- compilerKind : ghc
112- compilerVersion : 7.4.2
113- setup-method : hvr-ppa
78+ setup-method : ghcup
11479 allow-failure : false
11580 fail-fast : false
11681 steps :
117- - name : Set GHCJS environment variables
118- run : |
119- if [ $HCKIND = ghcjs ]; then
120- echo "GHCJS=true" >> "$GITHUB_ENV"
121- echo "GHCJSARITH=1" >> "$GITHUB_ENV"
122- else
123- echo "GHCJS=false" >> "$GITHUB_ENV"
124- echo "GHCJSARITH=0" >> "$GITHUB_ENV"
125- fi
126- env :
127- HCKIND : ${{ matrix.compilerKind }}
128- HCNAME : ${{ matrix.compiler }}
129- HCVER : ${{ matrix.compilerVersion }}
13082 - name : apt
13183 run : |
13284 apt-get update
13385 apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libtinfo5
134- if [ "${{ matrix.setup-method }}" = ghcup ]; then
135- mkdir -p "$HOME/.ghcup/bin"
136- curl -sL https://downloads.haskell.org/ghcup/0.1.20.0/x86_64-linux-ghcup-0.1.20.0 > "$HOME/.ghcup/bin/ghcup"
137- chmod a+x "$HOME/.ghcup/bin/ghcup"
138- "$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false)
139- "$HOME/.ghcup/bin/ghcup" install cabal 3.10.2.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
140- else
141- apt-add-repository -y 'ppa:hvr/ghc'
142- if [ $((GHCJSARITH)) -ne 0 ] ; then apt-add-repository -y 'ppa:hvr/ghcjs' ; fi
143- if [ $((GHCJSARITH)) -ne 0 ] ; then curl -sSL "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" | apt-key add - ; fi
144- if [ $((GHCJSARITH)) -ne 0 ] ; then apt-add-repository -y 'deb https://deb.nodesource.com/node_10.x bionic main' ; fi
145- apt-get update
146- if [ $((GHCJSARITH)) -ne 0 ] ; then apt-get install -y "$HCNAME" ghc-8.4.4 nodejs ; else apt-get install -y "$HCNAME" ; fi
147- mkdir -p "$HOME/.ghcup/bin"
148- curl -sL https://downloads.haskell.org/ghcup/0.1.20.0/x86_64-linux-ghcup-0.1.20.0 > "$HOME/.ghcup/bin/ghcup"
149- chmod a+x "$HOME/.ghcup/bin/ghcup"
150- "$HOME/.ghcup/bin/ghcup" install cabal 3.10.2.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
151- fi
86+ mkdir -p "$HOME/.ghcup/bin"
87+ curl -sL https://downloads.haskell.org/ghcup/0.1.20.0/x86_64-linux-ghcup-0.1.20.0 > "$HOME/.ghcup/bin/ghcup"
88+ chmod a+x "$HOME/.ghcup/bin/ghcup"
89+ "$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false)
90+ "$HOME/.ghcup/bin/ghcup" install cabal 3.10.2.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
15291 env :
15392 HCKIND : ${{ matrix.compilerKind }}
15493 HCNAME : ${{ matrix.compiler }}
15594 HCVER : ${{ matrix.compilerVersion }}
15695 - name : Set PATH and environment variables
15796 run : |
15897 echo "$HOME/.cabal/bin" >> $GITHUB_PATH
159- if [ $((GHCJSARITH)) -ne 0 ] ; then echo "/opt/ghc/8.4.4/bin" >> $GITHUB_PATH ; fi
16098 echo "LANG=C.UTF-8" >> "$GITHUB_ENV"
16199 echo "CABAL_DIR=$HOME/.cabal" >> "$GITHUB_ENV"
162100 echo "CABAL_CONFIG=$HOME/.cabal/config" >> "$GITHUB_ENV"
163101 HCDIR=/opt/$HCKIND/$HCVER
164- if [ "${{ matrix.setup-method }}" = ghcup ]; then
165- HC=$("$HOME/.ghcup/bin/ghcup" whereis ghc "$HCVER")
166- HCPKG=$(echo "$HC" | sed 's#ghc$#ghc-pkg#')
167- HADDOCK=$(echo "$HC" | sed 's#ghc$#haddock#')
168- echo "HC=$HC" >> "$GITHUB_ENV"
169- echo "HCPKG=$HCPKG" >> "$GITHUB_ENV"
170- echo "HADDOCK=$HADDOCK" >> "$GITHUB_ENV"
171- echo "CABAL=$HOME/.ghcup/bin/cabal-3.10.2.0 -vnormal+nowrap" >> "$GITHUB_ENV"
172- else
173- HC=$HCDIR/bin/$HCKIND
174- echo "HC=$HC" >> "$GITHUB_ENV"
175- echo "HCPKG=$HCDIR/bin/$HCKIND-pkg" >> "$GITHUB_ENV"
176- echo "HADDOCK=$HCDIR/bin/haddock" >> "$GITHUB_ENV"
177- echo "CABAL=$HOME/.ghcup/bin/cabal-3.10.2.0 -vnormal+nowrap" >> "$GITHUB_ENV"
178- fi
179-
102+ HC=$("$HOME/.ghcup/bin/ghcup" whereis ghc "$HCVER")
103+ HCPKG=$(echo "$HC" | sed 's#ghc$#ghc-pkg#')
104+ HADDOCK=$(echo "$HC" | sed 's#ghc$#haddock#')
105+ echo "HC=$HC" >> "$GITHUB_ENV"
106+ echo "HCPKG=$HCPKG" >> "$GITHUB_ENV"
107+ echo "HADDOCK=$HADDOCK" >> "$GITHUB_ENV"
108+ echo "CABAL=$HOME/.ghcup/bin/cabal-3.10.2.0 -vnormal+nowrap" >> "$GITHUB_ENV"
180109 HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')
181110 echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV"
182- if [ $((GHCJSARITH || ! GHCJSARITH && HCNUMVER >= 70600)) -ne 0 ] ; then echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV" ; else echo "ARG_TESTS=--disable-tests" >> "$GITHUB_ENV" ; fi
111+ echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV"
183112 echo "ARG_BENCH=--enable-benchmarks" >> "$GITHUB_ENV"
184113 echo "HEADHACKAGE=false" >> "$GITHUB_ENV"
185114 echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV"
115+ echo "GHCJSARITH=0" >> "$GITHUB_ENV"
186116 env :
187117 HCKIND : ${{ matrix.compilerKind }}
188118 HCNAME : ${{ matrix.compiler }}
@@ -219,8 +149,6 @@ jobs:
219149 $HC --version || true
220150 $HC --print-project-git-commit-id || true
221151 $CABAL --version || true
222- if [ $((GHCJSARITH)) -ne 0 ] ; then node --version ; fi
223- if [ $((GHCJSARITH)) -ne 0 ] ; then echo $GHCJS ; fi
224152 - name : update cabal index
225153 run : |
226154 $CABAL v2-update -v
@@ -236,14 +164,14 @@ jobs:
236164 - name : install cabal-docspec
237165 run : |
238166 mkdir -p $HOME/.cabal/bin
239- curl -sL https://github.com/phadej/cabal-extras/releases/download/cabal-docspec-0.0.0.20231219 /cabal-docspec-0.0.0.20231219 -x86_64-linux.xz > cabal-docspec.xz
240- echo '8b60448275466bbe2b9409741b5dd07a41c541283017b95b44efe6e31379d067 cabal-docspec.xz' | sha256sum -c -
167+ curl -sL https://github.com/phadej/cabal-extras/releases/download/cabal-docspec-0.0.0.20240414 /cabal-docspec-0.0.0.20240414 -x86_64-linux.xz > cabal-docspec.xz
168+ echo '2d18a3f79619e8ec5f11870f926f6dc2616e02a6c889315b7f82044b95a1adb9 cabal-docspec.xz' | sha256sum -c -
241169 xz -d < cabal-docspec.xz > $HOME/.cabal/bin/cabal-docspec
242170 rm -f cabal-docspec.xz
243171 chmod a+x $HOME/.cabal/bin/cabal-docspec
244172 cabal-docspec --version
245173 - name : checkout
246- uses : actions/checkout@v3
174+ uses : actions/checkout@v4
247175 with :
248176 path : source
249177 - name : initial cabal.project for sdist
@@ -267,19 +195,19 @@ jobs:
267195 touch cabal.project
268196 touch cabal.project.local
269197 echo "packages: ${PKGDIR_tree_diff}" >> cabal.project
270- if [ $((GHCJSARITH || ! GHCJSARITH && HCNUMVER >= 80200)) -ne 0 ] ; then echo "package tree-diff" >> cabal.project ; fi
271- if [ $((GHCJSARITH || ! GHCJSARITH && HCNUMVER >= 80200)) -ne 0 ] ; then echo " ghc-options: -Werror=missing-methods" >> cabal.project ; fi
198+ echo "package tree-diff" >> cabal.project
199+ echo " ghc-options: -Werror=missing-methods" >> cabal.project
272200 cat >> cabal.project <<EOF
273201 EOF
274- $HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: $_ installed\n" unless /^(tree-diff)$/; }' >> cabal.project.local
202+ $HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: any. $_ installed\n" unless /^(tree-diff)$/; }' >> cabal.project.local
275203 cat cabal.project
276204 cat cabal.project.local
277205 - name : dump install plan
278206 run : |
279207 $CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH --dry-run all
280208 cabal-plan
281209 - name : restore cache
282- uses : actions/cache/restore@v3
210+ uses : actions/cache/restore@v4
283211 with :
284212 key : ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }}
285213 path : ~/.cabal/store
@@ -296,18 +224,18 @@ jobs:
296224 $CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --write-ghc-environment-files=always
297225 - name : tests
298226 run : |
299- if [ $((! GHCJSARITH && HCNUMVER >= 70600)) -ne 0 ] ; then $ CABAL v2-test $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --test-show-details=direct ; fi
227+ $ CABAL v2-test $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --test-show-details=direct
300228 - name : docspec
301229 run : |
302- if [ $((! GHCJSARITH && HCNUMVER >= 80000)) -ne 0 ] ; then $ CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH all ; fi
303- if [ $((! GHCJSARITH && HCNUMVER >= 80000)) -ne 0 ] ; then cabal-docspec $ARG_COMPILER ; fi
230+ $ CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH all
231+ cabal-docspec $ARG_COMPILER
304232 - name : cabal check
305233 run : |
306234 cd ${PKGDIR_tree_diff} || false
307235 ${CABAL} -vnormal check
308236 - name : haddock
309237 run : |
310- if [ $((! GHCJSARITH && HCNUMVER >= 70800)) -ne 0 ] ; then $ CABAL v2-haddock --disable-documentation --haddock-all $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all ; fi
238+ $ CABAL v2-haddock --disable-documentation --haddock-all $ARG_COMPILER --with-haddock $HADDOCK $ARG_TESTS $ARG_BENCH all
311239 - name : unconstrained build
312240 run : |
313241 rm -f cabal.project.local
@@ -317,13 +245,13 @@ jobs:
317245 rm -f cabal.project.local
318246 - name : constraint set random-hashable
319247 run : |
320- if [ $((! GHCJSARITH && HCNUMVER >= 90400 && HCNUMVER < 90600)) -ne 0 ] ; then $CABAL v2-build $ARG_COMPILER --enable-tests --disable-benchmarks --constraint='hashable >=1.3.2.0' --constraint='hashable +random-initial-seed' all --dry-run ; fi
321- if [ $((! GHCJSARITH && HCNUMVER >= 90400 && HCNUMVER < 90600)) -ne 0 ] ; then cabal-plan topo | sort ; fi
322- if [ $((! GHCJSARITH && HCNUMVER >= 90400 && HCNUMVER < 90600)) -ne 0 ] ; then $CABAL v2-build $ARG_COMPILER --enable-tests --disable-benchmarks --constraint='hashable >=1.3.2.0' --constraint='hashable +random-initial-seed' --dependencies-only -j2 all ; fi
323- if [ $((! GHCJSARITH && HCNUMVER >= 90400 && HCNUMVER < 90600)) -ne 0 ] ; then $CABAL v2-build $ARG_COMPILER --enable-tests --disable-benchmarks --constraint='hashable >=1.3.2.0' --constraint='hashable +random-initial-seed' all ; fi
324- if [ $((! GHCJSARITH && HCNUMVER >= 90400 && HCNUMVER < 90600)) -ne 0 ] ; then $CABAL v2-test $ARG_COMPILER --enable-tests --disable-benchmarks --constraint='hashable >=1.3.2.0' --constraint='hashable +random-initial-seed' all ; fi
248+ if [ $((HCNUMVER >= 90400 && HCNUMVER < 90600)) -ne 0 ] ; then $CABAL v2-build $ARG_COMPILER --enable-tests --disable-benchmarks --constraint='hashable >=1.3.2.0' --constraint='hashable +random-initial-seed' all --dry-run ; fi
249+ if [ $((HCNUMVER >= 90400 && HCNUMVER < 90600)) -ne 0 ] ; then cabal-plan topo | sort ; fi
250+ if [ $((HCNUMVER >= 90400 && HCNUMVER < 90600)) -ne 0 ] ; then $CABAL v2-build $ARG_COMPILER --enable-tests --disable-benchmarks --constraint='hashable >=1.3.2.0' --constraint='hashable +random-initial-seed' --dependencies-only -j2 all ; fi
251+ if [ $((HCNUMVER >= 90400 && HCNUMVER < 90600)) -ne 0 ] ; then $CABAL v2-build $ARG_COMPILER --enable-tests --disable-benchmarks --constraint='hashable >=1.3.2.0' --constraint='hashable +random-initial-seed' all ; fi
252+ if [ $((HCNUMVER >= 90400 && HCNUMVER < 90600)) -ne 0 ] ; then $CABAL v2-test $ARG_COMPILER --enable-tests --disable-benchmarks --constraint='hashable >=1.3.2.0' --constraint='hashable +random-initial-seed' all ; fi
325253 - name : save cache
326- uses : actions/cache/save@v3
254+ uses : actions/cache/save@v4
327255 if : always()
328256 with :
329257 key : ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }}
0 commit comments