Skip to content

Commit

Permalink
Auto merge of #9968 - ehuss:verbose-version, r=alexcrichton,Eh2406
Browse files Browse the repository at this point in the history
Add some more information to verbose version.

This adds a little bit of extra information to the verbose version command.

cc #6275 and #6161

Some examples of what it might look like:

```
cargo 1.57.0
release: 1.57.0
host: x86_64-unknown-linux-gnu
libgit2: 1.3.0 (sys:0.13.23 vendored)
libcurl: 7.79.1-DEV (sys:0.4.49+curl-7.79.1 vendored ssl:OpenSSL/1.1.1k)
ssl: OpenSSL 1.1.1k  25 Mar 2021
```

```
cargo 1.57.0
release: 1.57.0
host: x86_64-pc-windows-msvc
libgit2: 1.3.0 (sys:0.13.23 vendored)
libcurl: 7.79.1-DEV (sys:0.4.49+curl-7.79.1 vendored ssl:Schannel)
```

```
cargo 1.57.0
release: 1.57.0
host: x86_64-apple-darwin
libgit2: 1.3.0 (sys:0.13.23 vendored)
libcurl: 7.64.1 (sys:0.4.49+curl-7.79.1 system ssl:(SecureTransport) LibreSSL/2.8.3)
ssl: OpenSSL 1.1.1l  24 Aug 2021
```
  • Loading branch information
bors committed Oct 11, 2021
2 parents dea587a + 9f5da7c commit c7957a7
Show file tree
Hide file tree
Showing 5 changed files with 76 additions and 4 deletions.
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.md
Expand Up @@ -22,7 +22,7 @@ labels: C-bug

**Notes**

Output of `cargo version`:
Output of `cargo version --verbose`:

<!-- Also, any additional context or information you feel may be relevant to the issue. -->
<!-- (e.g rust version, OS platform/distribution/version, target toolchain(s), release channel.. -->
5 changes: 3 additions & 2 deletions Cargo.toml
Expand Up @@ -25,8 +25,8 @@ cargo-platform = { path = "crates/cargo-platform", version = "0.1.2" }
cargo-util = { path = "crates/cargo-util", version = "0.1.1" }
crates-io = { path = "crates/crates-io", version = "0.33.0" }
crossbeam-utils = "0.8"
curl = { version = "0.4.38", features = ["http2"] }
curl-sys = "0.4.48"
curl = { version = "0.4.39", features = ["http2"] }
curl-sys = "0.4.49"
env_logger = "0.9.0"
pretty_env_logger = { version = "0.4", optional = true }
anyhow = "1.0"
Expand All @@ -48,6 +48,7 @@ libgit2-sys = "0.12.24"
memchr = "2.1.3"
num_cpus = "1.0"
opener = "0.5"
os_info = "3.0.7"
percent-encoding = "2.0"
rustfix = "0.6.0"
semver = { version = "1.0.3", features = ["serde"] }
Expand Down
4 changes: 4 additions & 0 deletions build.rs
Expand Up @@ -5,6 +5,10 @@ use std::path::Path;

fn main() {
compress_man();
println!(
"cargo:rustc-env=RUST_HOST_TARGET={}",
std::env::var("TARGET").unwrap()
);
}

fn compress_man() {
Expand Down
55 changes: 55 additions & 0 deletions src/bin/cargo/cli.rs
Expand Up @@ -4,6 +4,7 @@ use cargo::{self, drop_print, drop_println, CliResult, Config};
use clap::{AppSettings, Arg, ArgMatches};
use itertools::Itertools;
use std::collections::HashMap;
use std::fmt::Write;

use super::commands;
use super::list_commands;
Expand Down Expand Up @@ -173,10 +174,64 @@ pub fn get_version_string(is_verbose: bool) -> String {
version_string.push_str(&format!("commit-date: {}\n", ci.commit_date));
}
}
writeln!(version_string, "host: {}", env!("RUST_HOST_TARGET")).unwrap();
add_libgit2(&mut version_string);
add_curl(&mut version_string);
add_ssl(&mut version_string);
writeln!(version_string, "os: {}", os_info::get()).unwrap();
}
version_string
}

fn add_libgit2(version_string: &mut String) {
let git2_v = git2::Version::get();
let lib_v = git2_v.libgit2_version();
let vendored = if git2_v.vendored() {
format!("vendored")
} else {
format!("system")
};
writeln!(
version_string,
"libgit2: {}.{}.{} (sys:{} {})",
lib_v.0,
lib_v.1,
lib_v.2,
git2_v.crate_version(),
vendored
)
.unwrap();
}

fn add_curl(version_string: &mut String) {
let curl_v = curl::Version::get();
let vendored = if curl_v.vendored() {
format!("vendored")
} else {
format!("system")
};
writeln!(
version_string,
"libcurl: {} (sys:{} {} ssl:{})",
curl_v.version(),
curl_sys::rust_crate_version(),
vendored,
curl_v.ssl_version().unwrap_or("none")
)
.unwrap();
}

fn add_ssl(version_string: &mut String) {
#[cfg(feature = "openssl")]
{
writeln!(version_string, "ssl: {}", openssl::version::version()).unwrap();
}
#[cfg(not(feature = "openssl"))]
{
let _ = version_string; // Silence unused warning.
}
}

fn expand_aliases(
config: &mut Config,
args: ArgMatches<'static>,
Expand Down
14 changes: 13 additions & 1 deletion tests/testsuite/version.rs
@@ -1,6 +1,6 @@
//! Tests for displaying the cargo version.

use cargo_test_support::project;
use cargo_test_support::{cargo_process, project};

#[cargo_test]
fn simple() {
Expand Down Expand Up @@ -41,3 +41,15 @@ fn version_works_with_bad_target_dir() {
.build();
p.cargo("version").run();
}

#[cargo_test]
fn verbose() {
// This is mainly to check that it doesn't explode.
cargo_process("-vV")
.with_stdout_contains(&format!("cargo {}", cargo::version()))
.with_stdout_contains("host: [..]")
.with_stdout_contains("libgit2: [..]")
.with_stdout_contains("libcurl: [..]")
.with_stdout_contains("os: [..]")
.run();
}

0 comments on commit c7957a7

Please sign in to comment.