Skip to content

Commit e1edebe

Browse files
fix(ci): idris2-abi install via apt + tag-archive fallback — replaces 404 URL (#168)
## Summary - `Type-check Idris2 ABI definitions` has failed on every run since at least 2026-05-18 (5+ consecutive `failure`s in `gh run list --workflow "Idris2 ABI Type-Check" --branch main`) because `curl -fsSL https://github.com/idris-lang/Idris2/releases/download/v0.8.0/Idris2-0.8.0-Linux-x86_64.tar.gz` returns HTTP 404. - Root cause: Idris2 v0.8.0's release-asset array is empty — the project did not publish a prebuilt Linux tarball for that tag. The release-download URL therefore 404s. The same constraint is already documented inline in `live-provers.yml:184-201`, which uses a working install pattern. - Fix: port the live-provers pattern into `idris2-abi-ci.yml`. Prefer Ubuntu 24.04 universe `idris2`; fall back to a source build from `archive/refs/tags/v0.8.0.tar.gz` (the archive API resolves for any tag). - Side cleanup: drop the `IDRIS2_PREFIX: /opt/idris2` env hint on the Type-check step — neither install path lands binaries at `/opt/idris2`, so it was steering Idris2 at a non-existent prefix. ## Why this matters now This is the upstream-source fix the merge ruleset asks for. Removes the baseline red so the rest of the queue (including #166's TacticRecord round-trip lemmas, which this job will now exercise) can land without `--admin`. Stops a 2-week-old failed-installation message from masking any future regression in `src/abi/`. ## Test plan - [x] `python3 -c "import yaml; yaml.safe_load(...)"` parses OK - [x] Local check (Idris2 0.8.0 + base) succeeds on the same `src/abi/echidnaabi.ipkg` with no `IDRIS2_PREFIX` override - [ ] `Type-check Idris2 ABI definitions` job → success on this PR Refs the 2026-05-18 → 2026-05-30 consecutive curl(22) run history.
1 parent fff57dc commit e1edebe

1 file changed

Lines changed: 20 additions & 10 deletions

File tree

.github/workflows/idris2-abi-ci.yml

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,19 +28,29 @@ jobs:
2828

2929
- name: Install Idris2
3030
run: |
31-
# Install Idris2 from official release
32-
curl -fsSL "https://github.com/idris-lang/Idris2/releases/download/v0.8.0/Idris2-0.8.0-Linux-x86_64.tar.gz" \
33-
-o /tmp/idris2.tar.gz
34-
sudo mkdir -p /opt/idris2
35-
sudo tar -xzf /tmp/idris2.tar.gz -C /opt/idris2 --strip-components=1
36-
echo "/opt/idris2/bin" >> "$GITHUB_PATH"
37-
export PATH="/opt/idris2/bin:$PATH"
38-
export IDRIS2_PREFIX="/opt/idris2"
31+
# Idris2 v0.8.0 has no pre-built Linux release binary — the
32+
# release-assets array on https://api.github.com/repos/idris-lang/Idris2/releases/tags/v0.8.0
33+
# is empty, so the legacy `releases/download/.../Linux-x86_64.tar.gz`
34+
# URL returns HTTP 404 and breaks this job on every push.
35+
# Match the live-provers.yml install pattern: prefer the Ubuntu
36+
# 24.04 universe `idris2` package; fall back to a source build
37+
# from the archive tag tarball (the archive API resolves for
38+
# any tag, unlike release-asset URLs).
39+
set -euo pipefail
40+
sudo apt-get update -qq || sudo apt-get update -qq --fix-missing
41+
sudo apt-get install -y --fix-missing idris2 2>/dev/null || {
42+
IDRIS2_VER="v0.8.0"
43+
sudo apt-get install -y --fix-missing chezscheme make libgmp-dev
44+
curl -fsSL --max-time 300 --retry 2 \
45+
-o /tmp/idris2.tar.gz \
46+
"https://github.com/idris-lang/Idris2/archive/refs/tags/${IDRIS2_VER}.tar.gz"
47+
mkdir -p /tmp/idris2-src
48+
tar xzf /tmp/idris2.tar.gz -C /tmp/idris2-src --strip-components=1
49+
(cd /tmp/idris2-src && make bootstrap SCHEME=scheme && sudo make install PREFIX=/usr/local)
50+
}
3951
idris2 --version
4052
4153
- name: Type-check all ABI modules via ipkg
42-
env:
43-
IDRIS2_PREFIX: /opt/idris2
4454
run: |
4555
cd src/abi
4656
echo "=== Type-checking ECHIDNA ABI package (16 modules) ==="

0 commit comments

Comments
 (0)