name: CI on: push: branches: [main] pull_request: branches: [main] jobs: test: runs-on: ubuntu-latest container: rust:latest steps: - uses: actions/checkout@v4 - name: Cache cargo registry/target uses: actions/cache@v4 with: path: | ~/.cargo/registry ~/.cargo/git target key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} - name: Install rustfmt & clippy components run: rustup component add rustfmt clippy - name: Install thumbv7em-none-eabihf target run: rustup target add thumbv7em-none-eabihf - name: Install Python interop dependencies # The interop suites used to skip silently when python3/h5py were # missing, so they never ran in CI. Install them and make a missing # dependency a failure (CLAWHDF5_REQUIRE_INTEROP below). run: | apt-get update apt-get install -y --no-install-recommends python3 python3-venv python3 -m venv /opt/interop /opt/interop/bin/pip install --no-cache-dir h5py numpy netCDF4 xarray echo "/opt/interop/bin" >> "$GITHUB_PATH" - name: Show interop library versions run: /opt/interop/bin/python -c "import h5py, netCDF4; print('h5py', h5py.__version__, 'HDF5', h5py.version.hdf5_version, 'netCDF4', netCDF4.__version__)" - name: Run CI script env: # Name the interpreter outright rather than relying on $GITHUB_PATH # reaching the test processes: if `python3` resolved to the system # one instead of the venv, every interop suite would skip. # CLAWHDF5_REQUIRE_INTEROP turns that skip into a failure, so the # two together mean the suites either run or the build goes red. CLAWHDF5_PYTHON: /opt/interop/bin/python CLAWHDF5_REQUIRE_INTEROP: "1" run: bash scripts/ci-test.sh