diff --git a/substrate/Cargo.lock b/substrate/Cargo.lock index d9436c4303..b801da2643 100644 --- a/substrate/Cargo.lock +++ b/substrate/Cargo.lock @@ -8906,7 +8906,7 @@ dependencies = [ [[package]] name = "substrate-wasm-builder" -version = "2.0.0" +version = "2.0.1" dependencies = [ "ansi_term 0.12.1", "atty", diff --git a/substrate/bin/node-template/runtime/build.rs b/substrate/bin/node-template/runtime/build.rs index 52705043a2..9654139121 100644 --- a/substrate/bin/node-template/runtime/build.rs +++ b/substrate/bin/node-template/runtime/build.rs @@ -3,7 +3,7 @@ use wasm_builder_runner::WasmBuilder; fn main() { WasmBuilder::new() .with_current_project() - .with_wasm_builder_from_crates("2.0.0") + .with_wasm_builder_from_crates("2.0.1") .export_heap_base() .import_memory() .build() diff --git a/substrate/bin/node/runtime/build.rs b/substrate/bin/node/runtime/build.rs index a2f09a460e..4f111bc993 100644 --- a/substrate/bin/node/runtime/build.rs +++ b/substrate/bin/node/runtime/build.rs @@ -20,7 +20,7 @@ use wasm_builder_runner::WasmBuilder; fn main() { WasmBuilder::new() .with_current_project() - .with_wasm_builder_from_crates_or_path("2.0.0", "../../../utils/wasm-builder") + .with_wasm_builder_from_crates_or_path("2.0.1", "../../../utils/wasm-builder") .export_heap_base() .import_memory() .build() diff --git a/substrate/client/executor/runtime-test/build.rs b/substrate/client/executor/runtime-test/build.rs index cf4fca01ac..bc07db900c 100644 --- a/substrate/client/executor/runtime-test/build.rs +++ b/substrate/client/executor/runtime-test/build.rs @@ -20,7 +20,7 @@ fn main() { // regular build WasmBuilder::new() .with_current_project() - .with_wasm_builder_from_crates_or_path("2.0.0", "../../../utils/wasm-builder") + .with_wasm_builder_from_crates_or_path("2.0.1", "../../../utils/wasm-builder") .export_heap_base() .import_memory() .build(); @@ -28,7 +28,7 @@ fn main() { // and building with tracing activated WasmBuilder::new() .with_current_project() - .with_wasm_builder_from_crates_or_path("2.0.0", "../../../utils/wasm-builder") + .with_wasm_builder_from_crates_or_path("2.0.1", "../../../utils/wasm-builder") .export_heap_base() .import_memory() .set_file_name("wasm_binary_with_tracing.rs") diff --git a/substrate/primitives/runtime-interface/test-wasm-deprecated/build.rs b/substrate/primitives/runtime-interface/test-wasm-deprecated/build.rs index a2f09a460e..4f111bc993 100644 --- a/substrate/primitives/runtime-interface/test-wasm-deprecated/build.rs +++ b/substrate/primitives/runtime-interface/test-wasm-deprecated/build.rs @@ -20,7 +20,7 @@ use wasm_builder_runner::WasmBuilder; fn main() { WasmBuilder::new() .with_current_project() - .with_wasm_builder_from_crates_or_path("2.0.0", "../../../utils/wasm-builder") + .with_wasm_builder_from_crates_or_path("2.0.1", "../../../utils/wasm-builder") .export_heap_base() .import_memory() .build() diff --git a/substrate/primitives/runtime-interface/test-wasm/build.rs b/substrate/primitives/runtime-interface/test-wasm/build.rs index a2f09a460e..4f111bc993 100644 --- a/substrate/primitives/runtime-interface/test-wasm/build.rs +++ b/substrate/primitives/runtime-interface/test-wasm/build.rs @@ -20,7 +20,7 @@ use wasm_builder_runner::WasmBuilder; fn main() { WasmBuilder::new() .with_current_project() - .with_wasm_builder_from_crates_or_path("2.0.0", "../../../utils/wasm-builder") + .with_wasm_builder_from_crates_or_path("2.0.1", "../../../utils/wasm-builder") .export_heap_base() .import_memory() .build() diff --git a/substrate/test-utils/runtime/build.rs b/substrate/test-utils/runtime/build.rs index 6082738de4..834551a7ba 100644 --- a/substrate/test-utils/runtime/build.rs +++ b/substrate/test-utils/runtime/build.rs @@ -20,7 +20,7 @@ use wasm_builder_runner::WasmBuilder; fn main() { WasmBuilder::new() .with_current_project() - .with_wasm_builder_from_crates_or_path("2.0.0", "../../utils/wasm-builder") + .with_wasm_builder_from_crates_or_path("2.0.1", "../../utils/wasm-builder") .export_heap_base() // Note that we set the stack-size to 1MB explicitly even though it is set // to this value by default. This is because some of our tests (`restoration_of_globals`) diff --git a/substrate/utils/wasm-builder/Cargo.toml b/substrate/utils/wasm-builder/Cargo.toml index de0f11e846..e9dd1a97b8 100644 --- a/substrate/utils/wasm-builder/Cargo.toml +++ b/substrate/utils/wasm-builder/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "substrate-wasm-builder" -version = "2.0.0" +version = "2.0.1" authors = ["Parity Technologies "] description = "Utility for building WASM binaries" edition = "2018" diff --git a/substrate/utils/wasm-builder/src/lib.rs b/substrate/utils/wasm-builder/src/lib.rs index bb50729f71..a3e80d3561 100644 --- a/substrate/utils/wasm-builder/src/lib.rs +++ b/substrate/utils/wasm-builder/src/lib.rs @@ -181,16 +181,16 @@ pub fn build_project_with_default_rustflags( }; write_file_if_changed( - file_name.into(), - format!( - r#" - pub const WASM_BINARY: Option<&[u8]> = Some(include_bytes!("{wasm_binary}")); - pub const WASM_BINARY_BLOATY: Option<&[u8]> = Some(include_bytes!("{wasm_binary_bloaty}")); - "#, - wasm_binary = wasm_binary, - wasm_binary_bloaty = wasm_binary_bloaty, - ), - ); + file_name.into(), + format!( + r#" + pub const WASM_BINARY: Option<&[u8]> = Some(include_bytes!("{wasm_binary}")); + pub const WASM_BINARY_BLOATY: Option<&[u8]> = Some(include_bytes!("{wasm_binary_bloaty}")); + "#, + wasm_binary = wasm_binary, + wasm_binary_bloaty = wasm_binary_bloaty, + ), + ); } /// Checks if the build of the WASM binary should be skipped. diff --git a/substrate/utils/wasm-builder/src/wasm_project.rs b/substrate/utils/wasm-builder/src/wasm_project.rs index 1d4a4484cf..860265febe 100644 --- a/substrate/utils/wasm-builder/src/wasm_project.rs +++ b/substrate/utils/wasm-builder/src/wasm_project.rs @@ -84,6 +84,28 @@ impl Drop for WorkspaceLock { } } +fn crate_metadata(cargo_manifest: &Path) -> Metadata { + let mut cargo_lock = cargo_manifest.to_path_buf(); + cargo_lock.set_file_name("Cargo.lock"); + + let cargo_lock_existed = cargo_lock.exists(); + + let crate_metadata = MetadataCommand::new() + .manifest_path(cargo_manifest) + .exec() + .expect("`cargo metadata` can not fail on project `Cargo.toml`; qed"); + + // If the `Cargo.lock` didn't exist, we need to remove it after + // calling `cargo metadata`. This is required to ensure that we don't change + // the build directory outside of the `target` folder. Commands like + // `cargo publish` require this. + if !cargo_lock_existed { + let _ = fs::remove_file(&cargo_lock); + } + + crate_metadata +} + /// Creates the WASM project, compiles the WASM binary and compacts the WASM binary. /// /// # Returns @@ -98,10 +120,7 @@ pub fn create_and_compile( // Lock the workspace exclusively for us let _lock = WorkspaceLock::new(&wasm_workspace_root); - let crate_metadata = MetadataCommand::new() - .manifest_path(cargo_manifest) - .exec() - .expect("`cargo metadata` can not fail on project `Cargo.toml`; qed"); + let crate_metadata = crate_metadata(cargo_manifest); let project = create_project(cargo_manifest, &wasm_workspace, &crate_metadata); create_wasm_workspace_project(&wasm_workspace, &crate_metadata.workspace_root);