Prechádzať zdrojové kódy

solana_version: gen random u32 if commit not set (#5874)

Greg Cusack 7 mesiacov pred
rodič
commit
8d5c4bab3b

+ 1 - 0
Cargo.lock

@@ -11074,6 +11074,7 @@ name = "solana-version"
 version = "2.3.0"
 dependencies = [
  "agave-feature-set",
+ "rand 0.8.5",
  "semver 1.0.26",
  "serde",
  "serde_derive",

+ 1 - 0
programs/sbf/Cargo.lock

@@ -9155,6 +9155,7 @@ name = "solana-version"
 version = "2.3.0"
 dependencies = [
  "agave-feature-set",
+ "rand 0.8.5",
  "semver",
  "serde",
  "serde_derive",

+ 1 - 0
svm/examples/Cargo.lock

@@ -8496,6 +8496,7 @@ name = "solana-version"
 version = "2.3.0"
 dependencies = [
  "agave-feature-set",
+ "rand 0.8.5",
  "semver",
  "serde",
  "serde_derive",

+ 1 - 0
version/Cargo.toml

@@ -11,6 +11,7 @@ edition = { workspace = true }
 
 [dependencies]
 agave-feature-set = { workspace = true }
+rand = { workspace = true }
 semver = { workspace = true }
 serde = { workspace = true }
 serde_derive = { workspace = true }

+ 12 - 0
version/build.rs

@@ -0,0 +1,12 @@
+use std::process::Command;
+
+fn main() {
+    if let Ok(git_output) = Command::new("git").args(["rev-parse", "HEAD"]).output() {
+        if git_output.status.success() {
+            if let Ok(git_commit_hash) = String::from_utf8(git_output.stdout) {
+                let trimmed_hash = git_commit_hash.trim().to_string();
+                println!("cargo:rustc-env=AGAVE_GIT_COMMIT_HASH={}", trimmed_hash);
+            }
+        }
+    }
+}

+ 4 - 1
version/src/lib.rs

@@ -3,6 +3,7 @@
 extern crate serde_derive;
 pub use self::legacy::{LegacyVersion1, LegacyVersion2};
 use {
+    rand::{thread_rng, Rng},
     serde_derive::{Deserialize, Serialize},
     solana_sanitize::Sanitize,
     solana_serde_varint as serde_varint,
@@ -61,7 +62,9 @@ impl Default for Version {
             major: env!("CARGO_PKG_VERSION_MAJOR").parse().unwrap(),
             minor: env!("CARGO_PKG_VERSION_MINOR").parse().unwrap(),
             patch: env!("CARGO_PKG_VERSION_PATCH").parse().unwrap(),
-            commit: compute_commit(option_env!("CI_COMMIT")).unwrap_or_default(),
+            commit: compute_commit(option_env!("CI_COMMIT"))
+                .or(compute_commit(option_env!("AGAVE_GIT_COMMIT_HASH")))
+                .unwrap_or_else(|| thread_rng().gen::<u32>()),
             feature_set,
             // Other client implementations need to modify this line.
             client: u16::try_from(ClientId::Agave).unwrap(),