Skip to content

wasm-pack fails at "Installing wasm-bindgen" for rust <=1.80 due to wasm-bindgen-cli having dependencies with MSRV >=1.81 #1498

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
corneliusroemer opened this issue Apr 28, 2025 · 1 comment · May be fixed by #1499

Comments

@corneliusroemer
Copy link

corneliusroemer commented Apr 28, 2025

🐛 Bug description

wasm-pack fails in a project that uses Rust 1.80 (set through rust-toolchain.toml) due to wasm-bindgen-cli installation failing:

$ wasm-pack build --release --target=bundler --out-dir=.build/wasm-prod/ --out-name=nextclade-wasm --locked -- --package=nextclade-web
[INFO]: 🎯  Checking for the Wasm target...
[INFO]: 🌀  Compiling to Wasm...
   Compiling nextclade-web v3.13.1 (/Users/cr/code/nextclade/packages/nextclade-web)
    Finished `release` profile [optimized] target(s) in 13.14s
[INFO]: ⬇️  Installing wasm-bindgen...
    Updating crates.io index
  Installing wasm-bindgen-cli v0.2.93
    Updating crates.io index
     Locking 200 packages to latest compatible versions
      Adding base64 v0.13.1 (latest: v0.22.1)
      Adding brotli-decompressor v4.0.3 (latest: v5.0.0)
      Adding fallible-iterator v0.2.0 (latest: v0.3.0)
      Adding getrandom v0.2.16 (latest: v0.3.2)
      Adding gimli v0.26.2 (latest: v0.31.1)
      Adding hashbrown v0.12.3 (latest: v0.15.2)
      Adding hashbrown v0.14.5 (latest: v0.15.2)
      Adding heck v0.3.3 (latest: v0.5.0)
      Adding hermit-abi v0.3.9 (latest: v0.5.0)
      Adding indexmap v1.9.3 (latest: v2.9.0)
      Adding js-sys v0.3.70 (latest: v0.3.77)
      Adding quick-error v1.2.3 (latest: v2.0.1)
      Adding rand v0.8.5 (latest: v0.9.1)
      Adding rand_chacha v0.3.1 (latest: v0.9.0)
      Adding rand_core v0.6.4 (latest: v0.9.3)
      Adding strsim v0.10.0 (latest: v0.11.1)
      Adding syn v1.0.109 (latest: v2.0.101)
      Adding tinystr v0.7.6 (latest: v0.8.1)
      Adding twoway v0.1.8 (latest: v0.2.2)
      Adding ureq v2.12.1 (latest: v3.0.11)
      Adding walrus v0.21.3 (latest: v0.23.3)
      Adding walrus-macro v0.19.0 (latest: v0.22.0)
      Adding wasi v0.11.0+wasi-snapshot-preview1 (latest: v0.14.2+wasi-0.2.4)
      Adding wasm-bindgen v0.2.93 (latest: v0.2.100)
      Adding wasm-bindgen-backend v0.2.93 (latest: v0.2.100)
      Adding wasm-bindgen-cli v0.2.93 (latest: v0.2.100)
      Adding wasm-bindgen-cli-support v0.2.93 (latest: v0.2.100)
      Adding wasm-bindgen-externref-xform v0.2.93 (latest: v0.2.100)
      Adding wasm-bindgen-macro v0.2.93 (latest: v0.2.100)
      Adding wasm-bindgen-macro-support v0.2.93 (latest: v0.2.100)
      Adding wasm-bindgen-multi-value-xform v0.2.93 (latest: v0.2.100)
      Adding wasm-bindgen-shared v0.2.93 (latest: v0.2.100)
      Adding wasm-bindgen-threads-xform v0.2.93 (latest: v0.2.100)
      Adding wasm-bindgen-wasm-conventions v0.2.93 (latest: v0.2.100)
      Adding wasm-bindgen-wasm-interpreter v0.2.93 (latest: v0.2.100)
      Adding wasm-encoder v0.212.0 (latest: v0.229.0)
      Adding wasmparser v0.212.0 (latest: v0.229.0)
      Adding windows-sys v0.52.0 (latest: v0.59.0)
      Adding windows-targets v0.52.6 (latest: v0.53.0)
      Adding windows_aarch64_gnullvm v0.52.6 (latest: v0.53.0)
      Adding windows_aarch64_msvc v0.52.6 (latest: v0.53.0)
      Adding windows_i686_gnu v0.52.6 (latest: v0.53.0)
      Adding windows_i686_gnullvm v0.52.6 (latest: v0.53.0)
      Adding windows_i686_msvc v0.52.6 (latest: v0.53.0)
      Adding windows_x86_64_gnu v0.52.6 (latest: v0.53.0)
      Adding windows_x86_64_gnullvm v0.52.6 (latest: v0.53.0)
      Adding windows_x86_64_msvc v0.52.6 (latest: v0.53.0)
      Adding wit-bindgen-rt v0.39.0 (latest: v0.41.0)
      Adding writeable v0.5.5 (latest: v0.6.1)
      Adding yoke v0.7.5 (latest: v0.8.0)
      Adding yoke-derive v0.7.5 (latest: v0.8.0)
      Adding zerocopy v0.7.35 (latest: v0.8.25)
      Adding zerocopy-derive v0.7.35 (latest: v0.8.25)
      Adding zerovec v0.10.4 (latest: v0.11.1)
      Adding zerovec-derive v0.10.3 (latest: v0.11.1)
error: failed to compile `wasm-bindgen-cli v0.2.93`, intermediate artifacts can be found at `/var/folders/z6/j6fz8zq10rj35_kc0zy_f28w0000gn/T/cargo-installQNVh8q`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.

Caused by:
  rustc 1.80.0 is not supported by the following packages:
    litemap@0.7.5 requires rustc 1.81
    zerofrom@0.1.6 requires rustc 1.81
  Try re-running `cargo install` with `--locked`
Error: Installing wasm-bindgen with cargo
Caused by: Installing wasm-bindgen with cargo
Caused by: failed to execute `cargo install`: exited with exit status: 101
  full command: "cargo" "install" "--force" "wasm-bindgen-cli" "--root" "/Users/cr/Library/Caches/.wasm-pack/.wasm-bindgen-cargo-install-0.2.93" "--version" "0.2.93"

error: failed to compile wasm-bindgen-cli v0.2.93` due to `rustc 1.80.0 is not supported by the following packages:
    litemap@0.7.5 requires rustc 1.81
    zerofrom@0.1.6 requires rustc 1.81

🤔 Expected Behavior

wasm-pack can be used with rust <=1.80 without error.

The code in question might be here, maybe a --locked should be added?

info!("Installing wasm-bindgen-cli...");
let bindgen = install::download_prebuilt_or_cargo_install(
Tool::WasmBindgen,
&self.cache,
bindgen_version,
self.mode.install_permitted(),
)?;
self.bindgen = Some(bindgen);

🌍 Your environment

Include the relevant details of your environment.
wasm-pack version: 0.13.1
rustc version: 1.80.0

@corneliusroemer
Copy link
Author

corneliusroemer commented Apr 28, 2025

A workaround is to manually cargo install wasm-bindgen-cli (possibly with --locked added if necessary). The failing cargo install only happens if the binary is not found in path.

The exact command that worked for me was:

cargo install wasm-bindgen-cli@0.2.93 --locked

It needs to be the correct version, otherwise a cargo install will be attempted (without lock and hence failing).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant