From 7805845a8b9a739e12559c2a9ff3866a8b74df42 Mon Sep 17 00:00:00 2001
From: Ed Page
Date: Wed, 20 Mar 2024 10:42:08 -0500
Subject: [PATCH] feat(add): Stabilize MSRV-aware version req selection
This is part of #9930 for rust-lang/rfcs#3537
This will make it easier to maintain an MSRV-compliant `Cargo.toml` but
leaves validation up to the user as the resolver will pick newer
versions.
This helps the MSRV-aware workflows enumerated in
rust-lang/rfcs#3537 though it could be confusing to the workflow with an
MSRV-compatible lockfile.
PR #13561 at least raises awareness of that discrepancy.
There is an unresolved question on differences in the resolver vs
`cargo add` for dealing with an unset `rust-version`.
However, we are only stabilizing the `cargo add` side which is a very
light two-way door as this is a UX-focused command and not a
programmatic command.
This hasn't gotten much end-user testing but, as its UX focused, that
seems fine.
As such, this seems like it is ready to stabilize.
---
src/bin/cargo/commands/add.rs | 10 +---------
src/cargo/ops/cargo_add/mod.rs | 2 +-
src/doc/man/cargo-add.md | 5 -----
src/doc/man/generated_txt/cargo-add.txt | 6 ------
src/doc/src/commands/cargo-add.md | 6 +-----
src/doc/src/reference/unstable.md | 2 --
src/etc/man/cargo-add.1 | 5 -----
tests/testsuite/cargo_add/help/stdout.term.svg | 2 +-
8 files changed, 4 insertions(+), 34 deletions(-)
diff --git a/src/bin/cargo/commands/add.rs b/src/bin/cargo/commands/add.rs
index ca75e7346226..b1bde446bfea 100644
--- a/src/bin/cargo/commands/add.rs
+++ b/src/bin/cargo/commands/add.rs
@@ -87,7 +87,7 @@ Example uses:
- Depend on crates with the same name from different registries"),
flag(
"ignore-rust-version",
- "Ignore `rust-version` specification in packages (unstable)"
+ "Ignore `rust-version` specification in packages"
),
])
.arg_manifest_path_without_unsupported_path_tip()
@@ -206,14 +206,6 @@ pub fn exec(gctx: &mut GlobalContext, args: &ArgMatches) -> CliResult {
let dependencies = parse_dependencies(gctx, args)?;
let ignore_rust_version = args.flag("ignore-rust-version");
- if ignore_rust_version && !gctx.cli_unstable().msrv_policy {
- return Err(CliError::new(
- anyhow::format_err!(
- "`--ignore-rust-version` is unstable; pass `-Zmsrv-policy` to enable support for it"
- ),
- 101,
- ));
- }
let honor_rust_version = !ignore_rust_version;
let options = AddOptions {
diff --git a/src/cargo/ops/cargo_add/mod.rs b/src/cargo/ops/cargo_add/mod.rs
index 61b12c7ac66b..745701e83ff3 100644
--- a/src/cargo/ops/cargo_add/mod.rs
+++ b/src/cargo/ops/cargo_add/mod.rs
@@ -615,7 +615,7 @@ fn get_latest_dependency(
)
})?;
- if gctx.cli_unstable().msrv_policy && honor_rust_version {
+ if honor_rust_version {
let (req_msrv, is_msrv) = spec
.rust_version()
.cloned()
diff --git a/src/doc/man/cargo-add.md b/src/doc/man/cargo-add.md
index 3c7adec4e049..d773004a7d23 100644
--- a/src/doc/man/cargo-add.md
+++ b/src/doc/man/cargo-add.md
@@ -141,11 +141,6 @@ which enables all specified features.
{{#option "`--ignore-rust-version`" }}
Ignore `rust-version` specification in packages.
-
-This option is unstable and available only on the
-[nightly channel](https://doc.rust-lang.org/book/appendix-07-nightly-rust.html)
-and requires the `-Z unstable-options` flag to enable.
-See for more information.
{{/option}}
{{/options}}
diff --git a/src/doc/man/generated_txt/cargo-add.txt b/src/doc/man/generated_txt/cargo-add.txt
index a7246e38a298..ad08e198360a 100644
--- a/src/doc/man/generated_txt/cargo-add.txt
+++ b/src/doc/man/generated_txt/cargo-add.txt
@@ -131,12 +131,6 @@ OPTIONS
--ignore-rust-version
Ignore rust-version specification in packages.
- This option is unstable and available only on the nightly channel
- and
- requires the -Z unstable-options flag to enable. See
- for more
- information.
-
Display Options
-v, --verbose
Use verbose output. May be specified twice for “very verbose”
diff --git a/src/doc/src/commands/cargo-add.md b/src/doc/src/commands/cargo-add.md
index 9f599d37cadc..38c3ef8da7f2 100644
--- a/src/doc/src/commands/cargo-add.md
+++ b/src/doc/src/commands/cargo-add.md
@@ -137,11 +137,7 @@ which enables all specified features.
--ignore-rust-version
-Ignore rust-version
specification in packages.
-This option is unstable and available only on the
-nightly channel
-and requires the -Z unstable-options
flag to enable.
-See https://github.com/rust-lang/cargo/issues/5579 for more information.
+
Ignore rust-version
specification in packages.
diff --git a/src/doc/src/reference/unstable.md b/src/doc/src/reference/unstable.md
index f0c5ffed06eb..57fda868be0d 100644
--- a/src/doc/src/reference/unstable.md
+++ b/src/doc/src/reference/unstable.md
@@ -326,8 +326,6 @@ Documentation updates:
## msrv-policy
- [#9930](https://github.com/rust-lang/cargo/issues/9930) (MSRV-aware resolver)
-- [#10653](https://github.com/rust-lang/cargo/issues/10653) (MSRV-aware cargo-add)
-- [#10903](https://github.com/rust-lang/cargo/issues/10903) (MSRV-aware cargo-install)
The `msrv-policy` feature enables experiments in MSRV-aware policy for cargo in
preparation for an upcoming RFC.
diff --git a/src/etc/man/cargo-add.1 b/src/etc/man/cargo-add.1
index c44a48346861..979595b5fc68 100644
--- a/src/etc/man/cargo-add.1
+++ b/src/etc/man/cargo-add.1
@@ -162,11 +162,6 @@ which enables all specified features.
\fB\-\-ignore\-rust\-version\fR
.RS 4
Ignore \fBrust\-version\fR specification in packages.
-.sp
-This option is unstable and available only on the
-\fInightly channel\fR
-and requires the \fB\-Z unstable\-options\fR flag to enable.
-See for more information.
.RE
.SS "Display Options"
.sp
diff --git a/tests/testsuite/cargo_add/help/stdout.term.svg b/tests/testsuite/cargo_add/help/stdout.term.svg
index b6a4a476ea1f..b7d819a65f9a 100644
--- a/tests/testsuite/cargo_add/help/stdout.term.svg
+++ b/tests/testsuite/cargo_add/help/stdout.term.svg
@@ -125,7 +125,7 @@
--ignore-rust-version
- Ignore `rust-version` specification in packages (unstable)
+ Ignore `rust-version` specification in packages