Unnamed repository; edit this file 'description' to name the repository.
Merge pull request #22683 from ChayimFriedman2/stabilize-lockfile-path
fix: Support Cargo 1.97.0 lockfile path setting
Shoyu Vanilla (Flint) 5 weeks ago
parent 17183c4 · parent 0525a56 · commit 0361ab3
-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 336350653b..9f84f632d5 100644
--- a/crates/project-model/src/build_dependencies.rs
+++ b/crates/project-model/src/build_dependencies.rs
@@ -477,13 +477,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 39d1a82518..defd9f96ab 100644
--- a/crates/project-model/src/cargo_config_file.rs
+++ b/crates/project-model/src/cargo_config_file.rs
@@ -145,7 +145,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,
}
@@ -162,7 +164,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,
@@ -171,8 +173,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 004d62967a..97375fe9dd 100644
--- a/crates/project-model/src/cargo_workspace.rs
+++ b/crates/project-model/src/cargo_workspace.rs
@@ -771,10 +771,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;
}