# What scripts/coverage.sh runs the Rust tests in, to see which lines they reach (#390): the # toolchain, LLVM's coverage tools and cargo-llvm-cov. No source: coverage.sh mounts the tree. # Built and pushed like the services, by scripts/build-image.sh coverage, under its caps. # # Ubuntu 24.04, as code-server is (#394): `coverage.sh api` builds an instrumented ipx and # ipx-directory here, under the cap, and the browser suite runs them in code-server, which a # binary linked against Debian trixie's newer glibc (2.41 to Ubuntu's 2.39) would not start in. # The same Rust as the tests are built with elsewhere: a newer one would rebuild everything with # its own flags for nothing. FROM ubuntu:24.04 ENV RUSTUP_HOME=/usr/local/rustup CARGO_HOME=/usr/local/cargo PATH=/usr/local/cargo/bin:$PATH # cc for rusqlite's bundled SQLite and librqbit, as Dockerfile's builder; ffmpeg for DeadAir's # tests, as the image ipx runs in; curl and certificates to fetch rustup. RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ build-essential ca-certificates curl ffmpeg \ && rm -rf /var/lib/apt/lists/* \ && curl -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal --default-toolchain 1.98.1 --no-modify-path \ && rustup component add llvm-tools-preview # cargo-llvm-cov's own build, as its README gives it, rather than compiling it here. ADD https://github.com/taiki-e/cargo-llvm-cov/releases/latest/download/cargo-llvm-cov-x86_64-unknown-linux-gnu.tar.gz /tmp/llvm-cov.tar.gz RUN tar -xzf /tmp/llvm-cov.tar.gz -C /usr/local/cargo/bin && rm /tmp/llvm-cov.tar.gz \ && cargo llvm-cov --version && rustc --version WORKDIR /work