diff --git a/.maintain/gitlab/check_polkadot_companion_build.sh b/.maintain/gitlab/check_polkadot_companion_build.sh index 281fa8e1e8d46..26ee73ef71f83 100755 --- a/.maintain/gitlab/check_polkadot_companion_build.sh +++ b/.maintain/gitlab/check_polkadot_companion_build.sh @@ -111,9 +111,5 @@ echo "paths = [ \"$SUBSTRATE_PATH\" ]" > .cargo/config mkdir -p target/debug/wbuild/.cargo cp .cargo/config target/debug/wbuild/.cargo/config -# package, others are updated along the way. -cargo update - # Test Polkadot pr or master branch with this Substrate commit. time cargo test --all --release --verbose - diff --git a/bin/node-template/node/src/command.rs b/bin/node-template/node/src/command.rs index 4f2fd3aad6fd3..f05ca3f8b9b2c 100644 --- a/bin/node-template/node/src/command.rs +++ b/bin/node-template/node/src/command.rs @@ -21,34 +21,30 @@ use crate::service; use sc_cli::{SubstrateCli, RuntimeVersion, Role, ChainSpec}; impl SubstrateCli for Cli { - fn impl_name() -> &'static str { - "Substrate Node" + fn impl_name() -> String { + "Substrate Node".into() } - fn impl_version() -> &'static str { - env!("SUBSTRATE_CLI_IMPL_VERSION") + fn impl_version() -> String { + env!("SUBSTRATE_CLI_IMPL_VERSION").into() } - fn description() -> &'static str { - env!("CARGO_PKG_DESCRIPTION") + fn description() -> String { + env!("CARGO_PKG_DESCRIPTION").into() } - fn author() -> &'static str { - env!("CARGO_PKG_AUTHORS") + fn author() -> String { + env!("CARGO_PKG_AUTHORS").into() } - fn support_url() -> &'static str { - "support.anonymous.an" + fn support_url() -> String { + "support.anonymous.an".into() } fn copyright_start_year() -> i32 { 2017 } - fn executable_name() -> &'static str { - env!("CARGO_PKG_NAME") - } - fn load_spec(&self, id: &str) -> Result, String> { Ok(match id { "dev" => Box::new(chain_spec::development_config()), diff --git a/bin/node/cli/src/command.rs b/bin/node/cli/src/command.rs index b07e0cdc907e0..8da018776c718 100644 --- a/bin/node/cli/src/command.rs +++ b/bin/node/cli/src/command.rs @@ -22,34 +22,30 @@ use node_runtime::{Block, RuntimeApi}; use sc_cli::{Result, SubstrateCli, RuntimeVersion, Role, ChainSpec}; impl SubstrateCli for Cli { - fn impl_name() -> &'static str { - "Substrate Node" + fn impl_name() -> String { + "Substrate Node".into() } - fn impl_version() -> &'static str { - env!("SUBSTRATE_CLI_IMPL_VERSION") + fn impl_version() -> String { + env!("SUBSTRATE_CLI_IMPL_VERSION").into() } - fn description() -> &'static str { - env!("CARGO_PKG_DESCRIPTION") + fn description() -> String { + env!("CARGO_PKG_DESCRIPTION").into() } - fn author() -> &'static str { - env!("CARGO_PKG_AUTHORS") + fn author() -> String { + env!("CARGO_PKG_AUTHORS").into() } - fn support_url() -> &'static str { - "https://github.com/paritytech/substrate/issues/new" + fn support_url() -> String { + "https://github.com/paritytech/substrate/issues/new".into() } fn copyright_start_year() -> i32 { 2017 } - fn executable_name() -> &'static str { - "substrate" - } - fn load_spec(&self, id: &str) -> std::result::Result, String> { Ok(match id { "dev" => Box::new(chain_spec::development_config()), diff --git a/client/cli/src/config.rs b/client/cli/src/config.rs index 5563f46115bfd..fa3f09116c314 100644 --- a/client/cli/src/config.rs +++ b/client/cli/src/config.rs @@ -413,7 +413,7 @@ pub trait CliConfiguration: Sized { let chain_spec = cli.load_spec(chain_id.as_str())?; let base_path = self .base_path()? - .unwrap_or_else(|| BasePath::from_project("", "", C::executable_name())); + .unwrap_or_else(|| BasePath::from_project("", "", &C::executable_name())); let config_dir = base_path .path() .to_path_buf() @@ -498,7 +498,7 @@ pub trait CliConfiguration: Sized { fn init(&self) -> Result<()> { let logger_pattern = self.log_filters()?; - sp_panic_handler::set(C::support_url(), C::impl_version()); + sp_panic_handler::set(&C::support_url(), &C::impl_version()); fdlimit::raise_fd_limit(); init_logger(&logger_pattern); diff --git a/client/cli/src/lib.rs b/client/cli/src/lib.rs index a702edba65784..c7f48d2721468 100644 --- a/client/cli/src/lib.rs +++ b/client/cli/src/lib.rs @@ -57,25 +57,33 @@ use structopt::{ /// its own implementation that will fill the necessary field based on the trait's functions. pub trait SubstrateCli: Sized { /// Implementation name. - fn impl_name() -> &'static str; + fn impl_name() -> String; /// Implementation version. /// /// By default this will look like this: 2.0.0-b950f731c-x86_64-linux-gnu where the hash is the /// short commit hash of the commit of in the Git repository. - fn impl_version() -> &'static str; + fn impl_version() -> String; /// Executable file name. - fn executable_name() -> &'static str; + /// + /// Extracts the file name from `std::env::current_exe()`. + /// Resorts to the env var `CARGO_PKG_NAME` in case of Error. + fn executable_name() -> String { + std::env::current_exe().ok() + .and_then(|e| e.file_name().map(|s| s.to_os_string())) + .and_then(|w| w.into_string().ok()) + .unwrap_or_else(|| env!("CARGO_PKG_NAME").into()) + } /// Executable file description. - fn description() -> &'static str; + fn description() -> String; /// Executable file author. - fn author() -> &'static str; + fn author() -> String; /// Support URL. - fn support_url() -> &'static str; + fn support_url() -> String; /// Copyright starting year (x-current year) fn copyright_start_year() -> i32; @@ -116,13 +124,16 @@ pub trait SubstrateCli: Sized { { let app = ::clap(); - let mut full_version = Self::impl_version().to_string(); + let mut full_version = Self::impl_version(); full_version.push_str("\n"); + let name = Self::executable_name(); + let author = Self::author(); + let about = Self::description(); let app = app - .name(Self::executable_name()) - .author(Self::author()) - .about(Self::description()) + .name(name) + .author(author.as_str()) + .about(about.as_str()) .version(full_version.as_str()) .settings(&[ AppSettings::GlobalVersion, @@ -175,13 +186,16 @@ pub trait SubstrateCli: Sized { { let app = ::clap(); - let mut full_version = Self::impl_version().to_string(); + let mut full_version = Self::impl_version(); full_version.push_str("\n"); + let name = Self::executable_name(); + let author = Self::author(); + let about = Self::description(); let app = app - .name(Self::executable_name()) - .author(Self::author()) - .about(Self::description()) + .name(name) + .author(author.as_str()) + .about(about.as_str()) .version(full_version.as_str()); let matches = app.get_matches_from_safe(iter)?; diff --git a/client/service/src/builder.rs b/client/service/src/builder.rs index 234356856b313..e64ab3e7b3372 100644 --- a/client/service/src/builder.rs +++ b/client/service/src/builder.rs @@ -1247,8 +1247,8 @@ fn build_telemetry( let is_authority = config.role.is_authority(); let network_id = network.local_peer_id().to_base58(); let name = config.network.node_name.clone(); - let impl_name = config.impl_name.to_owned(); - let version = config.impl_version; + let impl_name = config.impl_name.clone(); + let impl_version = config.impl_version.clone(); let chain_name = config.chain_spec.name().to_owned(); let telemetry = sc_telemetry::init_telemetry(sc_telemetry::TelemetryConfig { endpoints, @@ -1265,7 +1265,7 @@ fn build_telemetry( telemetry!(SUBSTRATE_INFO; "system.connected"; "name" => name.clone(), "implementation" => impl_name.clone(), - "version" => version, + "version" => impl_version.clone(), "config" => "", "chain" => chain_name.clone(), "genesis_hash" => ?genesis_hash, @@ -1314,8 +1314,8 @@ fn gen_handler( let system_info = sc_rpc::system::SystemInfo { chain_name: config.chain_spec.name().into(), - impl_name: config.impl_name.into(), - impl_version: config.impl_version.into(), + impl_name: config.impl_name.clone(), + impl_version: config.impl_version.clone(), properties: config.chain_spec.properties(), chain_type: config.chain_spec.chain_type(), }; diff --git a/client/service/src/config.rs b/client/service/src/config.rs index 5015ce7facc6f..f3080005a6cf3 100644 --- a/client/service/src/config.rs +++ b/client/service/src/config.rs @@ -37,9 +37,9 @@ use tempfile::TempDir; #[derive(Debug)] pub struct Configuration { /// Implementation name - pub impl_name: &'static str, + pub impl_name: String, /// Implementation version (see sc-cli to see an example of format) - pub impl_version: &'static str, + pub impl_version: String, /// Node role. pub role: Role, /// How to spawn background tasks. Mandatory, otherwise creating a `Service` will error. diff --git a/client/service/test/src/lib.rs b/client/service/test/src/lib.rs index 5a676e5263c8a..ac95dd11e8b27 100644 --- a/client/service/test/src/lib.rs +++ b/client/service/test/src/lib.rs @@ -229,8 +229,8 @@ fn node_config"); let line = location.as_ref().map(|l| l.line()).unwrap_or(0); diff --git a/utils/browser/src/lib.rs b/utils/browser/src/lib.rs index c8034d9466fe7..9313d41bf5726 100644 --- a/utils/browser/src/lib.rs +++ b/utils/browser/src/lib.rs @@ -79,8 +79,8 @@ where disable_grandpa: Default::default(), execution_strategies: Default::default(), force_authoring: Default::default(), - impl_name: "parity-substrate", - impl_version: "0.0.0", + impl_name: String::from("parity-substrate"), + impl_version: String::from("0.0.0"), offchain_worker: Default::default(), prometheus_config: Default::default(), pruning: Default::default(),