ci: stop depending on node, and install cmake where the build needs it

Read from the job logs of the first run with the arm64 job, rather than
guessed:

- The x86 `test` job has been failing on every push, in about three
  seconds. It runs in `rust:latest` and starts with actions/checkout, a
  JavaScript action, and `rust:latest` has no `node`: exit 127 before a
  line of code was built. It is replaced with a plain git checkout (the
  image has git), and actions/cache, JavaScript for the same reason, is
  dropped.
- `test-arm64` got through checkout, toolchain, the aarch64 check and
  clippy, then failed building libz-ng-sys — pulled in by
  clawhdf5-format's default `fast-deflate` — because the host runner had
  no cmake. The x86 image lacks it too, so the x86 job would have hit the
  same wall one step later.

Both jobs now install cmake where they can (the Docker job and the x86
container run as root) and say plainly when they cannot (a host runner),
instead of failing inside a build script. vision-01 now has cmake.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This commit is contained in:
osobh
2026-09-21 20:37:51 -07:00
co-authored by Claude Opus 5
parent 6f6bc97850
commit c5049eb734
+25 -10
View File
@@ -9,15 +9,15 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: rust:latest container: rust:latest
steps: steps:
- uses: actions/checkout@v4 # Plain git rather than actions/checkout: that is a JavaScript action,
- name: Cache cargo registry/target # and rust:latest has no `node`, so it failed with exit 127 before any
uses: actions/cache@v4 # code was built — on every push. actions/cache went for the same reason.
with: - name: Check out
path: | run: |
~/.cargo/registry git init -q .
~/.cargo/git git remote add origin "${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}.git"
target for i in 1 2 3; do git fetch -q --depth 1 origin "${GITHUB_SHA}" && break; sleep 5; done
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} git checkout -q FETCH_HEAD
- name: Install rustfmt & clippy components - name: Install rustfmt & clippy components
run: rustup component add rustfmt clippy run: rustup component add rustfmt clippy
- name: Install thumbv7em-none-eabihf target - name: Install thumbv7em-none-eabihf target
@@ -28,7 +28,9 @@ jobs:
# dependency a failure (CLAWHDF5_REQUIRE_INTEROP below). # dependency a failure (CLAWHDF5_REQUIRE_INTEROP below).
run: | run: |
apt-get update apt-get update
apt-get install -y --no-install-recommends python3 python3-venv # cmake builds libz-ng-sys (clawhdf5-format's default `fast-deflate`);
# rust:latest does not ship it.
apt-get install -y --no-install-recommends python3 python3-venv cmake
python3 -m venv /opt/interop python3 -m venv /opt/interop
/opt/interop/bin/pip install --no-cache-dir h5py numpy netCDF4 xarray /opt/interop/bin/pip install --no-cache-dir h5py numpy netCDF4 xarray
echo "/opt/interop/bin" >> "$GITHUB_PATH" echo "/opt/interop/bin" >> "$GITHUB_PATH"
@@ -73,6 +75,19 @@ jobs:
command -v rustup >/dev/null || curl -sSf --retry 5 https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain none command -v rustup >/dev/null || curl -sSf --retry 5 https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain none
rustup toolchain install stable --profile minimal --component clippy rustup toolchain install stable --profile minimal --component clippy
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
- name: Build dependencies
# libz-ng-sys (clawhdf5-format's default `fast-deflate`) needs cmake.
# In the Docker runner the job is root and can install it; a host
# runner cannot, so say what is missing rather than fail inside a
# build script.
run: |
if command -v cmake >/dev/null; then cmake --version | head -1; exit 0; fi
if [ "$(id -u)" = 0 ]; then
apt-get update -qq && apt-get install -y -qq cmake
else
echo "::error::cmake is not installed on this runner host (needed by libz-ng-sys)"
exit 1
fi
- name: Confirm aarch64 - name: Confirm aarch64
run: | run: |
test "$(uname -m)" = aarch64 test "$(uname -m)" = aarch64