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