Skip to content

Commit 7fbbf4e

Browse files
committed
Auto merge of #9953 - Aaron1011:nicer-incompat-report, r=ehuss
Make future-incompat-report output more user-friendly When the user enables `--future-incompat-report`, we now display a high-level summary of the problem, as well as several suggestions for fixing the affected crates. The command `cargo report future-incompatibilities` now takes a `--crate` option, which can be used to display a report (including the actual lint messages) for a single crate. When this option is not used, we display the report for all crates. Sample output from the `actix` crate: `> RUSTFLAGS="-Z future-incompat-test" ~/repos/cargo/target/debug/cargo build -Z future-incompat-report ` ``` Finished dev [unoptimized + debuginfo] target(s) in 2.09s warning: the following packages contain code that will be rejected by a future version of Rust: actix v0.11.1 (/home/aaron/repos/actix/actix), ahash v0.7.4, arc-swap v0.4.4, autocfg v1.0.0, crossbeam-utils v0.8.5, futures-macro v0.3.17, futures-util v0.3.17, lazy_static v1.4.0, libc v0.2.103, lock_api v0.4.5, log v0.4.8, mio v0.7.13, parking_lot_core v0.8.5, signal-hook-registry v1.2.0, smallvec v1.7.0, syn v1.0.77, tokio v1.12.0, tokio-util v0.6.8, unicode-xid v0.2.0, version_check v0.9.3 note: to see what the problems were, use the option `--future-incompat-report`, or run `cargo report future-incompatibilities --id 2` ``` `> RUSTFLAGS="-Z future-incompat-test" ~/repos/cargo/target/debug/cargo build -Z future-incompat-report --future-incompat-report -Z unstable-options` ``` Finished dev [unoptimized + debuginfo] target(s) in 2.12s warning: the following packages contain code that will be rejected by a future version of Rust: actix v0.11.1 (/home/aaron/repos/actix/actix), ahash v0.7.4, arc-swap v0.4.4, autocfg v1.0.0, crossbeam-utils v0.8.5, futures-macro v0.3.17, futures-util v0.3.17, lazy_static v1.4.0, libc v0.2.103, lock_api v0.4.5, log v0.4.8, mio v0.7.13, parking_lot_core v0.8.5, signal-hook-registry v1.2.0, smallvec v1.7.0, syn v1.0.77, tokio v1.12.0, tokio-util v0.6.8, unicode-xid v0.2.0, version_check v0.9.3 note: To solve this problem, you can try the following approaches: - Some affected dependencies have newer versions available. You may want to consider updating them to a newer version to see if the issue has been fixed. ahash v0.7.4 has the following newer versions available: 0.7.5 arc-swap v0.4.4 has the following newer versions available: 0.4.8, 1.1.0, 1.2.0, 1.3.0, 1.3.1, 1.3.2, 1.4.0 autocfg v1.0.0 has the following newer versions available: 1.0.1 log v0.4.8 has the following newer versions available: 0.4.11, 0.4.13, 0.4.14 signal-hook-registry v1.2.0 has the following newer versions available: 1.2.1, 1.2.2, 1.3.0, 1.4.0 syn v1.0.77 has the following newer versions available: 1.0.78, 1.0.79, 1.0.80 unicode-xid v0.2.0 has the following newer versions available: 0.2.1, 0.2.2 - If the issue is not solved by updating the dependencies, a fix has to be implemented by those dependencies. You can help with that by notifying the maintainers of this problem (e.g. by creating a bug report) or by proposing a fix to the maintainers (e.g. by creating a pull request): - actix:0.11.1 - Repository: https://github.com/actix/actix - Detailed warning command: `cargo report future-incompatibilities --id 3 --crate "actix:0.11.1" - ahash:0.7.4 - Repository: https://github.com/tkaitchuck/ahash - Detailed warning command: `cargo report future-incompatibilities --id 3 --crate "ahash:0.7.4" - arc-swap:0.4.4 - Repository: https://github.com/vorner/arc-swap - Detailed warning command: `cargo report future-incompatibilities --id 3 --crate "arc-swap:0.4.4" - autocfg:1.0.0 - Repository: https://github.com/cuviper/autocfg - Detailed warning command: `cargo report future-incompatibilities --id 3 --crate "autocfg:1.0.0" - crossbeam-utils:0.8.5 - Repository: https://github.com/crossbeam-rs/crossbeam - Detailed warning command: `cargo report future-incompatibilities --id 3 --crate "crossbeam-utils:0.8.5" - futures-macro:0.3.17 - Repository: https://github.com/rust-lang/futures-rs - Detailed warning command: `cargo report future-incompatibilities --id 3 --crate "futures-macro:0.3.17" - futures-util:0.3.17 - Repository: https://github.com/rust-lang/futures-rs - Detailed warning command: `cargo report future-incompatibilities --id 3 --crate "futures-util:0.3.17" - lazy_static:1.4.0 - Repository: https://github.com/rust-lang-nursery/lazy-static.rs - Detailed warning command: `cargo report future-incompatibilities --id 3 --crate "lazy_static:1.4.0" - libc:0.2.103 - Repository: https://github.com/rust-lang/libc - Detailed warning command: `cargo report future-incompatibilities --id 3 --crate "libc:0.2.103" - lock_api:0.4.5 - Repository: https://github.com/Amanieu/parking_lot - Detailed warning command: `cargo report future-incompatibilities --id 3 --crate "lock_api:0.4.5" - log:0.4.8 - Repository: https://github.com/rust-lang/log - Detailed warning command: `cargo report future-incompatibilities --id 3 --crate "log:0.4.8" - mio:0.7.13 - Repository: https://github.com/tokio-rs/mio - Detailed warning command: `cargo report future-incompatibilities --id 3 --crate "mio:0.7.13" - parking_lot_core:0.8.5 - Repository: https://github.com/Amanieu/parking_lot - Detailed warning command: `cargo report future-incompatibilities --id 3 --crate "parking_lot_core:0.8.5" - signal-hook-registry:1.2.0 - Repository: https://github.com/vorner/signal-hook - Detailed warning command: `cargo report future-incompatibilities --id 3 --crate "signal-hook-registry:1.2.0" - smallvec:1.7.0 - Repository: https://github.com/servo/rust-smallvec - Detailed warning command: `cargo report future-incompatibilities --id 3 --crate "smallvec:1.7.0" - syn:1.0.77 - Repository: https://github.com/dtolnay/syn - Detailed warning command: `cargo report future-incompatibilities --id 3 --crate "syn:1.0.77" - tokio:1.12.0 - Repository: https://github.com/tokio-rs/tokio - Detailed warning command: `cargo report future-incompatibilities --id 3 --crate "tokio:1.12.0" - tokio-util:0.6.8 - Repository: https://github.com/tokio-rs/tokio - Detailed warning command: `cargo report future-incompatibilities --id 3 --crate "tokio-util:0.6.8" - unicode-xid:0.2.0 - Repository: https://github.com/unicode-rs/unicode-xid - Detailed warning command: `cargo report future-incompatibilities --id 3 --crate "unicode-xid:0.2.0" - version_check:0.9.3 - Repository: https://github.com/SergioBenitez/version_check - Detailed warning command: `cargo report future-incompatibilities --id 3 --crate "version_check:0.9.3" - If waiting for an upstream fix is not an option, you can use the `[patch]` section in `Cargo.toml` to use your own version of the dependency. For more information, see: https://doc.rust-lang.org/cargo/reference/overriding-dependencies.html#the-patch-section note: this report can be shown with `cargo report future-incompatibilities -Z future-incompat-report --id 3` ``` `> RUSTFLAGS="-Z future-incompat-test" ~/repos/cargo/target/debug/cargo report future-incompatibilities -Z future-incompat-report --color never | head -n 100` ``` The following warnings were discovered during the build. These warnings are an indication that the packages contain code that will become an error in a future release of Rust. These warnings typically cover changes to close soundness problems, unintended or undocumented behavior, or critical problems that cannot be fixed in a backwards-compatible fashion, and are not expected to be in wide use. Each warning should contain a link for more information on what the warning means and how to resolve it. - Some affected dependencies have newer versions available. You may want to consider updating them to a newer version to see if the issue has been fixed. ahash v0.7.4 has the following newer versions available: 0.7.5 arc-swap v0.4.4 has the following newer versions available: 0.4.8, 1.1.0, 1.2.0, 1.3.0, 1.3.1, 1.3.2, 1.4.0 autocfg v1.0.0 has the following newer versions available: 1.0.1 log v0.4.8 has the following newer versions available: 0.4.11, 0.4.13, 0.4.14 signal-hook-registry v1.2.0 has the following newer versions available: 1.2.1, 1.2.2, 1.3.0, 1.4.0 syn v1.0.77 has the following newer versions available: 1.0.78, 1.0.79, 1.0.80 unicode-xid v0.2.0 has the following newer versions available: 0.2.1, 0.2.2 The package `actix v0.11.1 (/home/aaron/repos/actix/actix)` currently triggers the following future incompatibility lints: > warning: use of deprecated struct `utils::Condition`: Please use tokio::sync::oneshot::Sender instead. > --> actix/src/utils.rs:25:9 > | > 25 | impl<T> Condition<T> > | ^^^^^^^^^ > | > note: the lint level is defined here > --> actix/src/lib.rs:30:10 > | > 30 | #![allow(deprecated)] > | ^^^^^^^^^^ > > warning: use of deprecated struct `utils::Condition`: Please use tokio::sync::oneshot::Sender instead. > --> actix/src/utils.rs:42:21 > | > 42 | impl<T> Default for Condition<T> > | ^^^^^^^^^ > > warning: use of deprecated struct `utils::Condition`: Please use tokio::sync::oneshot::Sender instead. > --> actix/src/utils.rs:47:9 > | > 47 | Condition { > | ^^^^^^^^^ > > warning: use of deprecated struct `utils::Condition`: Please use tokio::sync::oneshot::Sender instead. > --> actix/src/lib.rs:120:28 > | > 120 | pub use crate::utils::{Condition, IntervalFunc, TimerFunc}; > | ^^^^^^^^^ > > warning: use of deprecated associated function `std::sync::atomic::AtomicUsize::compare_and_swap`: Use `compare_exchange` or `compare_exchange_weak` instead > --> actix/src/address/channel.rs:512:49 > | > 512 | let actual = self.inner.num_senders.compare_and_swap(curr, next, SeqCst); > | ^^^^^^^^^^^^^^^^ > > warning: use of deprecated associated function `std::sync::atomic::AtomicUsize::compare_and_swap`: Use `compare_exchange` or `compare_exchange_weak` instead > --> actix/src/address/channel.rs:636:49 > | > 636 | let actual = self.inner.num_senders.compare_and_swap(curr, next, SeqCst); > | ^^^^^^^^^^^^^^^^ > > warning: use of deprecated associated function `std::sync::atomic::AtomicUsize::compare_and_swap`: Use `compare_exchange` or `compare_exchange_weak` instead > --> actix/src/address/channel.rs:697:49 > | > 697 | let actual = self.inner.num_senders.compare_and_swap(curr, next, SeqCst); > | ^^^^^^^^^^^^^^^^ > > warning: use of deprecated field `utils::Condition::waiters`: Please use tokio::sync::oneshot::Sender instead. > --> actix/src/utils.rs:31:9 > | > 31 | self.waiters.push(tx); > | ^^^^^^^^^^^^ > > warning: use of deprecated field `utils::Condition::waiters`: Please use tokio::sync::oneshot::Sender instead. > --> actix/src/utils.rs:36:23 > | > 36 | for waiter in self.waiters { > | ^^^^^^^^^^^^ > > warning: use of deprecated field `utils::Condition::waiters`: Please use tokio::sync::oneshot::Sender instead. > --> actix/src/utils.rs:48:13 > | > 48 | waiters: Vec::new(), > | ^^^^^^^^^^^^^^^^^^^ > > warning: unused variable: `ctx` > --> actix/src/actor.rs:78:27 > | > 78 | fn started(&mut self, ctx: &mut Self::Context) {} > | ^^^ help: if this is intentional, prefix it with an underscore: `_ctx` > | > note: the lint level is defined here > --> actix/src/actor.rs:72:9 > | > 72 | #[allow(unused_variables)] > | ^^^^^^^^^^^^^^^^ ```
2 parents 1e5be5f + 7ffba67 commit 7fbbf4e

File tree

4 files changed

+280
-158
lines changed

4 files changed

+280
-158
lines changed

src/bin/cargo/commands/report.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ pub fn cli() -> App {
1818
"identifier of the report generated by a Cargo command invocation",
1919
)
2020
.value_name("id"),
21-
),
21+
)
22+
.arg_package("Package to display a report for"),
2223
)
2324
}
2425

@@ -38,7 +39,8 @@ fn report_future_incompatibilies(config: &Config, args: &ArgMatches<'_>) -> CliR
3839
let id = args
3940
.value_of_u32("id")?
4041
.unwrap_or_else(|| reports.last_id());
41-
let report = reports.get_report(id, config)?;
42+
let krate = args.value_of("package");
43+
let report = reports.get_report(id, config, krate)?;
4244
drop_println!(config, "{}", REPORT_PREAMBLE);
4345
drop(config.shell().print_ansi_stdout(report.as_bytes()));
4446
Ok(())

0 commit comments

Comments
 (0)