From 653f9a52fd799d221a3c782381b3d80308d27fe0 Mon Sep 17 00:00:00 2001 From: Daniel Xifra Date: Wed, 17 Dec 2025 15:25:42 -0300 Subject: [PATCH] refactored Version info --- .../client/bidding_service_client_adapter.rs | 15 ++--- crates/rbuilder-operator/src/build_info.rs | 47 +------------ .../rbuilder-operator/src/flashbots_config.rs | 2 +- crates/rbuilder-operator/src/metrics.rs | 3 +- crates/rbuilder-utils/src/build_info.rs | 67 +++++++++++++++++++ crates/rbuilder-utils/src/lib.rs | 1 + crates/rbuilder/Cargo.toml | 1 + crates/rbuilder/src/live_builder/cli.rs | 3 +- crates/rbuilder/src/live_builder/config.rs | 2 +- crates/rbuilder/src/telemetry/metrics/mod.rs | 3 +- crates/rbuilder/src/telemetry/servers/full.rs | 12 ++-- crates/rbuilder/src/utils/build_info.rs | 59 +--------------- 12 files changed, 92 insertions(+), 123 deletions(-) create mode 100644 crates/rbuilder-utils/src/build_info.rs diff --git a/crates/rbuilder-operator/src/bidding_service_wrapper/client/bidding_service_client_adapter.rs b/crates/rbuilder-operator/src/bidding_service_wrapper/client/bidding_service_client_adapter.rs index 8abe46208..5a08bf3c3 100644 --- a/crates/rbuilder-operator/src/bidding_service_wrapper/client/bidding_service_client_adapter.rs +++ b/crates/rbuilder-operator/src/bidding_service_wrapper/client/bidding_service_client_adapter.rs @@ -1,17 +1,14 @@ use futures_util::FutureExt; use hyper_util::rt::TokioIo; use parking_lot::Mutex; -use rbuilder::{ - live_builder::{ - block_output::bidding_service_interface::{ - BiddingService, BlockSealInterfaceForSlotBidder, - LandedBlockInfo as RealLandedBlockInfo, RelaySet, ScrapedRelayBlockBidWithStats, - SlotBidder, SlotBlockId, - }, - process_killer::ProcessKiller, +use rbuilder::live_builder::{ + block_output::bidding_service_interface::{ + BiddingService, BlockSealInterfaceForSlotBidder, LandedBlockInfo as RealLandedBlockInfo, + RelaySet, ScrapedRelayBlockBidWithStats, SlotBidder, SlotBlockId, }, - utils::build_info::Version, + process_killer::ProcessKiller, }; +use rbuilder_utils::build_info::Version; use std::{ collections::HashMap, path::PathBuf, diff --git a/crates/rbuilder-operator/src/build_info.rs b/crates/rbuilder-operator/src/build_info.rs index a0e4b3ef1..58dd2419d 100644 --- a/crates/rbuilder-operator/src/build_info.rs +++ b/crates/rbuilder-operator/src/build_info.rs @@ -1,45 +1,2 @@ -// The file has been placed there by the build script. - -mod internal { - include!(concat!(env!("OUT_DIR"), "/built.rs")); -} - -use internal::{ - BUILT_TIME_UTC, CI_PLATFORM, FEATURES, GIT_COMMIT_HASH_SHORT, GIT_HEAD_REF, PROFILE, - RUSTC_VERSION, -}; -use rbuilder::utils::build_info::Version; - -pub fn print_version_info() { - println!( - "commit: {}", - GIT_COMMIT_HASH_SHORT.unwrap_or_default() - ); - println!("branch: {}", GIT_HEAD_REF.unwrap_or_default()); - println!("build_platform: {:?}", CI_PLATFORM.unwrap_or_default()); - println!("build_time: {BUILT_TIME_UTC}"); - println!("features: {FEATURES:?}"); - println!("profile: {PROFILE}"); - println!("rustc: {RUSTC_VERSION}"); -} - -pub fn rbuilder_version() -> Version { - let git_commit = { - let mut commit = String::new(); - if let Some(hash) = GIT_COMMIT_HASH_SHORT { - commit.push_str(hash); - } - if commit.is_empty() { - commit.push_str("unknown"); - } - commit - }; - - let git_ref = GIT_HEAD_REF.unwrap_or("unknown").to_string(); - - Version { - git_commit, - git_ref, - build_time_utc: BUILT_TIME_UTC.to_string(), - } -} +use rbuilder_utils::define_version_module; +define_version_module!(rbuilder_version); diff --git a/crates/rbuilder-operator/src/flashbots_config.rs b/crates/rbuilder-operator/src/flashbots_config.rs index f48556258..1d91e0520 100644 --- a/crates/rbuilder-operator/src/flashbots_config.rs +++ b/crates/rbuilder-operator/src/flashbots_config.rs @@ -29,9 +29,9 @@ use rbuilder::{ LiveBuilder, }, provider::StateProviderFactory, - utils::build_info::Version, }; use rbuilder_config::EnvOrValue; +use rbuilder_utils::build_info::Version; use serde::Deserialize; use serde_with::serde_as; use time::OffsetDateTime; diff --git a/crates/rbuilder-operator/src/metrics.rs b/crates/rbuilder-operator/src/metrics.rs index 3830b6dc6..5c41d05ab 100644 --- a/crates/rbuilder-operator/src/metrics.rs +++ b/crates/rbuilder-operator/src/metrics.rs @@ -10,8 +10,9 @@ use prometheus::{ }; use rbuilder::{ telemetry::{exponential_buckets_range, REGISTRY}, - utils::{self, build_info::Version}, + utils::{self}, }; +use rbuilder_utils::build_info::Version; use rbuilder_utils::clickhouse::Quantities; register_metrics! { diff --git a/crates/rbuilder-utils/src/build_info.rs b/crates/rbuilder-utils/src/build_info.rs new file mode 100644 index 000000000..953d035a8 --- /dev/null +++ b/crates/rbuilder-utils/src/build_info.rs @@ -0,0 +1,67 @@ +//! Macro to generate functions to get git information from the current build. +//! Everything is based on the data generated by the built crate. +//! This has to be a macro and not a function since it's referencing a dynamically build mod create by built. +//! Top use add: +//! built::write_built_file().expect("Failed to acquire build-time information"); on the main in build.rs and then call the macro like: +//! define_version_module!(rbuilder_version); + +#[derive(Debug)] +pub struct Version { + /// 8 digits commit. if modified "-dirty" is appended + pub git_commit: String, + /// Git ref if available (eg:"refs/heads/more-comments") + pub git_ref: String, + pub build_time_utc: String, +} + +#[macro_export] +macro_rules! define_version_module { + ($version_fn_name:ident) => { + mod internal { + include!(concat!(env!("OUT_DIR"), "/built.rs")); + } + + use internal::{ + BUILT_TIME_UTC, FEATURES, GIT_COMMIT_HASH_SHORT, GIT_DIRTY, GIT_HEAD_REF, GIT_VERSION, + PROFILE, RUSTC_VERSION, + }; + use rbuilder_utils::build_info::Version; + + pub fn print_version_info() { + println!("version: {}", GIT_VERSION.unwrap_or_default()); + println!("commit: {}", GIT_COMMIT_HASH_SHORT.unwrap_or_default()); + println!("dirty: {}", GIT_DIRTY.unwrap_or_default()); + println!("branch: {}", GIT_HEAD_REF.unwrap_or_default()); + println!("build_time: {BUILT_TIME_UTC}"); + println!("rustc: {RUSTC_VERSION}"); + println!("features: {FEATURES:?}"); + println!("profile: {PROFILE}"); + } + + pub fn $version_fn_name() -> Version { + let git_commit = { + let mut commit = String::new(); + if let Some(hash) = GIT_COMMIT_HASH_SHORT { + commit.push_str(hash); + } + if let Some(dirty) = GIT_DIRTY { + if dirty { + commit.push_str("-dirty"); + } + } + if commit.is_empty() { + commit.push_str("unknown"); + } + commit + }; + + let git_ref = GIT_HEAD_REF.unwrap_or("unknown").to_string(); + + Version { + git_commit, + git_ref, + build_time_utc: BUILT_TIME_UTC.to_string(), + } + } + }; +} diff --git a/crates/rbuilder-utils/src/lib.rs b/crates/rbuilder-utils/src/lib.rs index 7badcf364..015672cf1 100644 --- a/crates/rbuilder-utils/src/lib.rs +++ b/crates/rbuilder-utils/src/lib.rs @@ -1,4 +1,5 @@ pub mod backoff; +pub mod build_info; pub mod clickhouse; pub mod format; pub mod metrics; diff --git a/crates/rbuilder/Cargo.toml b/crates/rbuilder/Cargo.toml index 35210f2af..268a7b711 100644 --- a/crates/rbuilder/Cargo.toml +++ b/crates/rbuilder/Cargo.toml @@ -13,6 +13,7 @@ build = "build.rs" [dependencies] rbuilder-primitives.workspace = true rbuilder-config.workspace = true +rbuilder-utils.workspace = true serde = { workspace = true } derive_more = { workspace = true } diff --git a/crates/rbuilder/src/live_builder/cli.rs b/crates/rbuilder/src/live_builder/cli.rs index 2b78ff78c..ea0ca350c 100644 --- a/crates/rbuilder/src/live_builder/cli.rs +++ b/crates/rbuilder/src/live_builder/cli.rs @@ -1,5 +1,6 @@ use clap::Parser; use rbuilder_config::load_toml_config; +use rbuilder_utils::build_info::Version; use serde::de::DeserializeOwned; use std::{ fmt::Debug, @@ -22,7 +23,7 @@ use crate::{ }, provider::StateProviderFactory, telemetry, - utils::{bls::generate_random_bls_address, build_info::Version}, + utils::bls::generate_random_bls_address, }; use super::{base_config::BaseConfig, LiveBuilder}; diff --git a/crates/rbuilder/src/live_builder/config.rs b/crates/rbuilder/src/live_builder/config.rs index cd55f4b17..79193d47e 100644 --- a/crates/rbuilder/src/live_builder/config.rs +++ b/crates/rbuilder/src/live_builder/config.rs @@ -511,7 +511,7 @@ impl LiveBuilderConfig for Config { Ok(live_builder.with_builders(builders)) } - fn version_for_telemetry(&self) -> crate::utils::build_info::Version { + fn version_for_telemetry(&self) -> rbuilder_utils::build_info::Version { rbuilder_version() } diff --git a/crates/rbuilder/src/telemetry/metrics/mod.rs b/crates/rbuilder/src/telemetry/metrics/mod.rs index d22404fef..f78886b4b 100644 --- a/crates/rbuilder/src/telemetry/metrics/mod.rs +++ b/crates/rbuilder/src/telemetry/metrics/mod.rs @@ -9,7 +9,7 @@ use crate::{ building::BuiltBlockTrace, live_builder::block_list_provider::{blocklist_hash, BlockList}, - utils::{build_info::Version, duration_ms}, + utils::duration_ms, }; use alloy_consensus::constants::GWEI_TO_WEI; use alloy_primitives::{utils::Unit, U256}; @@ -25,6 +25,7 @@ use prometheus::{ IntGaugeVec, Opts, Registry, }; use rbuilder_primitives::mev_boost::MevBoostRelayID; +use rbuilder_utils::build_info::Version; use std::time::Duration; use time::OffsetDateTime; use tracing::error; diff --git a/crates/rbuilder/src/telemetry/servers/full.rs b/crates/rbuilder/src/telemetry/servers/full.rs index d260ecc58..e5a94b5d9 100644 --- a/crates/rbuilder/src/telemetry/servers/full.rs +++ b/crates/rbuilder/src/telemetry/servers/full.rs @@ -7,17 +7,15 @@ //! //! Full server may expose metrics that could leak information when running tdx. +use rbuilder_utils::build_info::Version; use std::net::SocketAddr; use time::OffsetDateTime; use warp::{Filter, Rejection, Reply}; -use crate::{ - telemetry::{ - metrics::{gather_prometheus_metrics, set_version}, - BUILDER_BALANCE, CURRENT_BLOCK, MAX_FRESH_GAUGE_AGE, ORDERPOOL_BUNDLES, ORDERPOOL_TXS, - ORDERPOOL_TXS_SIZE, REGISTRY, - }, - utils::build_info::Version, +use crate::telemetry::{ + metrics::{gather_prometheus_metrics, set_version}, + BUILDER_BALANCE, CURRENT_BLOCK, MAX_FRESH_GAUGE_AGE, ORDERPOOL_BUNDLES, ORDERPOOL_TXS, + ORDERPOOL_TXS_SIZE, REGISTRY, }; pub async fn spawn(addr: SocketAddr, version: Version) -> eyre::Result<()> { diff --git a/crates/rbuilder/src/utils/build_info.rs b/crates/rbuilder/src/utils/build_info.rs index dee593f3f..58dd2419d 100644 --- a/crates/rbuilder/src/utils/build_info.rs +++ b/crates/rbuilder/src/utils/build_info.rs @@ -1,57 +1,2 @@ -//! Functions to get git information from the current build. -//! Everything is based on the data generated by crates/rbuilder/build.rs (included as a [build-dependencies] con cargo.toml) and left on -//! a file called built.rs on the output dir. -mod internal { - include!(concat!(env!("OUT_DIR"), "/built.rs")); -} - -use internal::{ - BUILT_TIME_UTC, FEATURES, GIT_COMMIT_HASH_SHORT, GIT_DIRTY, GIT_HEAD_REF, GIT_VERSION, PROFILE, - RUSTC_VERSION, -}; - -pub fn print_version_info() { - println!("version: {}", GIT_VERSION.unwrap_or_default()); - println!("commit: {}", GIT_COMMIT_HASH_SHORT.unwrap_or_default()); - println!("dirty: {}", GIT_DIRTY.unwrap_or_default()); - println!("branch: {}", GIT_HEAD_REF.unwrap_or_default()); - println!("build_time: {BUILT_TIME_UTC}"); - println!("rustc: {RUSTC_VERSION}"); - println!("features: {FEATURES:?}"); - println!("profile: {PROFILE}"); -} - -#[derive(Debug)] -pub struct Version { - /// 8 digits commit. if modified "-dirty" is appended - pub git_commit: String, - /// Git ref if available (eg:"refs/heads/more-comments") - pub git_ref: String, - pub build_time_utc: String, -} - -pub fn rbuilder_version() -> Version { - let git_commit = { - let mut commit = String::new(); - if let Some(hash) = GIT_COMMIT_HASH_SHORT { - commit.push_str(hash); - } - if let Some(dirty) = GIT_DIRTY { - if dirty { - commit.push_str("-dirty"); - } - } - if commit.is_empty() { - commit.push_str("unknown"); - } - commit - }; - - let git_ref = GIT_HEAD_REF.unwrap_or("unknown").to_string(); - - Version { - git_commit, - git_ref, - build_time_utc: BUILT_TIME_UTC.to_string(), - } -} +use rbuilder_utils::define_version_module; +define_version_module!(rbuilder_version);