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