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
| -rw-r--r-- | crates/project-model/src/build_dependencies.rs | 8 | ||||
| -rw-r--r-- | crates/project-model/src/cargo_config_file.rs | 18 | ||||
| -rw-r--r-- | crates/project-model/src/cargo_workspace.rs | 5 |
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; } |