on master help sign in
Bring back GHC 9.0.1 and 9.2.1-alpha2 to the CI
commit7295642c782c27301058f52aa02d08be33ea2c15 authorAndrzej Rybczak <andrzej@rybczak.net> dateSat 19 Jun 2021, 12:40 (5 years ago) parentda636d0
3 files changed+61−14
.github/workflows/haskell-ci.yml+54−13 effectful.cabal+1−1 src/Effectful/Writer.hs+6
.github/workflows/haskell-ci.yml+54−13
@@ -30,6 +30,16 @@ jobs:
3030 strategy:
3131 matrix:
3232 include:
33+ - compiler: ghc-9.2.0.20210422
34+ compilerKind: ghc
35+ compilerVersion: 9.2.0.20210422
36+ setup-method: ghcup
37+ allow-failure: true
38+ - compiler: ghc-9.0.1
39+ compilerKind: ghc
40+ compilerVersion: 9.0.1
41+ setup-method: hvr-ppa
42+ allow-failure: false
3343 - compiler: ghc-8.10.4
3444 compilerKind: ghc
3545 compilerVersion: 8.10.4
@@ -51,9 +61,17 @@ jobs:
5161 run: |
5262 apt-get update
5363 apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libtinfo5
54− apt-add-repository -y 'ppa:hvr/ghc'
55− apt-get update
56− apt-get install -y "$HCNAME" cabal-install-3.4
64+ if [ "${{ matrix.setup-method }}" = ghcup ]; then
65+ mkdir -p "$HOME/.ghcup/bin"
66+ curl -sL https://downloads.haskell.org/ghcup/0.1.14.1/x86_64-linux-ghcup-0.1.14.1 > "$HOME/.ghcup/bin/ghcup"
67+ chmod a+x "$HOME/.ghcup/bin/ghcup"
68+ "$HOME/.ghcup/bin/ghcup" install ghc "$HCVER"
69+ "$HOME/.ghcup/bin/ghcup" install cabal 3.4.0.0
70+ else
71+ apt-add-repository -y 'ppa:hvr/ghc'
72+ apt-get update
73+ apt-get install -y "$HCNAME" cabal-install-3.4
74+ fi
5775 env:
5876 HCKIND: ${{ matrix.compilerKind }}
5977 HCNAME: ${{ matrix.compiler }}
@@ -65,16 +83,25 @@ jobs:
6583 echo "CABAL_DIR=$HOME/.cabal" >> "$GITHUB_ENV"
6684 echo "CABAL_CONFIG=$HOME/.cabal/config" >> "$GITHUB_ENV"
6785 HCDIR=/opt/$HCKIND/$HCVER
68− HC=$HCDIR/bin/$HCKIND
69− echo "HC=$HC" >> "$GITHUB_ENV"
70− echo "HCPKG=$HCDIR/bin/$HCKIND-pkg" >> "$GITHUB_ENV"
71− echo "HADDOCK=$HCDIR/bin/haddock" >> "$GITHUB_ENV"
72− echo "CABAL=/opt/cabal/3.4/bin/cabal -vnormal+nowrap" >> "$GITHUB_ENV"
86+ if [ "${{ matrix.setup-method }}" = ghcup ]; then
87+ HC=$HOME/.ghcup/bin/$HCKIND-$HCVER
88+ echo "HC=$HC" >> "$GITHUB_ENV"
89+ echo "HCPKG=$HOME/.ghcup/bin/$HCKIND-pkg-$HCVER" >> "$GITHUB_ENV"
90+ echo "HADDOCK=$HOME/.ghcup/bin/haddock-$HCVER" >> "$GITHUB_ENV"
91+ echo "CABAL=$HOME/.ghcup/bin/cabal-3.4.0.0 -vnormal+nowrap" >> "$GITHUB_ENV"
92+ else
93+ HC=$HCDIR/bin/$HCKIND
94+ echo "HC=$HC" >> "$GITHUB_ENV"
95+ echo "HCPKG=$HCDIR/bin/$HCKIND-pkg" >> "$GITHUB_ENV"
96+ echo "HADDOCK=$HCDIR/bin/haddock" >> "$GITHUB_ENV"
97+ echo "CABAL=/opt/cabal/3.4/bin/cabal -vnormal+nowrap" >> "$GITHUB_ENV"
98+ fi
99+
73100 HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')
74101 echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV"
75102 echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV"
76103 echo "ARG_BENCH=--enable-benchmarks" >> "$GITHUB_ENV"
77− echo "HEADHACKAGE=false" >> "$GITHUB_ENV"
104+ if [ $((HCNUMVER >= 90200)) -ne 0 ] ; then echo "HEADHACKAGE=true" >> "$GITHUB_ENV" ; else echo "HEADHACKAGE=false" >> "$GITHUB_ENV" ; fi
78105 echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV"
79106 echo "GHCJSARITH=0" >> "$GITHUB_ENV"
80107 env:
@@ -103,6 +130,17 @@ jobs:
103130 repository hackage.haskell.org
104131 url: http://hackage.haskell.org/
105132 EOF
133+ if $HEADHACKAGE; then
134+ cat >> $CABAL_CONFIG <<EOF
135+ repository head.hackage.ghc.haskell.org
136+ url: https://ghc.gitlab.haskell.org/head.hackage/
137+ secure: True
138+ root-keys: 7541f32a4ccca4f97aea3b22f5e593ba2c0267546016b992dfadcd2fe944e55d
139+ 26021a13b401500c8eb2761ca95c61f2d625bfef951b939a8124ed12ecf07329
140+ f76d08be13e9a61a377a85e2fb63f4c5435d40f8feb3e12eb05905edb8cdea89
141+ key-threshold: 3
142+ EOF
143+ fi
106144 cat $CABAL_CONFIG
107145 - name: versions
108146 run: |
@@ -128,8 +166,8 @@ jobs:
128166 cabal-plan --version
129167 - name: install doctest
130168 run: |
131− $CABAL --store-dir=$HOME/.haskell-ci-tools/store v2-install $ARG_COMPILER --ignore-project -j2 doctest --constraint='doctest ^>=0.17'
132− doctest --version
169+ if [ $((HCNUMVER < 90000)) -ne 0 ] ; then $CABAL --store-dir=$HOME/.haskell-ci-tools/store v2-install $ARG_COMPILER --ignore-project -j2 doctest --constraint='doctest ^>=0.17' ; fi
170+ if [ $((HCNUMVER < 90000)) -ne 0 ] ; then doctest --version ; fi
133171 - name: checkout
134172 uses: actions/checkout@v2
135173 with:
@@ -159,6 +197,9 @@ jobs:
159197 echo " ghc-options: -Werror=missing-methods" >> cabal.project
160198 cat >> cabal.project <<EOF
161199 EOF
200+ if $HEADHACKAGE; then
201+ echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1,/g')" >> cabal.project
202+ fi
162203 $HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: $_ installed\n" unless /^(effectful)$/; }' >> cabal.project.local
163204 cat cabal.project
164205 cat cabal.project.local
@@ -187,8 +228,8 @@ jobs:
187228 $CABAL v2-test $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --test-show-details=direct
188229 - name: doctest
189230 run: |
190− cd ${PKGDIR_effectful} || false
191− doctest -XBangPatterns -XConstraintKinds -XDataKinds -XFlexibleContexts -XFlexibleInstances -XGADTs -XLambdaCase -XMultiParamTypeClasses -XRankNTypes -XRecordWildCards -XRoleAnnotations -XScopedTypeVariables -XStrictData -XTupleSections -XTypeApplications -XTypeFamilies -XTypeOperators src
231+ if [ $((HCNUMVER < 90000)) -ne 0 ] ; then cd ${PKGDIR_effectful} || false ; fi
232+ if [ $((HCNUMVER < 90000)) -ne 0 ] ; then doctest -XBangPatterns -XConstraintKinds -XDataKinds -XFlexibleContexts -XFlexibleInstances -XGADTs -XLambdaCase -XMultiParamTypeClasses -XRankNTypes -XRecordWildCards -XRoleAnnotations -XScopedTypeVariables -XStrictData -XTupleSections -XTypeApplications -XTypeFamilies -XTypeOperators src ; fi
192233 - name: cabal check
193234 run: |
194235 cd ${PKGDIR_effectful} || false
effectful.cabal+1−1
@@ -15,7 +15,7 @@ description: A simple, performant extensible effects library with seamless
1515extra-source-files: CHANGELOG.md
1616 README.md
1717
18−tested-with: GHC ==8.6.5 || ==8.8.4 || ==8.10.4
18+tested-with: GHC ==8.6.5 || ==8.8.4 || ==8.10.4 || ==9.0.1 || ==9.2.0.20210422
1919
2020bug-reports: https://github.com/arybczak/effectful/issues
2121source-repository head
src/Effectful/Writer.hs+6
@@ -1,3 +1,4 @@
1+{-# LANGUAGE CPP #-}
12-- | The 'Writer' as an effect.
23module Effectful.Writer
34 ( Writer
@@ -40,12 +41,17 @@ listen
4041 => Eff es a
4142 -> Eff es (a, w)
4243listen (Eff m) = unsafeEff $ \es -> mask $ \restore -> do
44+#if __GLASGOW_HASKELL__ >= 900
45+ error "'listen' temporarily doesn't compile with released GHC 9.* versions \
46+ \due to a GHC bug. If you want to use 'listen', please use GHC 8.*"
47+#else
4348 w0 <- unsafeStateEnv (\(IdE (Writer w)) -> (w, IdE (Writer mempty))) es
4449 -- If an exception is thrown, restore e0 and keep parts of e1.
4550 a <- restore (m es) `onException`
4651 unsafeModifyEnv (\(IdE (Writer w)) -> IdE (Writer (w0 `mappend` w))) es
4752 w1 <- unsafeStateEnv (\(IdE (Writer w)) -> (w, IdE (Writer (w0 `mappend` w)))) es
4853 pure (a, w1)
54+#endif
4955
5056listens
5157 :: (Writer w :> es, Monoid w)