Skip to content

Commit

Permalink
Ignore wasm_gc for debug build. (paritytech#6962)
Browse files Browse the repository at this point in the history
* Ignore gc for debug build.

* alternate implementation

* Update utils/wasm-builder/src/lib.rs

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>

* fix

Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
  • Loading branch information
2 people authored and thadouk committed Sep 10, 2020
1 parent 8552d2f commit 4f6bcf0
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 20 deletions.
2 changes: 1 addition & 1 deletion docs/README.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -321,7 +321,7 @@ we support multiple environment variables:
* `TRIGGER_WASM_BUILD` - Can be set to trigger a WASM build. On subsequent calls the value of the variable
needs to change. As WASM builder instructs `cargo` to watch for file changes
this environment variable should only be required in certain circumstances.
* `WASM_TARGET_DIRECTORY` - Will copy any build WASM binary to the given directory. The path needs
* `WASM_TARGET_DIRECTORY` - Will copy release build WASM binary to the given directory. The path needs
to be absolute.
* `WASM_BUILD_RUSTFLAGS` - Extend `RUSTFLAGS` given to `cargo build` while building the wasm binary.
* `WASM_BUILD_NO_COLOR` - Disable color output of the wasm build.
Expand Down
32 changes: 22 additions & 10 deletions utils/wasm-builder/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -168,17 +168,29 @@ pub fn build_project_with_default_rustflags(
default_rustflags,
);

let (wasm_binary, wasm_binary_bloaty) = if let Some(wasm_binary) = wasm_binary {
(
wasm_binary.wasm_binary_path_escaped(),
bloaty.wasm_binary_bloaty_path_escaped(),
)
} else {
(
bloaty.wasm_binary_bloaty_path_escaped(),
bloaty.wasm_binary_bloaty_path_escaped(),
)
};

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_path_escaped(),
wasm_binary_bloaty = bloaty.wasm_binary_bloaty_path_escaped(),
),
);
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.
Expand Down
25 changes: 16 additions & 9 deletions utils/wasm-builder/src/wasm_project.rs
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ impl Drop for WorkspaceLock {
pub fn create_and_compile(
cargo_manifest: &Path,
default_rustflags: &str,
) -> (WasmBinary, WasmBinaryBloaty) {
) -> (Option<WasmBinary>, WasmBinaryBloaty) {
let wasm_workspace_root = get_wasm_workspace_root();
let wasm_workspace = wasm_workspace_root.join("wbuild");

Expand All @@ -113,7 +113,9 @@ pub fn create_and_compile(
&wasm_workspace,
);

copy_wasm_to_target_directory(cargo_manifest, &wasm_binary);
wasm_binary.as_ref().map(|wasm_binary|
copy_wasm_to_target_directory(cargo_manifest, wasm_binary)
);

generate_rerun_if_changed_instructions(cargo_manifest, &project, &wasm_workspace);

Expand Down Expand Up @@ -469,18 +471,23 @@ fn compact_wasm_file(
project: &Path,
cargo_manifest: &Path,
wasm_workspace: &Path,
) -> (WasmBinary, WasmBinaryBloaty) {
let target = if is_release_build() { "release" } else { "debug" };
) -> (Option<WasmBinary>, WasmBinaryBloaty) {
let is_release_build = is_release_build();
let target = if is_release_build { "release" } else { "debug" };
let wasm_binary = get_wasm_binary_name(cargo_manifest);
let wasm_file = wasm_workspace.join("target/wasm32-unknown-unknown")
.join(target)
.join(format!("{}.wasm", wasm_binary));
let wasm_compact_file = project.join(format!("{}.compact.wasm", wasm_binary));

wasm_gc::garbage_collect_file(&wasm_file, &wasm_compact_file)
.expect("Failed to compact generated WASM binary.");
let wasm_compact_file = if is_release_build {
let wasm_compact_file = project.join(format!("{}.compact.wasm", wasm_binary));
wasm_gc::garbage_collect_file(&wasm_file, &wasm_compact_file)
.expect("Failed to compact generated WASM binary.");
Some(WasmBinary(wasm_compact_file))
} else {
None
};

(WasmBinary(wasm_compact_file), WasmBinaryBloaty(wasm_file))
(wasm_compact_file, WasmBinaryBloaty(wasm_file))
}

/// Custom wrapper for a [`cargo_metadata::Package`] to store it in
Expand Down

0 comments on commit 4f6bcf0

Please sign in to comment.