A transient CDN timeout handed bash a 2-minute HTML error page instead of linux-install.sh and failed the run. curl now fails on HTTP errors and retries, and the script is sanity-checked before running.
73 lines
3.1 KiB
YAML
73 lines
3.1 KiB
YAML
name: tests
|
|
|
|
# Run the gate (make test) on every push and pull request. Chez is the sole
|
|
# substrate; the JVM is used only as the conformance oracle (certify).
|
|
on:
|
|
push:
|
|
pull_request:
|
|
|
|
jobs:
|
|
test:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v5
|
|
with:
|
|
submodules: recursive # vendor/irregex, used by the Chez regex shim
|
|
|
|
# Build Chez from source rather than the distro package: the apt
|
|
# chezscheme ships petite+scheme only, with no kernel dev files
|
|
# (libkernel.a, scheme.h), so `jolt build` (the buildsmoke gate) can't link
|
|
# a binary and would skip. The source build provides them, plus the libs the
|
|
# kernel links against.
|
|
- name: Install build dependencies
|
|
run: |
|
|
sudo apt-get update
|
|
sudo apt-get install -y build-essential git liblz4-dev zlib1g-dev libncurses-dev uuid-dev
|
|
|
|
- name: Cache Chez Scheme
|
|
id: cache-chez
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: /opt/chez
|
|
key: chez-${{ runner.os }}-v10.4.1-x11off
|
|
|
|
- name: Build Chez Scheme from source
|
|
if: steps.cache-chez.outputs.cache-hit != 'true'
|
|
run: |
|
|
git clone --depth 1 --branch v10.4.1 https://github.com/cisco/ChezScheme.git /tmp/chez-src
|
|
cd /tmp/chez-src
|
|
# --disable-x11: the expression editor's X11 clipboard isn't needed and
|
|
# would pull an X11 build/link dep.
|
|
./configure --installprefix=/opt/chez --threads --disable-x11
|
|
make -j"$(nproc)"
|
|
sudo make install
|
|
sudo chown -R "$USER" /opt/chez
|
|
|
|
- name: Put chez on PATH
|
|
run: |
|
|
# Installed as `scheme`; the gate invokes `chez`. A wrapper that execs
|
|
# scheme keeps argv0 so Chez finds its boot files. Placed next to scheme
|
|
# so build.ss derives the csv dir (libkernel.a/scheme.h) from it.
|
|
printf '#!/bin/sh\nexec /opt/chez/bin/scheme "$@"\n' > /opt/chez/bin/chez
|
|
chmod +x /opt/chez/bin/chez
|
|
echo '/opt/chez/bin' >> "$GITHUB_PATH"
|
|
/opt/chez/bin/chez --version
|
|
|
|
- name: Install JDK + Clojure (certify oracle)
|
|
run: |
|
|
sudo apt-get install -y default-jdk rlwrap
|
|
# --retry + --fail so a transient CDN error retries instead of handing
|
|
# bash an HTML error page (a 2min timeout page flaked a run)
|
|
curl --fail --retry 5 --retry-delay 10 --retry-all-errors -L -O \
|
|
https://github.com/clojure/brew-install/releases/latest/download/linux-install.sh
|
|
head -1 linux-install.sh | grep -q '^#!' || { echo "installer download corrupt"; cat linux-install.sh | head -5; exit 1; }
|
|
sudo bash linux-install.sh
|
|
clojure --version
|
|
|
|
- name: Gate
|
|
# `make ci` runs the behavior gates (corpus/unit/smoke/buildsmoke/sci/
|
|
# certify). buildsmoke now links a real binary (the source-built Chez has
|
|
# the kernel dev files). The self-host byte-fixpoint (make selfhost) is a
|
|
# dev-machine check — it only holds on the Chez that minted the seed. See
|
|
# jolt-8479.
|
|
run: make ci
|