jolt/.github/workflows/tests.yml
Yogthos 87aec859b8 ci: build Chez with --disable-x11; README: how to build a binary
The from-source Chez build failed on expeditor.c needing X11/Xlib.h — the
expression editor's clipboard. Configure with --disable-x11 (not needed in CI)
and bump the cache key. Add a "Compile a binary" section to the README.
2026-06-22 23:43:26 -04:00

69 lines
2.7 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
curl -L -O https://github.com/clojure/brew-install/releases/latest/download/linux-install.sh
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