@@ -70,15 +70,22 @@ jobs:
70
70
compilerVersion : 8.2.2
71
71
setup-method : ghcup
72
72
allow-failure : false
73
+ - compiler : ghc-head
74
+ compilerKind : ghc
75
+ compilerVersion : latest-nightly
76
+ setup-method : ghcup
77
+ allow-failure : true
73
78
fail-fast : false
74
79
steps :
75
80
- name : apt
76
81
run : |
77
82
apt-get update
78
83
apt-get install -y --no-install-recommends gnupg ca-certificates dirmngr curl git software-properties-common libtinfo5 libnuma-dev
79
84
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"
81
86
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;
82
89
"$HOME/.ghcup/bin/ghcup" install ghc "$HCVER" || (cat "$HOME"/.ghcup/logs/*.* && false)
83
90
"$HOME/.ghcup/bin/ghcup" install cabal 3.10.1.0 || (cat "$HOME"/.ghcup/logs/*.* && false)
84
91
env :
@@ -92,16 +99,18 @@ jobs:
92
99
echo "CABAL_DIR=$HOME/.cabal" >> "$GITHUB_ENV"
93
100
echo "CABAL_CONFIG=$HOME/.cabal/config" >> "$GITHUB_ENV"
94
101
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#')
96
105
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"
99
108
echo "CABAL=$HOME/.ghcup/bin/cabal-3.10.1.0 -vnormal+nowrap" >> "$GITHUB_ENV"
100
109
HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\d+)\.(\d+)\.(\d+)(\.(\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')
101
110
echo "HCNUMVER=$HCNUMVER" >> "$GITHUB_ENV"
102
111
echo "ARG_TESTS=--enable-tests" >> "$GITHUB_ENV"
103
112
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
105
114
echo "ARG_COMPILER=--$HCKIND --with-compiler=$HC" >> "$GITHUB_ENV"
106
115
echo "GHCJSARITH=0" >> "$GITHUB_ENV"
107
116
env :
@@ -130,6 +139,18 @@ jobs:
130
139
repository hackage.haskell.org
131
140
url: http://hackage.haskell.org/
132
141
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
133
154
cat >> $CABAL_CONFIG <<EOF
134
155
jobs: 2
135
156
EOF
@@ -225,6 +246,9 @@ jobs:
225
246
package bytestring
226
247
tests: False
227
248
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
228
252
$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
229
253
cat cabal.project
230
254
cat cabal.project.local
0 commit comments