]> git.proxmox.com Git - cargo.git/commitdiff
Add some more information to verbose version.
authorEric Huss <eric@huss.org>
Fri, 8 Oct 2021 19:19:24 +0000 (12:19 -0700)
committerEric Huss <eric@huss.org>
Fri, 8 Oct 2021 19:54:24 +0000 (12:54 -0700)
Cargo.toml
build.rs
src/bin/cargo/cli.rs
tests/testsuite/version.rs

index 2185d11e0e5c083631fd77980367b309ae1dc925..5a0e29f7f11a4c129d141f6ccfb205e28f019e24 100644 (file)
@@ -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"
index 8c33c72b098624a5d4d988e8ca6355ec15ddaa6e..68865b58fcf91ce7fea46e6907506ad77df2c804 100644 (file)
--- a/build.rs
+++ b/build.rs
@@ -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() {
index 627d2ea0594dca9ebc31b3187e6f28d4c7c1ff5f..fdb28a9405b92312c8bebd04d01a996b4988a6ca 100644 (file)
@@ -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;
@@ -173,10 +174,63 @@ 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);
     }
     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>,
index 911b2360b0fcdd0aff5f705252dc80f9bb8e7ff1..0e4632da6fd9bda50e93ec15849f433391a28d29 100644 (file)
@@ -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() {
@@ -41,3 +41,14 @@ 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: [..]")
+        .run();
+}