From 07e220842719c06558681179014685b058ad92bc Mon Sep 17 00:00:00 2001 From: x Date: Mon, 5 Oct 2026 04:57:25 -0500 Subject: [PATCH] ci: give the release build's test run CI's dependencies The v0.44.0 Release run failed all three build jobs in the suite, not in the runtime: the dependency-gated sections now FAIL rather than skip when a dependency is absent, and the release job runs on bare hosted runners while CI tests in the dev image (Linux) or after its toolchain step (macOS). - Linux: $TMPDIR unset, so two diagnostics redirected to /eigs-host-frame.err and /eigs-sandbox-1426.err (#1624), and the strict-shape backend controls found no libSDL2. - macOS: no `timeout`, so all nine gfx example checks exited 127 and the gfx sanitizer gate refused to run. Install the dev image's runtime test packages (Linux) and ci.yml's macOS toolchain step, both AFTER the builds so the shipped binaries and the glibc floor do not change, and give the suite a TMPDIR. Co-Authored-By: Claude Opus 5.5 (1M context) Claude-Session: https://claude.ai/code/session_01KC99CmwatKssQYggkBCgwF --- .github/workflows/release.yml | 40 +++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5ee73aa9..e039a5b7 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -114,7 +114,47 @@ jobs: mv src/eigenscript eigenscript-full-${{ matrix.label }} chmod +x eigenscript-full-${{ matrix.label }} + # The suite's dependency-gated sections fail, not skip, when a + # dependency is missing, so the runner needs what CI's test + # environments carry. Installed AFTER both builds, so the shipped + # binaries (and the Linux glibc floor) do not change. + # Linux: the runtime packages of .devcontainer/Dockerfile (SDL and + # SDL_mixer for the strict-shape backend controls, Xvfb/xdotool for + # the real-input checks). + - name: Install test dependencies (Linux) + if: runner.os == 'Linux' + run: | + sudo apt-get install -y --no-install-recommends \ + libsdl2-dev libsdl2-mixer-2.0-0 xvfb xauth xdotool python3-pil zlib1g-dev + + # macOS: the toolchain step of ci.yml's build-and-test-macos-worker. + # coreutils supplies `timeout`, which the gfx example and sanitizer + # checks require; upstream LLVM supplies the gfx LeakSanitizer + # runtime (LLVM 20 deadlocks before main on macOS 26.4+, + # llvm-project#182943, fixed in 22). + - name: Install test dependencies (macOS) + if: runner.os == 'macOS' + run: | + case '${{ matrix.os }}' in + macos-15-intel) formula=llvm@18 ;; + *) + formula=llvm@22 + brew install --force-bottle "$formula" + ;; + esac + if ! command -v timeout >/dev/null 2>&1 && ! command -v gtimeout >/dev/null 2>&1; then + brew install --force-bottle coreutils + fi + brewbin="$(brew --prefix "$formula")/bin" + test -x "$brewbin/clang" + echo "PATH=$brewbin:$PATH" >> "$GITHUB_ENV" + echo "EIGS_ASAN_GFX_CC=clang" >> "$GITHUB_ENV" + + # TMPDIR: two suite diagnostics redirect into "$TMPDIR/..." and + # hosted runners leave it unset (#1624). - name: Run tests against the release binary + env: + TMPDIR: ${{ runner.temp }} run: | cp eigenscript-${{ matrix.label }} src/eigenscript cd tests && bash run_all_tests.sh