Unnamed repository; edit this file 'description' to name the repository.
| -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 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; } |