Skip to content

clippy-driver acts as a bogus rustc wrapper #12697

Open
@RalfJung

Description

@RalfJung

This came up in cuviper/autocfg#58, and may also become more relevant with rust-lang/cargo#13659 and djc/rustc-version-rs#45:

Apparently, cargo clippy sets clippy-driver as RUSTC_WORKSPACE_WRAPPER, but that wrapper behaves incorrectly, i.e. it does not always properly forward everything to rustc:

$ clippy-driver rustc --version                                              
clippy 0.1.79 (f9b16149 2024-04-19)

$ clippy-driver rustc --version --verbose
clippy 0.1.79 (f9b16149 2024-04-19)

$ clippy-driver rustc --rustc --version  
rustc 1.79.0-nightly (f9b161492 2024-04-19)

$ clippy-driver rustc --rustc --version --verbose
rustc 1.79.0-nightly (f9b161492 2024-04-19)
binary: rustc
commit-hash: f9b16149208c8a8a349c32813312716f6603eb6f
commit-date: 2024-04-19
host: aarch64-apple-darwin
release: 1.79.0-nightly
LLVM version: 18.1.4

$ clippy-driver rustc -V
clippy 0.1.79 (f9b16149 2024-04-19)

$ clippy-driver rustc -Vv
rustc 1.79.0-nightly (f9b161492 2024-04-19)
binary: rustc
commit-hash: f9b16149208c8a8a349c32813312716f6603eb6f
commit-date: 2024-04-19
host: aarch64-apple-darwin
release: 1.79.0-nightly
LLVM version: 18.1.4

$ clippy-driver rustc -vV
rustc 1.79.0-nightly (f9b161492 2024-04-19)
binary: rustc
commit-hash: f9b16149208c8a8a349c32813312716f6603eb6f
commit-date: 2024-04-19
host: aarch64-apple-darwin
release: 1.79.0-nightly
LLVM version: 18.1.4

I am surprised that clippy-driver is even being set as RUSTC_WORKSPACE_WRAPPER; Miri (which has a similar problem to solve) does not do that. Instead cargo-miri sets itself as RUSTC_WRAPPER so that it can then dispatch to the driver as appropriate. Either way can work, but whatever is set as RUSTC_WRAPPER/RUSTC_WORKSPACE_WRAPPER should behave like a proper wrapper and not intercept --version queries.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions