@@ -70,15 +70,22 @@ jobs:
7070 compilerVersion : 8.2.2
7171 setup-method : ghcup
7272 allow-failure : false
73+ - compiler : ghc-head
74+ compilerKind : ghc
75+ compilerVersion : latest-nightly
76+ setup-method : ghcup
77+ allow-failure : true
7378 fail-fast : false
7479 steps :
7580 - name : apt
7681 run : |
7782 apt-get update
7883 apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libtinfo5 libnuma-dev
7984 mkdir -p "$HOME/.ghcup/bin"
80- curl -sL https://downloads.haskell.org/ghcup/0.1.19.2 /x86_64-linux-ghcup-0.1.19.2 > "$HOME/.ghcup/bin/ghcup"
85+ curl -sL https://downloads.haskell.org/ghcup/0.1.19.5 /x86_64-linux-ghcup-0.1.19.5 > "$HOME/.ghcup/bin/ghcup"
8186 chmod a+x "$HOME/.ghcup/bin/ghcup"
87+ "$HOME/.ghcup/bin/ghcup" config add-release-channel https://raw.githubusercontent.com/haskell/ghcup-metadata/master/ghcup-prereleases-0.0.7.yaml;
88+ "$HOME/.ghcup/bin/ghcup" config add-release-channel https://ghc.gitlab.haskell.org/ghcup-metadata/ghcup-nightlies-0.0.7.yaml;
8289 "$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false)
8390 "$HOME/.ghcup/bin/ghcup" install cabal 3.10.1.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
8491 env :
@@ -92,16 +99,18 @@ jobs:
9299 echo "CABAL_DIR=$HOME/.cabal" >> "$GITHUB_ENV"
93100 echo "CABAL_CONFIG=$HOME/.cabal/config" >> "$GITHUB_ENV"
94101 HCDIR=/opt/$HCKIND/$HCVER
95- HC=$HOME/.ghcup/bin/$HCKIND-$HCVER
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#')
96105 echo "HC=$HC" >> "$GITHUB_ENV"
97- echo "HCPKG=$HOME/.ghcup/bin/$HCKIND-pkg-$HCVER " >> "$GITHUB_ENV"
98- echo "HADDOCK=$HOME/.ghcup/bin/haddock-$HCVER " >> "$GITHUB_ENV"
106+ echo "HCPKG=$HCPKG " >> "$GITHUB_ENV"
107+ echo "HADDOCK=$HADDOCK " >> "$GITHUB_ENV"
99108 echo "CABAL=$HOME/.ghcup/bin/cabal-3.10.1.0 -vnormal+nowrap" >> "$GITHUB_ENV"
100109 HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')
101110 echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV"
102111 echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV"
103112 echo "ARG_BENCH=--enable-benchmarks" >> "$GITHUB_ENV"
104- echo "HEADHACKAGE=false" >> "$GITHUB_ENV"
113+ if [ $((HCNUMVER > 90405)) -ne 0 ] ; then echo "HEADHACKAGE=true" >> "$GITHUB_ENV" ; else echo "HEADHACKAGE= false" >> "$GITHUB_ENV" ; fi
105114 echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV"
106115 echo "GHCJSARITH=0" >> "$GITHUB_ENV"
107116 env :
@@ -130,6 +139,18 @@ jobs:
130139 repository hackage.haskell.org
131140 url: http://hackage.haskell.org/
132141 EOF
142+ if $HEADHACKAGE; then
143+ cat >> $CABAL_CONFIG <<EOF
144+ repository head.hackage.ghc.haskell.org
145+ url: https://ghc.gitlab.haskell.org/head.hackage/
146+ secure: True
147+ root-keys: 7541f32a4ccca4f97aea3b22f5e593ba2c0267546016b992dfadcd2fe944e55d
148+ 26021a13b401500c8eb2761ca95c61f2d625bfef951b939a8124ed12ecf07329
149+ f76d08be13e9a61a377a85e2fb63f4c5435d40f8feb3e12eb05905edb8cdea89
150+ key-threshold: 3
151+ active-repositories: hackage.haskell.org, head.hackage.ghc.haskell.org:override
152+ EOF
153+ fi
133154 cat >> $CABAL_CONFIG <<EOF
134155 jobs: 2
135156 EOF
@@ -225,6 +246,9 @@ jobs:
225246 package bytestring
226247 tests: False
227248 EOF
249+ if $HEADHACKAGE; then
250+ echo "allow-newer: $($HCPKG list --simple-output | sed -E 's/([a-zA-Z-]+)-[0-9.]+/*:\1,/g')" >> cabal.project
251+ fi
228252 $HCPKG list --simple-output --names-only | perl -ne 'for (split /\s+/) { print "constraints: $_ installed\n" unless /^(Cabal|Cabal-syntax|cabal-install-parsers|haskell-ci|parsec)$/; }' >> cabal.project.local
229253 cat cabal.project
230254 cat cabal.project.local
0 commit comments