88#
99# For more information, see https://github.com/haskell-CI/haskell-ci
1010#
11- # version: 0.17.20231110
11+ # version: 0.19.20260104
1212#
13- # REGENDATA ("0.17.20231110 ",["github","cabal.project"])
13+ # REGENDATA ("0.19.20260104 ",["github","cabal.project"])
1414#
1515name : Haskell-CI
1616on :
2020 pull_request :
2121 branches :
2222 - master
23+ merge_group :
24+ branches :
25+ - master
2326jobs :
2427 linux :
2528 name : Haskell-CI - Linux - ${{ matrix.compiler }}
26- runs-on : ubuntu-20 .04
29+ runs-on : ubuntu-24 .04
2730 timeout-minutes :
2831 60
2932 container :
30- image : buildpack-deps:focal
33+ image : buildpack-deps:jammy
3134 continue-on-error : ${{ matrix.allow-failure }}
3235 strategy :
3336 matrix :
3437 include :
38+ - compiler : ghc-9.10.3
39+ compilerKind : ghc
40+ compilerVersion : 9.10.3
41+ setup-method : ghcup
42+ allow-failure : false
3543 - compiler : ghc-9.8.1
3644 compilerKind : ghc
3745 compilerVersion : 9.8.1
3846 setup-method : ghcup
39- allow-failure : true
47+ allow-failure : false
4048 - compiler : ghc-9.6.3
4149 compilerKind : ghc
4250 compilerVersion : 9.6.3
@@ -64,15 +72,29 @@ jobs:
6472 allow-failure : false
6573 fail-fast : false
6674 steps :
67- - name : apt
75+ - name : apt-get install
6876 run : |
6977 apt-get update
7078 apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libtinfo5
79+ - name : Install GHCup
80+ run : |
7181 mkdir -p "$HOME/.ghcup/bin"
72- curl -sL https://downloads.haskell.org/ghcup/0.1.20.0 /x86_64-linux-ghcup-0.1.20.0 > "$HOME/.ghcup/bin/ghcup"
82+ curl -sL https://downloads.haskell.org/ghcup/0.1.50.1 /x86_64-linux-ghcup-0.1.50.1 > "$HOME/.ghcup/bin/ghcup"
7383 chmod a+x "$HOME/.ghcup/bin/ghcup"
84+ - name : Install cabal-install
85+ run : |
86+ "$HOME/.ghcup/bin/ghcup" install cabal 3.16.0.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
87+ echo "CABAL=$HOME/.ghcup/bin/cabal-3.16.0.0 -vnormal+nowrap" >> "$GITHUB_ENV"
88+ - name : Install GHC (GHCup)
89+ if : matrix.setup-method == 'ghcup'
90+ run : |
7491 "$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false)
75- "$HOME/.ghcup/bin/ghcup" install cabal 3.10.2.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
92+ HC=$("$HOME/.ghcup/bin/ghcup" whereis ghc "$HCVER")
93+ HCPKG=$(echo "$HC" | sed 's#ghc$#ghc-pkg#')
94+ HADDOCK=$(echo "$HC" | sed 's#ghc$#haddock#')
95+ echo "HC=$HC" >> "$GITHUB_ENV"
96+ echo "HCPKG=$HCPKG" >> "$GITHUB_ENV"
97+ echo "HADDOCK=$HADDOCK" >> "$GITHUB_ENV"
7698 env :
7799 HCKIND : ${{ matrix.compilerKind }}
78100 HCNAME : ${{ matrix.compiler }}
@@ -83,21 +105,12 @@ jobs:
83105 echo "LANG=C.UTF-8" >> "$GITHUB_ENV"
84106 echo "CABAL_DIR=$HOME/.cabal" >> "$GITHUB_ENV"
85107 echo "CABAL_CONFIG=$HOME/.cabal/config" >> "$GITHUB_ENV"
86- HCDIR=/opt/$HCKIND/$HCVER
87- HC=$("$HOME/.ghcup/bin/ghcup" whereis ghc "$HCVER")
88- HCPKG=$(echo "$HC" | sed 's#ghc$#ghc-pkg#')
89- HADDOCK=$(echo "$HC" | sed 's#ghc$#haddock#')
90- echo "HC=$HC" >> "$GITHUB_ENV"
91- echo "HCPKG=$HCPKG" >> "$GITHUB_ENV"
92- echo "HADDOCK=$HADDOCK" >> "$GITHUB_ENV"
93- echo "CABAL=$HOME/.ghcup/bin/cabal-3.10.2.0 -vnormal+nowrap" >> "$GITHUB_ENV"
94108 HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')
95109 echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV"
96110 echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV"
97111 echo "ARG_BENCH=--enable-benchmarks" >> "$GITHUB_ENV"
98112 echo "HEADHACKAGE=false" >> "$GITHUB_ENV"
99113 echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV"
100- echo "GHCJSARITH=0" >> "$GITHUB_ENV"
101114 env :
102115 HCKIND : ${{ matrix.compilerKind }}
103116 HCNAME : ${{ matrix.compiler }}
@@ -154,7 +167,7 @@ jobs:
154167 chmod a+x $HOME/.cabal/bin/hpack
155168 hpack --version
156169 - name : checkout
157- uses : actions/checkout@v3
170+ uses : actions/checkout@v5
158171 with :
159172 path : source
160173 - name : generate cabal file
@@ -183,23 +196,25 @@ jobs:
183196 touch cabal.project.local
184197 echo "packages: ${PKGDIR_cobot_io}" >> cabal.project
185198 echo "package cobot-io" >> cabal.project
186- echo " ghc-options: -Werror=missing-methods" >> cabal.project
199+ echo " ghc-options: -Werror=missing-methods -Werror=missing-fields" >> cabal.project
200+ if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo "package cobot-io" >> cabal.project ; fi
201+ if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo " ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi
187202 cat >> cabal.project <<EOF
188203 allow-newer: hyraxAbif:text
189204 allow-newer: hyraxAbif:bytestring
190205
191206 package cobot-io
192207 ghc-options: -Wall -Werror -fkeep-going
193208 EOF
194- $HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: $_ installed\n" unless /^(cobot-io)$/; }' >> cabal.project.local
209+ $HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: any. $_ installed\n" unless /^(cobot-io)$/; }' >> cabal.project.local
195210 cat cabal.project
196211 cat cabal.project.local
197212 - name : dump install plan
198213 run : |
199214 $CABAL v2-build $ARG_COMPILER $ARG_TESTS $ARG_BENCH --dry-run all
200215 cabal-plan
201216 - name : restore cache
202- uses : actions/cache/restore@v3
217+ uses : actions/cache/restore@v4
203218 with :
204219 key : ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }}
205220 path : ~/.cabal/store
@@ -229,8 +244,8 @@ jobs:
229244 rm -f cabal.project.local
230245 $CABAL v2-build $ARG_COMPILER --disable-tests --disable-benchmarks all
231246 - name : save cache
232- uses : actions/cache/save@v3
233247 if : always()
248+ uses : actions/cache/save@v4
234249 with :
235250 key : ${{ runner.os }}-${{ matrix.compiler }}-${{ github.sha }}
236251 path : ~/.cabal/store
0 commit comments