@@ -30,6 +30,16 @@ jobs:
33+ - compiler: ghc-9.2.0.20210422
35+ compilerVersion: 9.2.0.20210422
38+ - compiler: ghc-9.0.1
40+ compilerVersion: 9.0.1
41+ setup-method: hvr-ppa
33 - compiler: ghc-8.10.4
43 - compiler: ghc-8.10.4
34 compilerKind: ghc
44 compilerKind: ghc
35 compilerVersion: 8.10.4
45 compilerVersion: 8.10.4
@@ -51,9 +61,17 @@ jobs:
52 apt-get update
62 apt-get update
53 apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libtinfo5
63 apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libtinfo5
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
54− apt-add-repository -y 'ppa:hvr/ghc'
71+ apt-add-repository -y 'ppa:hvr/ghc'
55− apt-get update
72+ apt-get update
56− apt-get install -y "$HCNAME" cabal-install-3.4
73+ apt-get install -y "$HCNAME" cabal-install-3.4
58 HCKIND: ${{ matrix.compilerKind }}
76 HCKIND: ${{ matrix.compilerKind }}
59 HCNAME: ${{ matrix.compiler }}
77 HCNAME: ${{ matrix.compiler }}
@@ -65,16 +83,25 @@ jobs:
65 echo "CABAL_DIR=$HOME/.cabal" >> "$GITHUB_ENV"
83 echo "CABAL_DIR=$HOME/.cabal" >> "$GITHUB_ENV"
66 echo "CABAL_CONFIG=$HOME/.cabal/config" >> "$GITHUB_ENV"
84 echo "CABAL_CONFIG=$HOME/.cabal/config" >> "$GITHUB_ENV"
67 HCDIR=/opt/$HCKIND/$HCVER
85 HCDIR=/opt/$HCKIND/$HCVER
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"
68− HC=$HCDIR/bin/$HCKIND
93+ HC=$HCDIR/bin/$HCKIND
69− echo "HC=$HC" >> "$GITHUB_ENV"
94+ echo "HC=$HC" >> "$GITHUB_ENV"
70− echo "HCPKG=$HCDIR/bin/$HCKIND-pkg" >> "$GITHUB_ENV"
95+ echo "HCPKG=$HCDIR/bin/$HCKIND-pkg" >> "$GITHUB_ENV"
71− echo "HADDOCK=$HCDIR/bin/haddock" >> "$GITHUB_ENV"
96+ echo "HADDOCK=$HCDIR/bin/haddock" >> "$GITHUB_ENV"
72− echo "CABAL=/opt/cabal/3.4/bin/cabal -vnormal+nowrap" >> "$GITHUB_ENV"
97+ echo "CABAL=/opt/cabal/3.4/bin/cabal -vnormal+nowrap" >> "$GITHUB_ENV"
73 HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')
100 HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')
74 echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV"
101 echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV"
75 echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV"
102 echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV"
76 echo "ARG_BENCH=--enable-benchmarks" >> "$GITHUB_ENV"
103 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
78 echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV"
105 echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV"
79 echo "GHCJSARITH=0" >> "$GITHUB_ENV"
106 echo "GHCJSARITH=0" >> "$GITHUB_ENV"
@@ -103,6 +130,17 @@ jobs:
103 repository hackage.haskell.org
130 repository hackage.haskell.org
104 url: http://hackage.haskell.org/
131 url: http://hackage.haskell.org/
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/
138+ root-keys: 7541f32a4ccca4f97aea3b22f5e593ba2c0267546016b992dfadcd2fe944e55d
139+ 26021a13b401500c8eb2761ca95c61f2d625bfef951b939a8124ed12ecf07329
140+ f76d08be13e9a61a377a85e2fb63f4c5435d40f8feb3e12eb05905edb8cdea89
106 cat $CABAL_CONFIG
144 cat $CABAL_CONFIG
107 - name: versions
145 - name: versions
@@ -128,8 +166,8 @@ jobs:
128 cabal-plan --version
166 cabal-plan --version
129 - name: install doctest
167 - name: install doctest
131− $CABAL --store-dir=$HOME/.haskell-ci-tools/store v2-install $ARG_COMPILER --ignore-project -j2 doctest --constraint='doctest ^>=0.17'
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
132− doctest --version
170+ if [ $((HCNUMVER < 90000)) -ne 0 ] ; then doctest --version ; fi
133 - name: checkout
171 - name: checkout
134 uses: actions/checkout@v2
172 uses: actions/checkout@v2
@@ -159,6 +197,9 @@ jobs:
159 echo " ghc-options: -Werror=missing-methods" >> cabal.project
197 echo " ghc-options: -Werror=missing-methods" >> cabal.project
160 cat >> cabal.project <<EOF
198 cat >> cabal.project <<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
162 $HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: $_ installed\n" unless /^(effectful)$/; }' >> cabal.project.local
203 $HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: $_ installed\n" unless /^(effectful)$/; }' >> cabal.project.local
163 cat cabal.project
204 cat cabal.project
164 cat cabal.project.local
205 cat cabal.project.local
@@ -187,8 +228,8 @@ jobs:
187 $CABAL v2-test $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --test-show-details=direct
228 $CABAL v2-test $ARG_COMPILER $ARG_TESTS $ARG_BENCH all --test-show-details=direct
188 - name: doctest
229 - name: doctest
190− cd ${PKGDIR_effectful} || false
231+ if [ $((HCNUMVER < 90000)) -ne 0 ] ; then cd ${PKGDIR_effectful} || false ; fi
191− doctest -XBangPatterns -XConstraintKinds -XDataKinds -XFlexibleContexts -XFlexibleInstances -XGADTs -XLambdaCase -XMultiParamTypeClasses -XRankNTypes -XRecordWildCards -XRoleAnnotations -XScopedTypeVariables -XStrictData -XTupleSections -XTypeApplications -XTypeFamilies -XTypeOperators src
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
192 - name: cabal check
233 - name: cabal check
194 cd ${PKGDIR_effectful} || false
235 cd ${PKGDIR_effectful} || false