From 5ef0597e7916af48a1f6634a5e8625b52645aff4 Mon Sep 17 00:00:00 2001 From: Ashley Date: Tue, 10 Mar 2020 14:29:28 +0100 Subject: [PATCH] Fix the browser light client (#892) * Fix browser node * Use feature instead --- polkadot/cli/Cargo.toml | 6 ++++++ polkadot/cli/src/browser.rs | 2 +- polkadot/service/Cargo.toml | 9 +++++---- polkadot/service/src/lib.rs | 8 ++++++-- 4 files changed, 18 insertions(+), 7 deletions(-) diff --git a/polkadot/cli/Cargo.toml b/polkadot/cli/Cargo.toml index d802e6f9a9..1af27fb24d 100644 --- a/polkadot/cli/Cargo.toml +++ b/polkadot/cli/Cargo.toml @@ -5,6 +5,11 @@ authors = ["Parity Technologies "] description = "Polkadot node implementation in Rust." edition = "2018" +[package.metadata.wasm-pack.profile.release] +# `wasm-opt` has some problems on linux, see +# https://github.com/rustwasm/wasm-pack/issues/781 etc. +wasm-opt = false + [lib] crate-type = ["cdylib", "rlib"] @@ -35,6 +40,7 @@ rocksdb = [ "service/rocksdb" ] cli = [ "tokio", "sc-cli", + "service/full-node", ] browser = [ "wasm-bindgen", diff --git a/polkadot/cli/src/browser.rs b/polkadot/cli/src/browser.rs index 0564bb9eda..5434b099da 100644 --- a/polkadot/cli/src/browser.rs +++ b/polkadot/cli/src/browser.rs @@ -57,7 +57,7 @@ async fn start_inner(chain_spec: String, wasm_ext: browser_utils::Transport) -> info!("Roles: {:?}", config.roles); // Create the service. This is the most heavy initialization step. - let service = service::kusama_new_light(config, None).map_err(|e| format!("{:?}", e))?; + let service = service::kusama_new_light(config).map_err(|e| format!("{:?}", e))?; Ok(browser_utils::start_client(service)) } diff --git a/polkadot/service/Cargo.toml b/polkadot/service/Cargo.toml index 4d7646e2b8..529f9d6615 100644 --- a/polkadot/service/Cargo.toml +++ b/polkadot/service/Cargo.toml @@ -12,12 +12,12 @@ log = "0.4.8" futures = "0.3.4" slog = "2.5.2" hex-literal = "0.2.1" -av_store = { package = "polkadot-availability-store", path = "../availability-store" } -consensus = { package = "polkadot-validation", path = "../validation" } +av_store = { package = "polkadot-availability-store", path = "../availability-store", optional = true } +consensus = { package = "polkadot-validation", path = "../validation", optional = true } polkadot-primitives = { path = "../primitives" } polkadot-runtime = { path = "../runtime/polkadot" } kusama-runtime = { path = "../runtime/kusama" } -polkadot-network = { path = "../network" } +polkadot-network = { path = "../network", optional = true } polkadot-rpc = { path = "../rpc" } sp-io = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } sp-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } @@ -55,5 +55,6 @@ sp-offchain = { package = "sp-offchain", git = "https://github.com/paritytech/su prometheus-endpoint = { package = "substrate-prometheus-endpoint", git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } [features] -default = ["rocksdb"] +default = ["rocksdb", "full-node"] rocksdb = ["service/rocksdb"] +full-node = ["av_store", "consensus", "polkadot-network"] diff --git a/polkadot/service/src/lib.rs b/polkadot/service/src/lib.rs index 07c50339d9..5c715d4573 100644 --- a/polkadot/service/src/lib.rs +++ b/polkadot/service/src/lib.rs @@ -22,8 +22,8 @@ use sc_client::LongestChain; use std::sync::Arc; use std::time::Duration; use polkadot_primitives::{parachain, Hash, BlockId, AccountId, Nonce, Balance}; -use polkadot_network::legacy::gossip::Known; -use polkadot_network::protocol as network_protocol; +#[cfg(feature = "full-node")] +use polkadot_network::{legacy::gossip::Known, protocol as network_protocol}; use service::{error::{Error as ServiceError}, ServiceBuilder}; use grandpa::{self, FinalityProofProvider as GrandpaFinalityProofProvider}; use inherents::InherentDataProviders; @@ -206,6 +206,7 @@ where } /// Create a new Polkadot service for a full node. +#[cfg(feature = "full-node")] pub fn polkadot_new_full( config: Configuration, collating_for: Option<(CollatorId, parachain::Id)>, @@ -228,6 +229,7 @@ pub fn polkadot_new_full( } /// Create a new Kusama service for a full node. +#[cfg(feature = "full-node")] pub fn kusama_new_full( config: Configuration, collating_for: Option<(CollatorId, parachain::Id)>, @@ -251,12 +253,14 @@ pub fn kusama_new_full( /// Handles to other sub-services that full nodes instantiate, which consumers /// of the node may use. +#[cfg(feature = "full-node")] pub struct FullNodeHandles { /// A handle to the Polkadot networking protocol. pub polkadot_network: Option, } /// Builds a new service for a full client. +#[cfg(feature = "full-node")] pub fn new_full( mut config: Configuration, collating_for: Option<(CollatorId, parachain::Id)>,