# The CI image, reproduced locally. # # 🔴 WHY THIS FILE EXISTS. This image was built once, by hand, from a Dockerfile # in a scratch directory under /tmp — and /tmp was swept. The image survived on # one host and its recipe did not, which is the same shape as every other thing # this consolidation found: something correct that exists in exactly one place. # # The apt list below is COPIED from `.github/workflows/ci.yml`'s "Install Linux # system dependencies" step. If that list changes, this must change with it, or # a local run stops predicting the runner. # # docker build -t sylph-ci:local docker/ci # # ⚠️ The Rust version is PINNED and the runner's is NOT — `dtolnay/rust-toolchain@stable` # floats. That difference is issue #15: `collapsible_else_if` is `warn` on 1.92 # and `allow` on 1.98.1, so a local clippy pass and a runner clippy pass can # legitimately disagree. When they do, the runner is the authority. FROM rust:1.98.1-bookworm RUN apt-get update && apt-get install -y --no-install-recommends \ libasound2-dev \ libudev-dev \ libwayland-dev \ libxkbcommon-dev \ libx11-dev \ libxi-dev \ pkg-config \ && rm -rf /var/lib/apt/lists/* RUN rustup component add clippy rustfmt \ && rustup target add wasm32-unknown-unknown WORKDIR /work