mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-10-01 11:31:15 +00:00
Merge pull request #20047 from ShoyuVanilla/comp-time-deps
internal: Utilize `cargo check --compile-time-deps`
This commit is contained in:
commit
56de2113f1
@ -20,7 +20,9 @@ use toolchain::Tool;
|
|||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
CargoConfig, CargoFeatures, CargoWorkspace, InvocationStrategy, ManifestPath, Package, Sysroot,
|
CargoConfig, CargoFeatures, CargoWorkspace, InvocationStrategy, ManifestPath, Package, Sysroot,
|
||||||
TargetKind, utf8_stdout,
|
TargetKind,
|
||||||
|
toolchain_info::{QueryConfig, version},
|
||||||
|
utf8_stdout,
|
||||||
};
|
};
|
||||||
|
|
||||||
/// Output of the build script and proc-macro building steps for a workspace.
|
/// Output of the build script and proc-macro building steps for a workspace.
|
||||||
@ -446,10 +448,30 @@ impl WorkspaceBuildScripts {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
if config.wrap_rustc_in_build_scripts {
|
// If [`--compile-time-deps` flag](https://github.com/rust-lang/cargo/issues/14434) is
|
||||||
|
// available in current toolchain's cargo, use it to build compile time deps only.
|
||||||
|
const COMP_TIME_DEPS_MIN_TOOLCHAIN_VERSION: semver::Version = semver::Version {
|
||||||
|
major: 1,
|
||||||
|
minor: 90,
|
||||||
|
patch: 0,
|
||||||
|
pre: semver::Prerelease::EMPTY,
|
||||||
|
build: semver::BuildMetadata::EMPTY,
|
||||||
|
};
|
||||||
|
|
||||||
|
let query_config = QueryConfig::Cargo(sysroot, manifest_path);
|
||||||
|
let toolchain = version::get(query_config, &config.extra_env).ok().flatten();
|
||||||
|
let cargo_comp_time_deps_available =
|
||||||
|
toolchain.is_some_and(|v| v >= COMP_TIME_DEPS_MIN_TOOLCHAIN_VERSION);
|
||||||
|
|
||||||
|
if cargo_comp_time_deps_available {
|
||||||
|
cmd.env("__CARGO_TEST_CHANNEL_OVERRIDE_DO_NOT_USE_THIS", "nightly");
|
||||||
|
cmd.arg("-Zunstable-options");
|
||||||
|
cmd.arg("--compile-time-deps");
|
||||||
|
} else if config.wrap_rustc_in_build_scripts {
|
||||||
// Setup RUSTC_WRAPPER to point to `rust-analyzer` binary itself. We use
|
// Setup RUSTC_WRAPPER to point to `rust-analyzer` binary itself. We use
|
||||||
// that to compile only proc macros and build scripts during the initial
|
// that to compile only proc macros and build scripts during the initial
|
||||||
// `cargo check`.
|
// `cargo check`.
|
||||||
|
// We don't need this if we are using `--compile-time-deps` flag.
|
||||||
let myself = std::env::current_exe()?;
|
let myself = std::env::current_exe()?;
|
||||||
cmd.env("RUSTC_WRAPPER", myself);
|
cmd.env("RUSTC_WRAPPER", myself);
|
||||||
cmd.env("RA_RUSTC_WRAPPER", "1");
|
cmd.env("RA_RUSTC_WRAPPER", "1");
|
||||||
|
Loading…
x
Reference in New Issue
Block a user