From d797363b363077461bb7fb2f0abab4556d57fd9c Mon Sep 17 00:00:00 2001 From: Michael Mueller Date: Tue, 30 Mar 2021 17:06:51 +0200 Subject: [PATCH 1/4] Improve error output --- src/cmd/build.rs | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/cmd/build.rs b/src/cmd/build.rs index 6e5d2996..f7cce8ab 100644 --- a/src/cmd/build.rs +++ b/src/cmd/build.rs @@ -407,13 +407,13 @@ fn do_optimization( wasm-opt is part of the binaryen package. You can find detailed\n\ installation instructions on https://github.com/WebAssembly/binaryen#tools.\n\n\ - There are also ready-to-install packages for many platforms:\n\ - * Debian/Ubuntu: https://tracker.debian.org/pkg/binaryen\n\ - * Homebrew: https://formulae.brew.sh/formula/binaryen\n\ - * Arch Linux: https://archlinux.org/packages/community/x86_64/binaryen\n\ - * Windows: binary releases are available at https://github.com/WebAssembly/binaryen/releases" - .to_string() - .bright_yellow() + There are ready-to-install packages for many platforms:\n\ + * Debian/Ubuntu: apt-get install binaryen\n\ + * Homebrew: brew install binaryen\n\ + * Arch Linux: pacman -S binaryen\n\ + * Windows: binary releases at https://github.com/WebAssembly/binaryen/releases" + .to_string() + .bright_yellow() ); } let wasm_opt_path = which @@ -490,12 +490,14 @@ fn check_wasm_opt_version_compatibility(wasm_opt_path: &Path) -> Result<()> { // $ wasm-opt --version // wasm-opt version 99 (version_99-79-gc12cc3f50) // ``` - let version_stdout = - str::from_utf8(&cmd.stdout).expect("cannot convert stdout output of wasm-opt to string"); + let version_stdout = str::from_utf8(&cmd.stdout) + .expect("cannot convert stdout output of wasm-opt to string") + .trim(); let re = Regex::new(r"wasm-opt version (\d+)\s+").unwrap(); let captures = re.captures(version_stdout).ok_or_else(|| { anyhow::anyhow!( - "Unable to extract version information from {:?}", + "Unable to extract version information from {:?}.\n\ + Your wasm-opt version is most probably too old. Make sure you use a version >= 99.", version_stdout ) })?; -- GitLab From fd475ad0fd4ae622fdfac80a0e944d6b218af10e Mon Sep 17 00:00:00 2001 From: Michael Mueller Date: Tue, 30 Mar 2021 17:12:18 +0200 Subject: [PATCH 2/4] Add installation commands --- README.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 41a86bab..09020aa5 100644 --- a/README.md +++ b/README.md @@ -14,9 +14,13 @@ We optimize the resulting contract Wasm using `binaryen`. You have two options f - _The preferred way:_ Install [`binaryen`](https://github.com/WebAssembly/binaryen#tools) with a version >= 99. - Many package managers have it available nowadays ‒ e.g. it's a package for [Debian/Ubuntu](https://tracker.debian.org/pkg/binaryen), - [Homebrew](https://formulae.brew.sh/formula/binaryen) and [Arch Linux](https://archlinux.org/packages/community/x86_64/binaryen/). - For Windows, [binary releases are available](https://github.com/WebAssembly/binaryen/releases). + Many package managers have it available nowadays: + + * [Debian/Ubuntu](https://tracker.debian.org/pkg/binaryen): `apt-get install binaryen` + * [Homebrew](https://formulae.brew.sh/formula/binaryen): `brew install binaryen` + * [Arch Linux](https://archlinux.org/packages/community/x86_64/binaryen/): `pacman -S binaryen` + * Windows: [binary releases are available](https://github.com/WebAssembly/binaryen/releases) + After you've installed the package execute `cargo install --force cargo-contract`. - _Build `binaryen` as a dependency when installing `cargo-contract`:_ -- GitLab From a4409b090a5f521a861770607bf4ee15f5ba38a0 Mon Sep 17 00:00:00 2001 From: Michael Mueller Date: Tue, 30 Mar 2021 17:15:03 +0200 Subject: [PATCH 3/4] Fix casing --- src/cmd/build.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cmd/build.rs b/src/cmd/build.rs index f7cce8ab..7866cb61 100644 --- a/src/cmd/build.rs +++ b/src/cmd/build.rs @@ -448,7 +448,7 @@ fn do_optimization( if !output.status.success() { let err = str::from_utf8(&output.stderr) - .expect("cannot convert stderr output of wasm-opt to string") + .expect("Cannot convert stderr output of wasm-opt to string") .trim(); anyhow::bail!( "The wasm-opt optimization failed.\n\n\ @@ -491,7 +491,7 @@ fn check_wasm_opt_version_compatibility(wasm_opt_path: &Path) -> Result<()> { // wasm-opt version 99 (version_99-79-gc12cc3f50) // ``` let version_stdout = str::from_utf8(&cmd.stdout) - .expect("cannot convert stdout output of wasm-opt to string") + .expect("Cannot convert stdout output of wasm-opt to string") .trim(); let re = Regex::new(r"wasm-opt version (\d+)\s+").unwrap(); let captures = re.captures(version_stdout).ok_or_else(|| { -- GitLab From 27a8c7b53be60492ada3741e71f14cc9b217dc4d Mon Sep 17 00:00:00 2001 From: Michael Mueller Date: Tue, 30 Mar 2021 17:15:11 +0200 Subject: [PATCH 4/4] Use display instead of debug --- src/cmd/build.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cmd/build.rs b/src/cmd/build.rs index 7866cb61..05d0b285 100644 --- a/src/cmd/build.rs +++ b/src/cmd/build.rs @@ -496,7 +496,7 @@ fn check_wasm_opt_version_compatibility(wasm_opt_path: &Path) -> Result<()> { let re = Regex::new(r"wasm-opt version (\d+)\s+").unwrap(); let captures = re.captures(version_stdout).ok_or_else(|| { anyhow::anyhow!( - "Unable to extract version information from {:?}.\n\ + "Unable to extract version information from {}.\n\ Your wasm-opt version is most probably too old. Make sure you use a version >= 99.", version_stdout ) -- GitLab