From 2a3cd910849b974b3dabed016eb3f5683b693c2a Mon Sep 17 00:00:00 2001 From: Eliah Kagan Date: Sat, 9 Nov 2024 04:13:01 -0500 Subject: [PATCH] Check that `pure-rust-build` has minimal software This verifies the absence of utilities and libraries `max-pure` should not need, but that are needed for building `max`. When `pure-rust-build` was introduced in ed4deac (#624), the goal was to test that a C toolchain was not needed. Currently, we are installing a C toolchain, by installing `gcc` and `libc-dev`, so that the Rust toolchain will use the linker, which it may invoke through `cc`/`gcc`. Nonetheless, the test is effective, as verified in #1664, becuase it uses an environment free of several packages that `max-pure` would likely inadverently require for building, if it failed to be "pure". --- .github/workflows/ci.yml | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 503dde72a8c..61f52441ef2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -24,9 +24,24 @@ jobs: steps: - uses: actions/checkout@v4 - name: Prerequisites - run: apt-get update && apt-get install --no-install-recommends -y ca-certificates curl gcc libc-dev # gcc is required as OS abstraction - - name: install Rust via Rustup - run: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal; + run: | + apt-get update + apt-get install --no-install-recommends -y ca-certificates curl gcc libc-dev # gcc is required as OS abstraction + - name: Verify environment is sufficiently minimal for the test + run: | + set -x + for pattern in cmake g++ libssl-dev make pkgconf pkg-config; do + if dpkg-query --status -- "$pattern"; then + exit 1 + fi + done + for cmd in cmake g++ make pkgconf pkg-config; do + if command -v -- "$cmd"; then + exit 1 + fi + done + - name: Install Rust via Rustup + run: curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --profile minimal - uses: Swatinem/rust-cache@v2 - run: /github/home/.cargo/bin/cargo install --debug --locked --no-default-features --features max-pure --path .