7676 - name : Provision prover (${{ matrix.backend }})
7777 run : |
7878 set -euo pipefail
79- sudo apt-get update
79+ # Retry apt-get update once on mirror failure before proceeding.
80+ sudo apt-get update -qq || sudo apt-get update -qq --fix-missing
8081 case "${{ matrix.backend }}" in
81- z3) sudo apt-get install -y z3 ;;
82+ z3) sudo apt-get install -y --fix-missing z3 ;;
8283 cvc5) # Since cvc5 1.2.0 releases ship as a zip with the binary at
8384 # bin/cvc5; the old bare `cvc5-Linux-static` asset no longer exists.
8485 curl -sSL --max-time 120 -o /tmp/cvc5.zip \
@@ -92,17 +93,17 @@ jobs:
9293 https://github.com/vprover/vampire/releases/download/v5.0.1/vampire-Linux-X64.zip
9394 unzip -j -o /tmp/vampire.zip -d /tmp
9495 sudo install -m 0755 /tmp/vampire /usr/local/bin/vampire ;;
95- eprover) sudo apt-get install -y eprover ;;
96- spass) sudo apt-get install -y spass ;;
96+ eprover) sudo apt-get install -y --fix-missing eprover ;;
97+ spass) sudo apt-get install -y --fix-missing spass ;;
9798 alt-ergo) # alt-ergo is not in the Ubuntu 24.04 (noble) apt repos.
9899 # Install the prebuilt musl static binary from OCamlPro's
99100 # GitHub releases instead.
100101 curl -sSL --max-time 120 -o /tmp/alt-ergo \
101102 https://github.com/OCamlPro/alt-ergo/releases/download/v2.6.3/alt-ergo-v2.6.3-x86_64-linux-musl
102103 sudo install -m 0755 /tmp/alt-ergo /usr/local/bin/alt-ergo ;;
103- glpk) sudo apt-get install -y glpk-utils ;;
104- minizinc) sudo apt-get install -y minizinc ;;
105- chuffed) sudo apt-get install -y minizinc # chuffed bundled with minizinc-ide on recent ubuntu
104+ glpk) sudo apt-get install -y --fix-missing glpk-utils ;;
105+ minizinc) sudo apt-get install -y --fix-missing minizinc ;;
106+ chuffed) sudo apt-get install -y --fix-missing minizinc # chuffed bundled with minizinc-ide on recent ubuntu
106107 ;;
107108 esac
108109 "${{ matrix.backend }}" --version 2>/dev/null || "${{ matrix.backend }}" --help 2>/dev/null || true
@@ -125,8 +126,8 @@ jobs:
125126 uses : actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
126127 - name : Install Guix
127128 run : |
128- sudo apt-get update
129- sudo apt-get install -y guix
129+ sudo apt-get update -qq || sudo apt-get update -qq --fix-missing
130+ sudo apt-get install -y --fix-missing guix
130131 - name : Resolve manifest (doesn't run tests — just proves the .scm parses)
131132 run : |
132133 guix describe || true
@@ -165,13 +166,13 @@ jobs:
165166 continue-on-error : true
166167 run : |
167168 set -euo pipefail
168- sudo apt-get update
169+ sudo apt-get update -qq || sudo apt-get update -qq --fix-missing
169170 case "${{ matrix.backend }}" in
170171 coq)
171- sudo apt-get install -y coq
172+ sudo apt-get install -y --fix-missing coq
172173 ;;
173174 agda)
174- sudo apt-get install -y agda
175+ sudo apt-get install -y --fix-missing agda
175176 ;;
176177 idris2)
177178 # Idris2 has no apt package; build from the self-hosting tarball.
@@ -188,14 +189,20 @@ jobs:
188189 echo "$HOME/.elan/bin" >> "$GITHUB_PATH"
189190 ;;
190191 isabelle)
191- # Isabelle2024 tarball (~500MB); keep on nightly only.
192- curl -fsSL -o /tmp/isabelle.tar.gz https://isabelle.in.tum.de/dist/Isabelle2024_linux.tar.gz
193- sudo mkdir -p /opt
194- sudo tar xzf /tmp/isabelle.tar.gz -C /opt
195- sudo ln -sf /opt/Isabelle2024/bin/isabelle /usr/local/bin/isabelle
192+ # Isabelle2024 tarball (~500MB); nightly only.
193+ # --retry 3 + --max-time 600 guard the large download.
194+ # find locates the binary regardless of extracted dir name,
195+ # so the symlink survives a future Isabelle2025 release.
196+ curl -fsSL --max-time 600 --retry 3 --retry-delay 15 \
197+ -o /tmp/isabelle.tar.gz \
198+ https://isabelle.in.tum.de/dist/Isabelle2024_linux.tar.gz
199+ sudo mkdir -p /opt/isabelle
200+ sudo tar xzf /tmp/isabelle.tar.gz -C /opt/isabelle
201+ ISABELLE_BIN="$(find /opt/isabelle -type f -name isabelle | head -n 1)"
202+ [ -n "$ISABELLE_BIN" ] && sudo ln -sf "$ISABELLE_BIN" /usr/local/bin/isabelle
196203 ;;
197204 why3)
198- sudo apt-get install -y why3
205+ sudo apt-get install -y --fix-missing why3
199206 ;;
200207 dafny)
201208 # Dafny 4.x is distributed as a standalone .NET global tool.
@@ -205,11 +212,19 @@ jobs:
205212 echo "$HOME/.dotnet/tools" >> "$GITHUB_PATH"
206213 ;;
207214 fstar)
208- # F* ships prebuilt Linux binaries; binary is `fstar.exe` even on Linux.
209- curl -fsSL -o /tmp/fstar.tar.gz https://github.com/FStarLang/FStar/releases/latest/download/fstar-linux_x86_64.tar.gz
215+ # F* ships prebuilt Linux binaries; binary is fstar.exe even on Linux.
216+ # Asset naming changed in 2025: fstar-linux_x86_64.tar.gz (old) →
217+ # fstar-v{version}-Linux-x86_64.tar.gz (new). Pinned to v2026.04.17.
218+ # Update FSTAR_VER when a newer release lands.
219+ # find locates fstar.exe regardless of extracted directory layout.
220+ FSTAR_VER="v2026.04.17"
221+ curl -fsSL --max-time 300 --retry 2 \
222+ -o /tmp/fstar.tar.gz \
223+ "https://github.com/FStarLang/FStar/releases/download/${FSTAR_VER}/fstar-${FSTAR_VER}-Linux-x86_64.tar.gz"
210224 sudo mkdir -p /opt/fstar
211- sudo tar xzf /tmp/fstar.tar.gz -C /opt/fstar --strip-components=1
212- sudo ln -sf /opt/fstar/bin/fstar.exe /usr/local/bin/fstar.exe
225+ sudo tar xzf /tmp/fstar.tar.gz -C /opt/fstar
226+ FSTAR_BIN="$(find /opt/fstar -type f -name fstar.exe | head -n 1)"
227+ [ -n "$FSTAR_BIN" ] && sudo ln -sf "$FSTAR_BIN" /usr/local/bin/fstar.exe
213228 ;;
214229 hol-light)
215230 # No prebuilt binary; opam build is ~20min and pulls camlp5.
@@ -219,11 +234,16 @@ jobs:
219234 exit 0
220235 ;;
221236 tlaps)
222- # TLA+ Proof System ships a self-extracting installer; provides tlapm.
223- curl -fsSL -o /tmp/tlaps.sh https://github.com/tlaplus/tlapm/releases/latest/download/tlaps-installer-linux-x86_64.sh
224- chmod +x /tmp/tlaps.sh
225- sudo /tmp/tlaps.sh --prefix=/opt/tlaps
226- sudo ln -sf /opt/tlaps/bin/tlapm /usr/local/bin/tlapm
237+ # tlapm ships a self-extracting binary installer.
238+ # Latest release (tag 202210041448) asset is a .bin file, not .sh.
239+ # find locates tlapm regardless of installer's extraction layout.
240+ curl -fsSL --max-time 120 \
241+ -o /tmp/tlaps.bin \
242+ "https://github.com/tlaplus/tlapm/releases/download/202210041448/tlaps-1.5.0-x86_64-linux-gnu-inst.bin"
243+ chmod +x /tmp/tlaps.bin
244+ sudo /tmp/tlaps.bin --prefix=/opt/tlaps || sudo /tmp/tlaps.bin /opt/tlaps
245+ TLAPM_BIN="$(find /opt/tlaps /usr/local -type f -name tlapm 2>/dev/null | head -n 1)"
246+ [ -n "$TLAPM_BIN" ] && sudo ln -sf "$TLAPM_BIN" /usr/local/bin/tlapm
227247 ;;
228248 esac
229249 # Best-effort version probe for the matrix log.
@@ -277,7 +297,7 @@ jobs:
277297 continue-on-error : true
278298 run : |
279299 set -euo pipefail
280- sudo apt-get update
300+ sudo apt-get update -qq || sudo apt-get update -qq --fix-missing
281301 case "${{ matrix.backend }}" in
282302 tamarin)
283303 # Tamarin publishes prebuilt Linux x86_64 tarballs.
0 commit comments