88# 
99#  For more information, see https://github.com/haskell-CI/haskell-ci
1010# 
11- #  version: 0.19.20250506 
11+ #  version: 0.19.20250821 
1212# 
13- #  REGENDATA ("0.19.20250506 ",["github","cabal.project"])
13+ #  REGENDATA ("0.19.20250821 ",["github","cabal.project"])
1414# 
1515name : Haskell-CI 
1616on :
2828    strategy :
2929      matrix :
3030        include :
31+           - compiler : ghc-9.14.0.20250819 
32+             compilerKind : ghc 
33+             compilerVersion : 9.14.0.20250819 
34+             setup-method : ghcup-prerelease 
35+             allow-failure : false 
3136          - compiler : ghc-9.12.2 
3237            compilerKind : ghc 
3338            compilerVersion : 9.12.2 
@@ -107,8 +112,8 @@ jobs:
107112          chmod a+x "$HOME/.ghcup/bin/ghcup" 
108113       - name : Install cabal-install 
109114        run : | 
110-           "$HOME/.ghcup/bin/ghcup" install cabal 3.14.2 .0 || (cat "$HOME"/.ghcup/logs/*.* && false) 
111-           echo "CABAL=$HOME/.ghcup/bin/cabal-3.14.2 .0 -vnormal+nowrap" >> "$GITHUB_ENV" 
115+           "$HOME/.ghcup/bin/ghcup" install cabal 3.16.0 .0 || (cat "$HOME"/.ghcup/logs/*.* && false) 
116+           echo "CABAL=$HOME/.ghcup/bin/cabal-3.16.0 .0 -vnormal+nowrap" >> "$GITHUB_ENV" 
112117       - name : Install GHC (GHCup) 
113118        if : matrix.setup-method == 'ghcup' 
114119        run : | 
@@ -123,6 +128,21 @@ jobs:
123128          HCKIND : ${{ matrix.compilerKind }} 
124129          HCNAME : ${{ matrix.compiler }} 
125130          HCVER : ${{ matrix.compilerVersion }} 
131+       - name : Install GHC (GHCup prerelease) 
132+         if : matrix.setup-method == 'ghcup-prerelease' 
133+         run : | 
134+           "$HOME/.ghcup/bin/ghcup" config add-release-channel prereleases 
135+           "$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false) 
136+           HC=$("$HOME/.ghcup/bin/ghcup" whereis ghc "$HCVER") 
137+           HCPKG=$(echo "$HC" | sed 's#ghc$#ghc-pkg#') 
138+           HADDOCK=$(echo "$HC" | sed 's#ghc$#haddock#') 
139+           echo "HC=$HC" >> "$GITHUB_ENV" 
140+           echo "HCPKG=$HCPKG" >> "$GITHUB_ENV" 
141+           echo "HADDOCK=$HADDOCK" >> "$GITHUB_ENV" 
142+          env :
143+           HCKIND : ${{ matrix.compilerKind }} 
144+           HCNAME : ${{ matrix.compiler }} 
145+           HCVER : ${{ matrix.compilerVersion }} 
126146      - name : Set PATH and environment variables 
127147        run : | 
128148          echo "$HOME/.cabal/bin" >> $GITHUB_PATH 
@@ -133,7 +153,7 @@ jobs:
133153          echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV" 
134154          echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV" 
135155          echo "ARG_BENCH=--enable-benchmarks" >> "$GITHUB_ENV" 
136-           echo "HEADHACKAGE=false" >> "$GITHUB_ENV" 
156+           if [ $((HCNUMVER >= 91400)) -ne 0 ] ; then  echo "HEADHACKAGE=true" >> "$GITHUB_ENV" ; else echo "HEADHACKAGE= false" >> "$GITHUB_ENV" ; fi  
137157          echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV" 
138158         env :
139159          HCKIND : ${{ matrix.compilerKind }} 
@@ -161,6 +181,18 @@ jobs:
161181          repository hackage.haskell.org 
162182            url: http://hackage.haskell.org/ 
163183          EOF 
184+           if $HEADHACKAGE; then 
185+           cat >> $CABAL_CONFIG <<EOF 
186+           repository head.hackage.ghc.haskell.org 
187+              url: https://ghc.gitlab.haskell.org/head.hackage/ 
188+              secure: True  
189+              root-keys: 7541f32a4ccca4f97aea3b22f5e593ba2c0267546016b992dfadcd2fe944e55d 
190+                         26021a13b401500c8eb2761ca95c61f2d625bfef951b939a8124ed12ecf07329 
191+                         f76d08be13e9a61a377a85e2fb63f4c5435d40f8feb3e12eb05905edb8cdea89 
192+              key-threshold: 3 
193+           active-repositories: hackage.haskell.org, head.hackage.ghc.haskell.org:override 
194+           EOF 
195+           fi 
164196          cat >> $CABAL_CONFIG <<EOF 
165197          program-default-options 
166198            ghc-options: $GHCJOBS +RTS -M3G -RTS 
@@ -213,11 +245,22 @@ jobs:
213245          echo "packages: ${PKGDIR_zlib}" >> cabal.project 
214246          echo "packages: ${PKGDIR_zlib_clib}" >> cabal.project 
215247          if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo "package zlib" >> cabal.project ; fi 
216-           if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo "    ghc-options: -Werror=missing-methods" >> cabal.project ; fi 
248+           if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo "    ghc-options: -Werror=missing-methods -Werror=missing-fields " >> cabal.project ; fi 
217249          if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo "package zlib-clib" >> cabal.project ; fi 
218-           if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo "    ghc-options: -Werror=missing-methods" >> cabal.project ; fi 
250+           if [ $((HCNUMVER >= 80200)) -ne 0 ] ; then echo "    ghc-options: -Werror=missing-methods -Werror=missing-fields" >> cabal.project ; fi 
251+           if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo "package zlib" >> cabal.project ; fi 
252+           if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo "    ghc-options: -Werror=unused-packages" >> cabal.project ; fi 
253+           if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo "package zlib-clib" >> cabal.project ; fi 
254+           if [ $((HCNUMVER >= 90400)) -ne 0 ] ; then echo "    ghc-options: -Werror=unused-packages" >> cabal.project ; fi 
255+           if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo "package zlib" >> cabal.project ; fi 
256+           if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo "    ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi 
257+           if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo "package zlib-clib" >> cabal.project ; fi 
258+           if [ $((HCNUMVER >= 90000)) -ne 0 ] ; then echo "    ghc-options: -Werror=incomplete-patterns -Werror=incomplete-uni-patterns" >> cabal.project ; fi 
219259          cat >> cabal.project <<EOF 
220260          EOF 
261+           if $HEADHACKAGE; then 
262+           echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1,/g')" >> cabal.project 
263+           fi 
221264          $HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: any.$_ installed\n" unless /^(zlib|zlib-clib)$/; }' >> cabal.project.local 
222265          cat cabal.project 
223266          cat cabal.project.local 
0 commit comments