diff --git a/substrate/Cargo.lock b/substrate/Cargo.lock index 997411e68d..96dbf5c3de 100644 --- a/substrate/Cargo.lock +++ b/substrate/Cargo.lock @@ -2326,7 +2326,7 @@ dependencies = [ "substrate-keyring 2.0.0", "substrate-offchain-primitives 2.0.0", "substrate-primitives 2.0.0", - "substrate-wasm-builder-runner 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-wasm-builder-runner 1.0.1", ] [[package]] @@ -2380,7 +2380,7 @@ dependencies = [ "substrate-consensus-aura-primitives 2.0.0", "substrate-offchain-primitives 2.0.0", "substrate-primitives 2.0.0", - "substrate-wasm-builder-runner 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-wasm-builder-runner 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -4609,7 +4609,7 @@ dependencies = [ "sr-sandbox 2.0.0", "sr-std 2.0.0", "substrate-primitives 2.0.0", - "substrate-wasm-builder-runner 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-wasm-builder-runner 1.0.1", ] [[package]] @@ -4765,7 +4765,7 @@ dependencies = [ "substrate-primitives 2.0.0", "substrate-test-runtime-client 2.0.0", "substrate-trie 2.0.0", - "substrate-wasm-builder-runner 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "substrate-wasm-builder-runner 1.0.1", "trie-db 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -4833,7 +4833,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" -version = "1.0.1" +version = "1.0.2" dependencies = [ "build-helper 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "cargo_metadata 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -4845,11 +4845,11 @@ dependencies = [ [[package]] name = "substrate-wasm-builder-runner" -version = "1.0.0" +version = "1.0.1" [[package]] name = "substrate-wasm-builder-runner" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -6171,7 +6171,7 @@ dependencies = [ "checksum strum 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1810e25f576e7ffce1ff5243b37066da5ded0310b3274c20baaeccb1145b2806" "checksum strum_macros 0.14.0 (registry+https://github.com/rust-lang/crates.io-index)" = "572a2f4e53dd4c3483fd79e5cc10ddd773a3acb1169bbfe8762365e107110579" "checksum substrate-bip39 0.2.1 (git+https://github.com/paritytech/substrate-bip39)" = "" -"checksum substrate-wasm-builder-runner 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3533b62b476e5058947b9509038f9d5a72f7363a54a088821329fa76b990a485" +"checksum substrate-wasm-builder-runner 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "131fa5f29b2a2e459f226411e4718ecda62e360123b7cfd76ae6a7da5bcaeb0d" "checksum subtle 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" "checksum subtle 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "01dca13cf6c3b179864ab3292bd794e757618d35a7766b7c46050c614ba00829" "checksum syn 0.15.39 (registry+https://github.com/rust-lang/crates.io-index)" = "b4d960b829a55e56db167e861ddb43602c003c7be0bee1d345021703fac2fb7c" diff --git a/substrate/core/executor/runtime-test/Cargo.toml b/substrate/core/executor/runtime-test/Cargo.toml index 2315377485..4ad3446a91 100644 --- a/substrate/core/executor/runtime-test/Cargo.toml +++ b/substrate/core/executor/runtime-test/Cargo.toml @@ -12,7 +12,7 @@ sandbox = { package = "sr-sandbox", path = "../../sr-sandbox", default-features substrate-primitives = { path = "../../primitives", default-features = false } [build-dependencies] -wasm-builder-runner = { package = "substrate-wasm-builder-runner", version = "1.0.0" } +wasm-builder-runner = { package = "substrate-wasm-builder-runner", version = "1.0.1", path = "../../utils/wasm-builder-runner" } [features] default = [ "std" ] diff --git a/substrate/core/executor/runtime-test/build.rs b/substrate/core/executor/runtime-test/build.rs index b4c99eb6b7..67fc90b044 100644 --- a/substrate/core/executor/runtime-test/build.rs +++ b/substrate/core/executor/runtime-test/build.rs @@ -17,5 +17,11 @@ use wasm_builder_runner::{build_current_project, WasmBuilderSource}; fn main() { - build_current_project("wasm_binary.rs", WasmBuilderSource::Crates("1.0.1")); + build_current_project( + "wasm_binary.rs", + WasmBuilderSource::CratesOrPath { + path: "../../utils/wasm-builder", + version: "1.0.2", + }, + ); } diff --git a/substrate/core/test-runtime/Cargo.toml b/substrate/core/test-runtime/Cargo.toml index be6361fa00..8e9fc85a8a 100644 --- a/substrate/core/test-runtime/Cargo.toml +++ b/substrate/core/test-runtime/Cargo.toml @@ -31,7 +31,7 @@ substrate-executor = { path = "../executor" } substrate-test-runtime-client = { path = "./client" } [build-dependencies] -wasm-builder-runner = { package = "substrate-wasm-builder-runner", version = "1.0.0" } +wasm-builder-runner = { package = "substrate-wasm-builder-runner", version = "1.0.1", path = "../utils/wasm-builder-runner" } [features] default = [ diff --git a/substrate/core/test-runtime/build.rs b/substrate/core/test-runtime/build.rs index b4c99eb6b7..d755768ee8 100644 --- a/substrate/core/test-runtime/build.rs +++ b/substrate/core/test-runtime/build.rs @@ -17,5 +17,11 @@ use wasm_builder_runner::{build_current_project, WasmBuilderSource}; fn main() { - build_current_project("wasm_binary.rs", WasmBuilderSource::Crates("1.0.1")); + build_current_project( + "wasm_binary.rs", + WasmBuilderSource::CratesOrPath { + path: "../utils/wasm-builder", + version: "1.0.2", + }, + ); } diff --git a/substrate/core/utils/wasm-builder-runner/Cargo.toml b/substrate/core/utils/wasm-builder-runner/Cargo.toml index 4122ca79eb..da21baf1d9 100644 --- a/substrate/core/utils/wasm-builder-runner/Cargo.toml +++ b/substrate/core/utils/wasm-builder-runner/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "substrate-wasm-builder-runner" -version = "1.0.0" +version = "1.0.1" authors = ["Parity Technologies "] description = "Runner for substrate-wasm-builder" edition = "2018" diff --git a/substrate/core/utils/wasm-builder-runner/src/lib.rs b/substrate/core/utils/wasm-builder-runner/src/lib.rs index 0b1fb37896..4d77bde4d6 100644 --- a/substrate/core/utils/wasm-builder-runner/src/lib.rs +++ b/substrate/core/utils/wasm-builder-runner/src/lib.rs @@ -25,7 +25,7 @@ //! //! For more information see -use std::{env, process::Command, fs, path::{PathBuf, Path}}; +use std::{env, process::{Command, self}, fs, path::{PathBuf, Path}}; /// Environment variable that tells us to skip building the WASM binary. const SKIP_BUILD_ENV: &str = "SKIP_WASM_BUILD"; @@ -56,8 +56,13 @@ pub enum WasmBuilderSource { repo: &'static str, rev: &'static str, }, - /// Use the given version released on crates.io + /// Use the given version released on crates.io. Crates(&'static str), + /// Use the given version released on crates.io or from the given path. + CratesOrPath { + version: &'static str, + path: &'static str, + } } impl WasmBuilderSource { @@ -75,6 +80,15 @@ impl WasmBuilderSource { WasmBuilderSource::Crates(version) => { format!("version = \"{}\"", version) } + WasmBuilderSource::CratesOrPath { version, path } => { + replace_back_slashes( + format!( + "path = \"{}\", version = \"{}\"", + manifest_dir.join(path).display(), + version + ) + ) + } } } } @@ -87,9 +101,9 @@ impl WasmBuilderSource { /// constant `WASM_BINARY` which contains the build wasm binary. /// `wasm_builder_path` - Path to the wasm-builder project, relative to `CARGO_MANIFEST_DIR`. pub fn build_current_project(file_name: &str, wasm_builder_source: WasmBuilderSource) { - generate_rerun_if_changed_instructions(); - if check_skip_build() { + // If we skip the build, we still want to make sure to be called when an env variable changes + generate_rerun_if_changed_instructions(); return; } @@ -110,6 +124,10 @@ pub fn build_current_project(file_name: &str, wasm_builder_source: WasmBuilderSo create_project(&project_folder, &file_path, &manifest_dir, wasm_builder_source, &cargo_toml_path); run_project(&project_folder); } + + // As last step we need to generate our `rerun-if-changed` stuff. If a build fails, we don't + // want to spam the output! + generate_rerun_if_changed_instructions(); } fn create_project( @@ -164,7 +182,8 @@ fn run_project(project_folder: &Path) { } if !cmd.status().map(|s| s.success()).unwrap_or(false) { - panic!("Running WASM build runner failed!"); + // Don't spam the output with backtraces when a build failed! + process::exit(1); } } diff --git a/substrate/core/utils/wasm-builder/Cargo.toml b/substrate/core/utils/wasm-builder/Cargo.toml index 9a51d86eeb..7290e99279 100644 --- a/substrate/core/utils/wasm-builder/Cargo.toml +++ b/substrate/core/utils/wasm-builder/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "substrate-wasm-builder" -version = "1.0.1" +version = "1.0.2" authors = ["Parity Technologies "] description = "Utility for building WASM binaries" edition = "2018" diff --git a/substrate/core/utils/wasm-builder/src/lib.rs b/substrate/core/utils/wasm-builder/src/lib.rs index eb71f0e386..31377b450f 100644 --- a/substrate/core/utils/wasm-builder/src/lib.rs +++ b/substrate/core/utils/wasm-builder/src/lib.rs @@ -78,7 +78,7 @@ //! - wasm-gc //! -use std::{env, fs, path::PathBuf, process::Command}; +use std::{env, fs, path::PathBuf, process::{Command, Stdio}}; mod prerequisites; mod wasm_project; @@ -156,8 +156,12 @@ fn create_out_file(file_name: &str, content: String) { /// Get a cargo command that compiles with nightly fn get_nightly_cargo() -> Command { - if Command::new("rustup").args(&["run", "nightly", "cargo"]) - .status().map(|s| s.success()).unwrap_or(false) + if Command::new("rustup") + .args(&["run", "nightly", "cargo"]) + .stdout(Stdio::null()) + .stderr(Stdio::null()) + .status() + .map(|s| s.success()).unwrap_or(false) { let mut cmd = Command::new("rustup"); cmd.args(&["run", "nightly", "cargo"]); diff --git a/substrate/core/utils/wasm-builder/src/prerequisites.rs b/substrate/core/utils/wasm-builder/src/prerequisites.rs index 965b45a701..d4b781495d 100644 --- a/substrate/core/utils/wasm-builder/src/prerequisites.rs +++ b/substrate/core/utils/wasm-builder/src/prerequisites.rs @@ -27,7 +27,12 @@ pub fn check() -> Option<&'static str> { return Some("Rust nightly not installed, please install it!") } - if Command::new("wasm-gc").stdout(Stdio::null()).status().map(|s| !s.success()).unwrap_or(true) { + if Command::new("wasm-gc") + .stdout(Stdio::null()) + .stderr(Stdio::null()) + .status() + .map(|s| !s.success()).unwrap_or(true) + { return Some("wasm-gc not installed, please install it!") } @@ -83,6 +88,8 @@ fn check_wasm_toolchain_installed() -> bool { let manifest_path = manifest_path.display().to_string(); crate::get_nightly_cargo() .args(&["build", "--target=wasm32-unknown-unknown", "--manifest-path", &manifest_path]) + .stdout(Stdio::null()) + .stderr(Stdio::null()) .status() .map(|s| s.success()) .unwrap_or(false) diff --git a/substrate/core/utils/wasm-builder/src/wasm_project.rs b/substrate/core/utils/wasm-builder/src/wasm_project.rs index 584b98a2a3..b460501e2e 100644 --- a/substrate/core/utils/wasm-builder/src/wasm_project.rs +++ b/substrate/core/utils/wasm-builder/src/wasm_project.rs @@ -14,7 +14,7 @@ // You should have received a copy of the GNU General Public License // along with Substrate. If not, see . -use std::{fs, path::{Path, PathBuf}, borrow::ToOwned, process::Command, env}; +use std::{fs, path::{Path, PathBuf}, borrow::ToOwned, process::{Command, self}, env}; use toml::value::Table; @@ -266,7 +266,8 @@ fn build_project(project: &Path) { match build_cmd.status().map(|s| s.success()) { Ok(true) => {}, - _ => panic!("Failed to compile WASM binary"), + // Use `process.exit(1)` to have a clean error output. + _ => process::exit(1), } } diff --git a/substrate/node-template/runtime/Cargo.toml b/substrate/node-template/runtime/Cargo.toml index 16c58a5c38..9102ec5eb2 100644 --- a/substrate/node-template/runtime/Cargo.toml +++ b/substrate/node-template/runtime/Cargo.toml @@ -26,7 +26,7 @@ consensus-aura = { package = "substrate-consensus-aura-primitives", path = "../. offchain-primitives = { package = "substrate-offchain-primitives", path = "../../core/offchain/primitives", default-features = false } [build-dependencies] -wasm-builder-runner = { package = "substrate-wasm-builder-runner", version = "1.0.0" } +wasm-builder-runner = { package = "substrate-wasm-builder-runner", version = "1.0.1" } [features] default = ["std"] diff --git a/substrate/node-template/runtime/build.rs b/substrate/node-template/runtime/build.rs index b4c99eb6b7..96f2158ca3 100644 --- a/substrate/node-template/runtime/build.rs +++ b/substrate/node-template/runtime/build.rs @@ -17,5 +17,5 @@ use wasm_builder_runner::{build_current_project, WasmBuilderSource}; fn main() { - build_current_project("wasm_binary.rs", WasmBuilderSource::Crates("1.0.1")); + build_current_project("wasm_binary.rs", WasmBuilderSource::Crates("1.0.2")); } diff --git a/substrate/node/runtime/Cargo.toml b/substrate/node/runtime/Cargo.toml index 885d86e96e..6d11463834 100644 --- a/substrate/node/runtime/Cargo.toml +++ b/substrate/node/runtime/Cargo.toml @@ -39,7 +39,7 @@ serde = { version = "1.0", optional = true } substrate-keyring = { path = "../../core/keyring", optional = true } [build-dependencies] -wasm-builder-runner = { package = "substrate-wasm-builder-runner", version = "1.0.0" } +wasm-builder-runner = { package = "substrate-wasm-builder-runner", version = "1.0.1", path = "../../core/utils/wasm-builder-runner" } [features] default = ["std"] diff --git a/substrate/node/runtime/build.rs b/substrate/node/runtime/build.rs index db62153ea1..611775cd6e 100644 --- a/substrate/node/runtime/build.rs +++ b/substrate/node/runtime/build.rs @@ -19,6 +19,9 @@ use wasm_builder_runner::{build_current_project, WasmBuilderSource}; fn main() { build_current_project( "wasm_binary.rs", - WasmBuilderSource::Crates("1.0.1"), + WasmBuilderSource::CratesOrPath { + path: "../../core/utils/wasm-builder", + version: "1.0.2", + }, ); }