Unnamed repository; edit this file 'description' to name the repository.
Support Cargo 1.97.0 lockfile path setting
The `resolver.lockfile_path` setting was stabilized, so we can omit the `-Zlockfile-path` argument.
Chayim Refael Friedman 6 weeks ago
parent bd24a5d · commit 0525a56
-rw-r--r--crates/project-model/src/build_dependencies.rs8
-rw-r--r--crates/project-model/src/cargo_config_file.rs18
-rw-r--r--crates/project-model/src/cargo_workspace.rs5
3 files changed, 27 insertions, 4 deletions
diff --git a/crates/project-model/src/build_dependencies.rs b/crates/project-model/src/build_dependencies.rs
index 352f41a826..c8a0e1b998 100644
--- a/crates/project-model/src/build_dependencies.rs
+++ b/crates/project-model/src/build_dependencies.rs
@@ -474,13 +474,19 @@ impl WorkspaceBuildScripts {
cmd.arg("--lockfile-path");
cmd.arg(lockfile_copy.path.as_str());
}
- LockfileUsage::WithEnvVar => {
+ LockfileUsage::WithEnvVarUnstable => {
cmd.arg("-Zlockfile-path");
cmd.env(
"CARGO_RESOLVER_LOCKFILE_PATH",
lockfile_copy.path.as_os_str(),
);
}
+ LockfileUsage::WithEnvVar => {
+ cmd.env(
+ "CARGO_RESOLVER_LOCKFILE_PATH",
+ lockfile_copy.path.as_os_str(),
+ );
+ }
}
}
}
diff --git a/crates/project-model/src/cargo_config_file.rs b/crates/project-model/src/cargo_config_file.rs
index ae36deb71f..97526dbf8e 100644
--- a/crates/project-model/src/cargo_config_file.rs
+++ b/crates/project-model/src/cargo_config_file.rs
@@ -141,7 +141,9 @@ pub(crate) struct LockfileCopy {
pub(crate) enum LockfileUsage {
/// Rust [1.82.0, 1.95.0). `cargo <subcmd> --lockfile-path <lockfile path>`
WithFlag,
- /// Rust >= 1.95.0. `CARGO_RESOLVER_LOCKFILE_PATH=<lockfile path> cargo <subcmd>`
+ /// Rust [1.95.0, 1.97.0). `CARGO_RESOLVER_LOCKFILE_PATH=<lockfile path> cargo -Zlockfile-path <subcmd>`
+ WithEnvVarUnstable,
+ /// Rust >= 1.97.0. `CARGO_RESOLVER_LOCKFILE_PATH=<lockfile path> cargo <subcmd>`
WithEnvVar,
}
@@ -158,7 +160,7 @@ pub(crate) fn make_lockfile_copy(
build: semver::BuildMetadata::EMPTY,
};
- const MINIMUM_TOOLCHAIN_VERSION_SUPPORTING_LOCKFILE_PATH_ENV: semver::Version =
+ const MINIMUM_TOOLCHAIN_VERSION_SUPPORTING_LOCKFILE_PATH_ENV_UNSTABLE: semver::Version =
semver::Version {
major: 1,
minor: 95,
@@ -167,8 +169,20 @@ pub(crate) fn make_lockfile_copy(
build: semver::BuildMetadata::EMPTY,
};
+ const MINIMUM_TOOLCHAIN_VERSION_SUPPORTING_LOCKFILE_PATH_ENV: semver::Version =
+ semver::Version {
+ major: 1,
+ minor: 97,
+ patch: 0,
+ pre: semver::Prerelease::EMPTY,
+ build: semver::BuildMetadata::EMPTY,
+ };
+
let usage = if *toolchain_version >= MINIMUM_TOOLCHAIN_VERSION_SUPPORTING_LOCKFILE_PATH_ENV {
LockfileUsage::WithEnvVar
+ } else if *toolchain_version >= MINIMUM_TOOLCHAIN_VERSION_SUPPORTING_LOCKFILE_PATH_ENV_UNSTABLE
+ {
+ LockfileUsage::WithEnvVarUnstable
} else if *toolchain_version >= MINIMUM_TOOLCHAIN_VERSION_SUPPORTING_LOCKFILE_PATH_FLAG {
LockfileUsage::WithFlag
} else {
diff --git a/crates/project-model/src/cargo_workspace.rs b/crates/project-model/src/cargo_workspace.rs
index 5d8273832b..fb9047a30f 100644
--- a/crates/project-model/src/cargo_workspace.rs
+++ b/crates/project-model/src/cargo_workspace.rs
@@ -763,10 +763,13 @@ impl FetchMetadata {
other_options.push("--lockfile-path".to_owned());
other_options.push(lockfile_copy.path.to_string());
}
- LockfileUsage::WithEnvVar => {
+ LockfileUsage::WithEnvVarUnstable => {
other_options.push("-Zlockfile-path".to_owned());
command.env("CARGO_RESOLVER_LOCKFILE_PATH", lockfile_copy.path.as_os_str());
}
+ LockfileUsage::WithEnvVar => {
+ command.env("CARGO_RESOLVER_LOCKFILE_PATH", lockfile_copy.path.as_os_str());
+ }
}
using_lockfile_copy = true;
}