mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-01 06:51:58 +00:00
Auto merge of #10149 - jyn514:duplicate-sysroot, r=flip1995
Don't pass `--sysroot` twice if SYSROOT is set
This is useful for rust-lang/rust to allow setting a sysroot that's *only* for build scripts, different from the regular sysroot passed in RUSTFLAGS (since cargo doesn't apply RUSTFLAGS to build scripts or proc-macros).
That said, the exact motivation is not particularly important: this fixes a regression from
5907e9155e (r1060215684)
.
Note that only RUSTFLAGS is tested in the new integration test; passing --sysroot through `clippy-driver` never worked as far as I can tell, and no one is using it, so I didn't fix it here.
Helps with https://github.com/rust-lang/rust/pull/106394.
---
changelog: other: `SYSROOT` and `--sysroot` can now be set at the same time
[#10149](https://github.com/rust-lang/rust-clippy/pull/10149)
<!-- changelog_checked -->
This commit is contained in:
commit
f9ca9d4112
7
.github/driver.sh
vendored
7
.github/driver.sh
vendored
@ -17,6 +17,13 @@ test "$sysroot" = $desired_sysroot
|
||||
sysroot=$(SYSROOT=$desired_sysroot ./target/debug/clippy-driver --print sysroot)
|
||||
test "$sysroot" = $desired_sysroot
|
||||
|
||||
# Check that the --sysroot argument is only passed once (SYSROOT is ignored)
|
||||
(
|
||||
cd rustc_tools_util
|
||||
touch src/lib.rs
|
||||
SYSROOT=/tmp RUSTFLAGS="--sysroot=$(rustc --print sysroot)" ../target/debug/cargo-clippy clippy --verbose
|
||||
)
|
||||
|
||||
# Make sure this isn't set - clippy-driver should cope without it
|
||||
unset CARGO_MANIFEST_DIR
|
||||
|
||||
|
@ -256,11 +256,14 @@ pub fn main() {
|
||||
LazyLock::force(&ICE_HOOK);
|
||||
exit(rustc_driver::catch_with_exit_code(move || {
|
||||
let mut orig_args: Vec<String> = env::args().collect();
|
||||
let has_sysroot_arg = arg_value(&orig_args, "--sysroot", |_| true).is_some();
|
||||
|
||||
let sys_root_env = std::env::var("SYSROOT").ok();
|
||||
let pass_sysroot_env_if_given = |args: &mut Vec<String>, sys_root_env| {
|
||||
if let Some(sys_root) = sys_root_env {
|
||||
args.extend(vec!["--sysroot".into(), sys_root]);
|
||||
if !has_sysroot_arg {
|
||||
args.extend(vec!["--sysroot".into(), sys_root]);
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -1,3 +1,12 @@
|
||||
//! This test is meant to only be run in CI. To run it locally use:
|
||||
//!
|
||||
//! `env INTEGRATION=rust-lang/log cargo test --test integration --features=integration`
|
||||
//!
|
||||
//! You can use a different `INTEGRATION` value to test different repositories.
|
||||
//!
|
||||
//! This test will clone the specified repository and run Clippy on it. The test succeeds, if
|
||||
//! Clippy doesn't produce an ICE. Lint warnings are ignored by this test.
|
||||
|
||||
#![cfg(feature = "integration")]
|
||||
#![cfg_attr(feature = "deny-warnings", deny(warnings))]
|
||||
#![warn(rust_2018_idioms, unused_lifetimes)]
|
||||
|
Loading…
Reference in New Issue
Block a user