mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-29 17:19:15 +08:00
feat: compile time optimization (#775)
This commit is contained in:
@ -7,12 +7,15 @@ rust-version = "1.65"
|
||||
readme = "README.md"
|
||||
license = "Apache-2.0"
|
||||
|
||||
[features]
|
||||
vergen = [ "router_env/vergen" ]
|
||||
|
||||
[dependencies]
|
||||
async-bb8-diesel = { git = "https://github.com/juspay/async-bb8-diesel", rev = "9a71d142726dbc33f41c1fd935ddaa79841c7be5" }
|
||||
bb8 = "0.8"
|
||||
clap = { version = "4.1.8", default-features = false, features = ["std", "derive", "help", "usage"] }
|
||||
config = { version = "0.13.3", features = ["toml"] }
|
||||
diesel = { version = "2.0.3", features = ["postgres", "serde_json", "time", "64-column-tables"] }
|
||||
diesel = { version = "2.0.3", features = ["postgres"] }
|
||||
error-stack = "0.3.1"
|
||||
once_cell = "1.17.1"
|
||||
serde = "1.0.155"
|
||||
@ -28,4 +31,4 @@ router_env = { version = "0.1.0", path = "../router_env", features = ["log_extra
|
||||
storage_models = { version = "0.1.0", path = "../storage_models", features = ["kv_store"] }
|
||||
|
||||
[build-dependencies]
|
||||
router_env = { version = "0.1.0", path = "../router_env", default-features = false, features = ["vergen"] }
|
||||
router_env = { version = "0.1.0", path = "../router_env", default-features = false }
|
||||
@ -1,3 +1,4 @@
|
||||
fn main() {
|
||||
#[cfg(feature = "vergen")]
|
||||
router_env::vergen::generate_cargo_instructions();
|
||||
}
|
||||
|
||||
@ -10,7 +10,7 @@ use serde::Deserialize;
|
||||
use crate::errors;
|
||||
|
||||
#[derive(clap::Parser, Default)]
|
||||
#[command(version = router_env::version!())]
|
||||
#[cfg_attr(feature = "vergen", command(version = router_env::version!()))]
|
||||
pub struct CmdLineConf {
|
||||
/// Config file.
|
||||
/// Application will look for "config/config.toml" if this option isn't specified.
|
||||
|
||||
@ -21,6 +21,7 @@ production = []
|
||||
kv_store = []
|
||||
accounts_cache = []
|
||||
openapi = ["olap", "oltp"]
|
||||
vergen = [ "router_env/vergen" ]
|
||||
|
||||
|
||||
[dependencies]
|
||||
@ -39,7 +40,7 @@ bytes = "1.4.0"
|
||||
clap = { version = "4.1.8", default-features = false, features = ["std", "derive", "help", "usage"] }
|
||||
config = { version = "0.13.3", features = ["toml"] }
|
||||
crc32fast = "1.3.2"
|
||||
diesel = { version = "2.0.3", features = ["postgres", "serde_json", "time", "64-column-tables"] }
|
||||
diesel = { version = "2.0.3", features = ["postgres"] }
|
||||
dyn-clone = "1.0.11"
|
||||
encoding_rs = "0.8.32"
|
||||
error-stack = "0.3.1"
|
||||
@ -89,7 +90,7 @@ router_env = { version = "0.1.0", path = "../router_env", features = ["log_extra
|
||||
storage_models = { version = "0.1.0", path = "../storage_models", features = ["kv_store"] }
|
||||
|
||||
[build-dependencies]
|
||||
router_env = { version = "0.1.0", path = "../router_env", default-features = false, features = ["vergen"] }
|
||||
router_env = { version = "0.1.0", path = "../router_env", default-features = false }
|
||||
|
||||
[dev-dependencies]
|
||||
actix-http = "3.3.1"
|
||||
|
||||
@ -4,5 +4,6 @@ fn main() {
|
||||
#[cfg(debug_assertions)]
|
||||
println!("cargo:rustc-env=RUST_MIN_STACK=4194304"); // 4 * 1024 * 1024 = 4 MiB
|
||||
|
||||
#[cfg(feature = "vergen")]
|
||||
router_env::vergen::generate_cargo_instructions();
|
||||
}
|
||||
|
||||
@ -16,7 +16,7 @@ use crate::{
|
||||
};
|
||||
|
||||
#[derive(clap::Parser, Default)]
|
||||
#[command(version = router_env::version!())]
|
||||
#[cfg_attr(feature = "vergen", command(version = router_env::version!()))]
|
||||
pub struct CmdLineConf {
|
||||
/// Config file.
|
||||
/// Application will look for "config/config.toml" if this option isn't specified.
|
||||
|
||||
@ -33,7 +33,7 @@ vergen = { version = "8.0.0-beta.9", optional = true, features = ["cargo", "git"
|
||||
tokio = { version = "1.26.0", features = ["macros", "rt-multi-thread"] }
|
||||
|
||||
[build-dependencies]
|
||||
vergen = { version = "8.0.0-beta.9", features = ["cargo", "git", "git2", "rustc"] }
|
||||
vergen = { version = "8.0.0-beta.9", features = ["cargo", "git", "git2", "rustc"], optional = true }
|
||||
|
||||
[features]
|
||||
default = ["actix_web"]
|
||||
|
||||
@ -91,6 +91,7 @@ pub fn workspace_path() -> PathBuf {
|
||||
/// - Timestamp of the latest git commit.
|
||||
///
|
||||
/// Example: `0.1.0-abcd012-2038-01-19T03:14:08Z`.
|
||||
#[cfg(feature = "vergen")]
|
||||
#[macro_export]
|
||||
macro_rules! version {
|
||||
() => {
|
||||
@ -117,6 +118,7 @@ macro_rules! version {
|
||||
/// Example: `0.1.0-f5f383e-2022-09-04T11:39:37Z-1.63.0-x86_64-unknown-linux-gnu`
|
||||
///
|
||||
|
||||
#[cfg(feature = "vergen")]
|
||||
#[macro_export]
|
||||
macro_rules! build {
|
||||
() => {
|
||||
@ -141,7 +143,7 @@ macro_rules! build {
|
||||
///
|
||||
/// Example: `f5f383ee7e36214d60ce3c6353b57db03ff0ceb1`.
|
||||
///
|
||||
|
||||
#[cfg(feature = "vergen")]
|
||||
#[macro_export]
|
||||
macro_rules! commit {
|
||||
() => {
|
||||
|
||||
@ -126,7 +126,9 @@ where
|
||||
hostname: String,
|
||||
env: String,
|
||||
service: String,
|
||||
#[cfg(feature = "vergen")]
|
||||
version: String,
|
||||
#[cfg(feature = "vergen")]
|
||||
build: String,
|
||||
default_fields: HashMap<String, Value>,
|
||||
}
|
||||
@ -159,7 +161,9 @@ where
|
||||
let pid = std::process::id();
|
||||
let hostname = gethostname::gethostname().to_string_lossy().into_owned();
|
||||
let service = service.to_string();
|
||||
#[cfg(feature = "vergen")]
|
||||
let version = crate::version!().to_string();
|
||||
#[cfg(feature = "vergen")]
|
||||
let build = crate::build!().to_string();
|
||||
let env = crate::env::which().to_string();
|
||||
|
||||
@ -169,7 +173,9 @@ where
|
||||
hostname,
|
||||
env,
|
||||
service,
|
||||
#[cfg(feature = "vergen")]
|
||||
version,
|
||||
#[cfg(feature = "vergen")]
|
||||
build,
|
||||
default_fields,
|
||||
}
|
||||
@ -195,7 +201,9 @@ where
|
||||
map_serializer.serialize_entry(HOSTNAME, &self.hostname)?;
|
||||
map_serializer.serialize_entry(PID, &self.pid)?;
|
||||
map_serializer.serialize_entry(ENV, &self.env)?;
|
||||
#[cfg(feature = "vergen")]
|
||||
map_serializer.serialize_entry(VERSION, &self.version)?;
|
||||
#[cfg(feature = "vergen")]
|
||||
map_serializer.serialize_entry(BUILD, &self.build)?;
|
||||
map_serializer.serialize_entry(LEVEL, &format!("{}", metadata.level()))?;
|
||||
map_serializer.serialize_entry(TARGET, metadata.target())?;
|
||||
|
||||
@ -6,6 +6,7 @@
|
||||
/// # Panics
|
||||
///
|
||||
/// Panics if `vergen` fails to generate `cargo` build instructions.
|
||||
#[cfg(feature = "vergen")]
|
||||
#[allow(clippy::expect_used)]
|
||||
pub fn generate_cargo_instructions() {
|
||||
use std::io::Write;
|
||||
@ -31,3 +32,6 @@ pub fn generate_cargo_instructions() {
|
||||
)
|
||||
.expect("Failed to set `CARGO_PROFILE` environment variable");
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "vergen"))]
|
||||
pub fn generate_cargo_instructions() {}
|
||||
|
||||
Reference in New Issue
Block a user