Skip to content

wasm-pack build error #11

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

Closed
ilp64 opened this issue Jul 9, 2020 · 9 comments
Closed

wasm-pack build error #11

ilp64 opened this issue Jul 9, 2020 · 9 comments

Comments

@ilp64
Copy link

ilp64 commented Jul 9, 2020

Hi.

I got following error when running wasm-pack build --scope xxx . Could you please give me some tips?

......
cargo:warning=In file included from vendor/jcmainct.c:17:
cargo:warning=In file included from /Users/ma/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/mozjpeg-sys-0.10.5/vendor/jinclude.h:42:
cargo:warning=In file included from /usr/include/stdlib.h:66:
cargo:warning=In file included from /usr/include/sys/wait.h:109:
cargo:warning=In file included from /usr/include/sys/signal.h:150:
cargo:warning=In file included from /usr/include/sys/_types/_sigaltstack.h:40:
cargo:warning=/usr/include/machine/types.h:37:2: error: architecture not supported
cargo:warning=#error architecture not supported
cargo:warning= ^
cargo:warning=fatal error: too many errors emitted, stopping now [-ferror-limit=]
cargo:warning=20 errors generated.
exit code: 1
cargo:warning=20 errors generated.
exit code: 1
cargo:warning=20 errors generated.
exit code: 1

--- stderr


error occurred: Command "clang" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "--target=wasm32-unknown-unknown" "-I" "/Users/ma/CLionProjects/jpegcompressor/target/wasm32-unknown-unknown/release/build/mozjpeg-sys-d9ed3fe7b39facb5/out/include" "-I" "/Users/ma/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/mozjpeg-sys-0.10.5/vendor" "-o" "/Users/ma/CLionProjects/jpegcompressor/target/wasm32-unknown-unknown/release/build/mozjpeg-sys-d9ed3fe7b39facb5/out/vendor/jcapimin.o" "-c" "vendor/jcapimin.c" with args "clang" did not execute successfully (status code exit code: 1).



Error: Compiling your crate to WebAssembly failed
Caused by: failed to execute `cargo build`: exited with exit code: 101
  full command: "cargo" "build" "--lib" "--release" "--target" "wasm32-unknown-unknown"

system infomation

macOS Catalina 10.15.4

clang infomation

Apple clang version 11.0.0 (clang-1100.0.33.8)
Target: x86_64-apple-darwin19.4.0
Thread model: posi

rustc infomation

rustc 1.43.1 (8d69840ab 2020-05-04)

Cargo.toml

[package]
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[lib]
crate-type = ["cdylib"]

[dependencies]
wasm-bindgen = "0.2.64"
mozjpeg = { version = "0.8.19", default-features = false }
@kornelski
Copy link
Member

kornelski commented Jul 9, 2020

Your C compiler is picking up headers for the native architecture, which can't possibly work. It appears that you either don't have a WASM-compatible C compiler, or the compiler doesn't have WASM-compatible system headers.

Note that macOS clang doesn't support WASM. You need to have a special compiler, like emscripten.

Are you able to compile libjpeg-turbo for WASM?

@ilp64
Copy link
Author

ilp64 commented Jul 14, 2020

@khernyo
Thanks for your replay!

I switched to linux and successfully compiled libjpeg-turbo following this issue.
But I still can't compile mozjpeg, when run CC=emcc wasm-pack build, I got following error:

[INFO]: Checking for the Wasm target...
info: downloading component 'rust-std' for 'wasm32-unknown-unknown'
info: installing component 'rust-std' for 'wasm32-unknown-unknown'
info: Defaulting to 500.0 MiB unpack ram
[INFO]: Compiling to Wasm...
   Compiling libc v0.2.72
   Compiling proc-macro2 v1.0.18
   Compiling unicode-xid v0.2.1
   Compiling wasm-bindgen-shared v0.2.64
   Compiling log v0.4.8
   Compiling syn v1.0.34
   Compiling cfg-if v0.1.10
   Compiling bumpalo v3.4.0
   Compiling lazy_static v1.4.0
   Compiling dunce v1.0.1
   Compiling bytemuck v1.2.0
   Compiling wasm-bindgen v0.2.64
   Compiling arrayvec v0.5.1
   Compiling rgb v0.8.20
   Compiling jobserver v0.1.21
   Compiling quote v1.0.7
   Compiling cc v1.0.58
   Compiling mozjpeg-sys v0.10.5
   Compiling wasm-bindgen-backend v0.2.64
   Compiling wasm-bindgen-macro-support v0.2.64
   Compiling wasm-bindgen-macro v0.2.64
error[E0432]: unresolved import `libc::FILE`
 --> /home/ma/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/mozjpeg-sys-0.10.5/src/lib.rs:7:9
  |
7 | pub use libc::FILE;
  |         ^^^^^^^^^^ no `FILE` in the root

error: aborting due to previous error

For more information about this error, try `rustc --explain E0432`.
error: could not compile `mozjpeg-sys`.

To learn more, run the command again with --verbose.
Error: Compiling your crate to WebAssembly failed
Caused by: failed to execute `cargo build`: exited with exit code: 101
  full command: "cargo" "build" "--lib" "--release" "--target" "wasm32-unknown-unknown"

I guess the libc crate is incompatible with WASM, so it's impossible to compile mozjpeg for WASM.

@kornelski
Copy link
Member

Thanks. I've hidden the FILE in 808ade9d2a8070178efda17b5f79b02a5fdf81b7

@ilp64
Copy link
Author

ilp64 commented Jul 15, 2020

Hi.

There are two FILE usages left in mozjpeg-sys/src/lib.rs.

733     pub fn jpeg_destroy_compress(cinfo: &mut jpeg_compress_struct);
734     pub fn jpeg_destroy_decompress(cinfo: &mut jpeg_decompress_struct);
735     pub fn jpeg_stdio_dest(cinfo: &mut jpeg_compress_struct, outfile: *mut FILE);
736     pub fn jpeg_stdio_src(cinfo: &mut jpeg_decompress_struct, infile: *mut FILE);

And I removed these two lines locally, then I got following error.

[INFO]: Checking for the Wasm target...
[INFO]: Compiling to Wasm...
   Compiling libc v0.2.72
   Compiling proc-macro2 v1.0.18
   Compiling unicode-xid v0.2.1
   Compiling log v0.4.8
   Compiling wasm-bindgen-shared v0.2.64
   Compiling syn v1.0.34
   Compiling cfg-if v0.1.10
   Compiling bumpalo v3.4.0
   Compiling lazy_static v1.4.0
   Compiling dunce v1.0.1
   Compiling wasm-bindgen v0.2.64
   Compiling bytemuck v1.2.0
   Compiling arrayvec v0.5.1
   Compiling rgb v0.8.20
   Compiling jobserver v0.1.21
   Compiling quote v1.0.7
   Compiling cc v1.0.58
   Compiling mozjpeg-sys v0.10.6 (/home/ma/rust_projects/mozjpeg-sys)
   Compiling wasm-bindgen-backend v0.2.64
   Compiling wasm-bindgen-macro-support v0.2.64
   Compiling wasm-bindgen-macro v0.2.64
error: linking with `rust-lld` failed: exit code: 1
  |
  = note: "rust-lld" "-flavor" "wasm" "--no-threads" "-z" "stack-size=1048576" "--stack-first" "--allow-undefined" "--fatal-warnings" "--no-demangle" "--export-dynamic" "--no-entry" "-L" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/mozjpeg_sys.mozjpeg_sys.1qxp7sg0-cgu.0.rcgu.o" "-o" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/mozjpeg_sys.wasm" "--export=__heap_base" "--export=__data_end" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/mozjpeg_sys.1uebh1gze5pbx8oe.rcgu.o" "--gc-sections" "-O3" "-L" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps" "-L" "/home/ma/rust_projects/compressor/target/release/deps" "-L" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/build/mozjpeg-sys-16c788bf26d3e836/out" "-L" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib" "-l" "mozjpeg62" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libstd-02bfecf3c0e1b82c.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libpanic_abort-d01c3f06a596417f.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libdlmalloc-10d2fa5696801adb.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libhashbrown-5422d7062eda91da.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/librustc_std_workspace_alloc-cf4c390daeaf8bb5.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libbacktrace-3121804b3747d21d.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/librustc_demangle-b6020c2500f6176e.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libunwind-957b60ad69e842b7.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcfg_if-b3572ba201c87b85.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/liblibc-d69e5cc09fe323c6.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/liballoc-149a6c16fedac334.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/librustc_std_workspace_core-4ee49b064f95fe57.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcore-362cae5f4782ad99.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-987ace0aa53b36d4.rlib" "--no-entry"
  = note: rust-lld: error: /home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/build/mozjpeg-sys-16c788bf26d3e836/out/libmozjpeg62.a: archive has no index; run ranlib to add one
          

error: aborting due to previous error

error: could not compile `mozjpeg-sys`.

To learn more, run the command again with --verbose.
Error: Compiling your crate to WebAssembly failed
Caused by: failed to execute `cargo build`: exited with exit code: 101
  full command: "cargo" "build" "--lib" "--release" "--target" "wasm32-unknown-unknown"

@kornelski
Copy link
Member

It looks like you need to export AR=emar env variable.

@kornelski
Copy link
Member

Have you tried wasm32-unknown-emscripten target?

@ilp64
Copy link
Author

ilp64 commented Jul 17, 2020

It looks like you need to export AR=emar env variable.

I removed libc::free in mozjpeg-rust and run CC=emcc AR=emar wasm-pack build, then I got this error

[INFO]: Checking for the Wasm target...
[INFO]: Compiling to Wasm...
   Compiling libc v0.2.72
   Compiling proc-macro2 v1.0.18
   Compiling unicode-xid v0.2.1
   Compiling syn v1.0.34
   Compiling wasm-bindgen-shared v0.2.65
   Compiling log v0.4.11
   Compiling cfg-if v0.1.10
   Compiling dunce v1.0.1
   Compiling lazy_static v1.4.0
   Compiling bumpalo v3.4.0
   Compiling wasm-bindgen v0.2.65
   Compiling bytemuck v1.2.0
   Compiling arrayvec v0.5.1
   Compiling rgb v0.8.20
   Compiling jobserver v0.1.21
   Compiling quote v1.0.7
   Compiling cc v1.0.58
   Compiling mozjpeg-sys v0.10.6 (/home/ma/rust_projects/mozjpeg-sys)
   Compiling wasm-bindgen-backend v0.2.65
   Compiling wasm-bindgen-macro-support v0.2.65
   Compiling wasm-bindgen-macro v0.2.65
   Compiling mozjpeg v0.8.19 (/home/ma/rust_projects/mozjpeg-rust)
warning: unnecessary `unsafe` block
   --> /home/ma/rust_projects/mozjpeg-rust/src/compress.rs:322:13
    |
322 |             unsafe {
    |             ^^^^^^ unnecessary `unsafe` block
    |
    = note: `#[warn(unused_unsafe)]` on by default

warning: field is never read: `own_file`
   --> /home/ma/rust_projects/mozjpeg-rust/src/decompress.rs:131:5
    |
131 |     own_file: Option<Box<File>>,
    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |
    = note: `#[warn(dead_code)]` on by default

warning: 2 warnings emitted

   Compiling compressor v0.1.0 (/home/ma/rust_projects/compressor)
error: linking with `rust-lld` failed: exit code: 1
  |
  = note: "rust-lld" "-flavor" "wasm" "--no-threads" "-z" "stack-size=1048576" "--stack-first" "--allow-undefined" "--fatal-warnings" "--no-demangle" "--export-dynamic" "--no-entry" "-L" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/compressor.compressor.qtbiztxe-cgu.0.rcgu.o" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/compressor.compressor.qtbiztxe-cgu.1.rcgu.o" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/compressor.compressor.qtbiztxe-cgu.10.rcgu.o" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/compressor.compressor.qtbiztxe-cgu.11.rcgu.o" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/compressor.compressor.qtbiztxe-cgu.12.rcgu.o" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/compressor.compressor.qtbiztxe-cgu.13.rcgu.o" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/compressor.compressor.qtbiztxe-cgu.14.rcgu.o" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/compressor.compressor.qtbiztxe-cgu.15.rcgu.o" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/compressor.compressor.qtbiztxe-cgu.2.rcgu.o" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/compressor.compressor.qtbiztxe-cgu.3.rcgu.o" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/compressor.compressor.qtbiztxe-cgu.4.rcgu.o" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/compressor.compressor.qtbiztxe-cgu.5.rcgu.o" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/compressor.compressor.qtbiztxe-cgu.6.rcgu.o" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/compressor.compressor.qtbiztxe-cgu.7.rcgu.o" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/compressor.compressor.qtbiztxe-cgu.8.rcgu.o" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/compressor.compressor.qtbiztxe-cgu.9.rcgu.o" "-o" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/compressor.wasm" "--export" "__wbindgen_describe_get_size" "--export" "get_size" "--export" "__externref_drop_slice" "--export" "__externref_heap_live_count" "--export" "__externref_table_alloc" "--export" "__externref_table_dealloc" "--export" "__wbindgen_exn_store" "--export" "__wbindgen_free" "--export" "__wbindgen_malloc" "--export" "__wbindgen_realloc" "--export=__heap_base" "--export=__data_end" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/compressor.sb5bij12he1wh56.rcgu.o" "--gc-sections" "-O3" "-L" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps" "-L" "/home/ma/rust_projects/compressor/target/release/deps" "-L" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/build/mozjpeg-sys-16c788bf26d3e836/out" "-L" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/libmozjpeg-6a399c066df6c3fe.rlib" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/librgb-72f7b5fdda4f821d.rlib" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/libbytemuck-7904ed8ffef3eacb.rlib" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/libarrayvec-916b0b8b0f3dab46.rlib" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/libmozjpeg_sys.rlib" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/libwasm_bindgen-37f7bf9d032ad006.rlib" "/home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/libcfg_if-0cb6543d268dad8b.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libstd-02bfecf3c0e1b82c.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libpanic_abort-d01c3f06a596417f.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libdlmalloc-10d2fa5696801adb.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libhashbrown-5422d7062eda91da.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/librustc_std_workspace_alloc-cf4c390daeaf8bb5.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libbacktrace-3121804b3747d21d.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/librustc_demangle-b6020c2500f6176e.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libunwind-957b60ad69e842b7.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcfg_if-b3572ba201c87b85.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/liblibc-d69e5cc09fe323c6.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/liballoc-149a6c16fedac334.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/librustc_std_workspace_core-4ee49b064f95fe57.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcore-362cae5f4782ad99.rlib" "/home/ma/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/wasm32-unknown-unknown/lib/libcompiler_builtins-987ace0aa53b36d4.rlib" "--no-entry"
  = note: rust-lld: error: /home/ma/rust_projects/compressor/target/wasm32-unknown-unknown/release/deps/libmozjpeg_sys.rlib(jerror.o): undefined symbol: stderr
          

error: aborting due to previous error

error: could not compile `compressor`.

To learn more, run the command again with --verbose.
Error: Compiling your crate to WebAssembly failed
Caused by: failed to execute `cargo build`: exited with exit code: 101
  full command: "cargo" "build" "--lib" "--release" "--target" "wasm32-unknown-unknown"

Have you tried wasm32-unknown-emscripten target?

I removed wasm-bindgen and run RUST_BACKTRACE=1 cargo build --lib --release --target wasm32-unknown-emscripten --verbose, then I got this error

   Compiling libc v0.2.72
     Running `rustc --crate-name build_script_build /home/ma/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/libc-0.2.72/build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C opt-level=3 --cfg 'feature="default"' --cfg 'feature="std"' -C metadata=2621de4f7cd57e9e -C extra-filename=-2621de4f7cd57e9e --out-dir /home/ma/rust_projects/compressor/target/release/build/libc-2621de4f7cd57e9e -L dependency=/home/ma/rust_projects/compressor/target/release/deps --cap-lints allow`
   Compiling dunce v1.0.1
     Running `rustc --crate-name dunce --edition=2018 /home/ma/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/dunce-1.0.1/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C metadata=4e7d26c154f5de8c -C extra-filename=-4e7d26c154f5de8c --out-dir /home/ma/rust_projects/compressor/target/release/deps -L dependency=/home/ma/rust_projects/compressor/target/release/deps --cap-lints allow`
   Compiling bytemuck v1.2.0
     Running `rustc --crate-name bytemuck --edition=2018 /home/ma/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/bytemuck-1.2.0/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C metadata=fd81e5e8f4bbec6c -C extra-filename=-fd81e5e8f4bbec6c --out-dir /home/ma/rust_projects/compressor/target/wasm32-unknown-emscripten/release/deps --target wasm32-unknown-emscripten -L dependency=/home/ma/rust_projects/compressor/target/wasm32-unknown-emscripten/release/deps -L dependency=/home/ma/rust_projects/compressor/target/release/deps --cap-lints allow`
   Compiling arrayvec v0.5.1
     Running `rustc --crate-name arrayvec --edition=2018 /home/ma/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/arrayvec-0.5.1/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 --cfg 'feature="default"' --cfg 'feature="std"' -C metadata=aa8a29eeee8e474a -C extra-filename=-aa8a29eeee8e474a --out-dir /home/ma/rust_projects/compressor/target/wasm32-unknown-emscripten/release/deps --target wasm32-unknown-emscripten -L dependency=/home/ma/rust_projects/compressor/target/wasm32-unknown-emscripten/release/deps -L dependency=/home/ma/rust_projects/compressor/target/release/deps --cap-lints allow`
     Running `/home/ma/rust_projects/compressor/target/release/build/libc-2621de4f7cd57e9e/build-script-build`
     Running `/home/ma/rust_projects/compressor/target/release/build/libc-2621de4f7cd57e9e/build-script-build`
   Compiling rgb v0.8.20
     Running `rustc --crate-name rgb --edition=2018 /home/ma/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/rgb-0.8.20/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 --cfg 'feature="as-bytes"' --cfg 'feature="bytemuck"' --cfg 'feature="default"' -C metadata=86028502349bca2c -C extra-filename=-86028502349bca2c --out-dir /home/ma/rust_projects/compressor/target/wasm32-unknown-emscripten/release/deps --target wasm32-unknown-emscripten -L dependency=/home/ma/rust_projects/compressor/target/wasm32-unknown-emscripten/release/deps -L dependency=/home/ma/rust_projects/compressor/target/release/deps --extern bytemuck=/home/ma/rust_projects/compressor/target/wasm32-unknown-emscripten/release/deps/libbytemuck-fd81e5e8f4bbec6c.rmeta --cap-lints allow`
     Running `rustc --crate-name libc /home/ma/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/libc-0.2.72/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 --cfg 'feature="default"' --cfg 'feature="std"' -C metadata=5669e8ad95e16877 -C extra-filename=-5669e8ad95e16877 --out-dir /home/ma/rust_projects/compressor/target/release/deps -L dependency=/home/ma/rust_projects/compressor/target/release/deps --cap-lints allow --cfg freebsd11 --cfg libc_priv_mod_use --cfg libc_union --cfg libc_const_size_of --cfg libc_align --cfg libc_core_cvoid --cfg libc_packedN`
     Running `rustc --crate-name libc /home/ma/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/libc-0.2.72/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 --cfg 'feature="default"' --cfg 'feature="std"' -C metadata=2f3ad601bf73bd52 -C extra-filename=-2f3ad601bf73bd52 --out-dir /home/ma/rust_projects/compressor/target/wasm32-unknown-emscripten/release/deps --target wasm32-unknown-emscripten -L dependency=/home/ma/rust_projects/compressor/target/wasm32-unknown-emscripten/release/deps -L dependency=/home/ma/rust_projects/compressor/target/release/deps --cap-lints allow --cfg freebsd11 --cfg libc_priv_mod_use --cfg libc_union --cfg libc_const_size_of --cfg libc_align --cfg libc_core_cvoid --cfg libc_packedN`
   Compiling jobserver v0.1.21
     Running `rustc --crate-name jobserver --edition=2018 /home/ma/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/jobserver-0.1.21/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C metadata=f4f4f1fc8cbea659 -C extra-filename=-f4f4f1fc8cbea659 --out-dir /home/ma/rust_projects/compressor/target/release/deps -L dependency=/home/ma/rust_projects/compressor/target/release/deps --extern libc=/home/ma/rust_projects/compressor/target/release/deps/liblibc-5669e8ad95e16877.rmeta --cap-lints allow`
   Compiling cc v1.0.58
     Running `rustc --crate-name cc --edition=2018 /home/ma/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-df7c3c540f42cdbd/cc-1.0.58/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 --cfg 'feature="jobserver"' --cfg 'feature="parallel"' -C metadata=46f70238f4808da0 -C extra-filename=-46f70238f4808da0 --out-dir /home/ma/rust_projects/compressor/target/release/deps -L dependency=/home/ma/rust_projects/compressor/target/release/deps --extern jobserver=/home/ma/rust_projects/compressor/target/release/deps/libjobserver-f4f4f1fc8cbea659.rmeta --cap-lints allow`
   Compiling mozjpeg-sys v0.10.6 (/home/ma/rust_projects/mozjpeg-sys)
     Running `rustc --crate-name build_script_build --edition=2018 /home/ma/rust_projects/mozjpeg-sys/src/build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C opt-level=3 -C metadata=e825e3c256835a65 -C extra-filename=-e825e3c256835a65 --out-dir /home/ma/rust_projects/compressor/target/release/build/mozjpeg-sys-e825e3c256835a65 -L dependency=/home/ma/rust_projects/compressor/target/release/deps --extern cc=/home/ma/rust_projects/compressor/target/release/deps/libcc-46f70238f4808da0.rlib --extern dunce=/home/ma/rust_projects/compressor/target/release/deps/libdunce-4e7d26c154f5de8c.rlib`
     Running `/home/ma/rust_projects/compressor/target/release/build/mozjpeg-sys-e825e3c256835a65/build-script-build`
     Running `rustc --crate-name mozjpeg_sys --edition=2018 /home/ma/rust_projects/mozjpeg-sys/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type staticlib --crate-type cdylib --crate-type lib --emit=dep-info,link -C opt-level=3 -C metadata=9745ce23b180ffe6 --out-dir /home/ma/rust_projects/compressor/target/wasm32-unknown-emscripten/release/deps --target wasm32-unknown-emscripten -L dependency=/home/ma/rust_projects/compressor/target/wasm32-unknown-emscripten/release/deps -L dependency=/home/ma/rust_projects/compressor/target/release/deps --extern libc=/home/ma/rust_projects/compressor/target/wasm32-unknown-emscripten/release/deps/liblibc-2f3ad601bf73bd52.rlib -L native=/home/ma/rust_projects/compressor/target/wasm32-unknown-emscripten/release/build/mozjpeg-sys-71352d705d4e5fb0/out -l static=mozjpeg62`
thread 'rustc' panicked at 'src/librustc_codegen_ssa/back/linker.rs:893: building dynamic library is unsupported on Emscripten', src/librustc_middle/util/bug.rs:37:26
stack backtrace:
   0: backtrace::backtrace::libunwind::trace
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/libunwind.rs:86
   1: backtrace::backtrace::trace_unsynchronized
             at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/mod.rs:66
   2: std::sys_common::backtrace::_print_fmt
             at src/libstd/sys_common/backtrace.rs:78
   3: <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt
             at src/libstd/sys_common/backtrace.rs:59
   4: core::fmt::write
             at src/libcore/fmt/mod.rs:1069
   5: std::io::Write::write_fmt
             at src/libstd/io/mod.rs:1504
   6: std::sys_common::backtrace::_print
             at src/libstd/sys_common/backtrace.rs:62
   7: std::sys_common::backtrace::print
             at src/libstd/sys_common/backtrace.rs:49
   8: std::panicking::default_hook::{{closure}}
             at src/libstd/panicking.rs:198
   9: std::panicking::default_hook
             at src/libstd/panicking.rs:218
  10: rustc_driver::report_ice
  11: std::panicking::rust_panic_with_hook
             at src/libstd/panicking.rs:515
  12: std::panicking::begin_panic
  13: rustc_middle::util::bug::opt_span_bug_fmt::{{closure}}
  14: rustc_middle::ty::context::tls::with_opt::{{closure}}
  15: rustc_middle::ty::context::tls::with_opt
  16: rustc_middle::util::bug::opt_span_bug_fmt
  17: rustc_middle::util::bug::bug_fmt
  18: <rustc_codegen_ssa::back::linker::EmLinker as rustc_codegen_ssa::back::linker::Linker>::build_dylib
  19: rustc_codegen_ssa::back::link::link_natively
  20: rustc_session::utils::<impl rustc_session::session::Session>::time
  21: <rustc_codegen_llvm::LlvmCodegenBackend as rustc_codegen_ssa::traits::backend::CodegenBackend>::link
  22: rustc_interface::queries::Linker::link
  23: rustc_interface::interface::run_compiler_in_existing_thread_pool
  24: scoped_tls::ScopedKey<T>::set
  25: rustc_ast::attr::with_globals
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

error: internal compiler error: unexpected panic

note: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/blob/master/CONTRIBUTING.md#bug-reports

note: rustc 1.44.1 (c7087fe00 2020-06-17) running on x86_64-unknown-linux-gnu

note: compiler flags: -C opt-level=3 --crate-type staticlib --crate-type cdylib --crate-type lib

note: some of the compiler flags provided by cargo are hidden

query stack during panic:
end of query stack
error: could not compile `mozjpeg-sys`.

Caused by:
  process didn't exit successfully: `rustc --crate-name mozjpeg_sys --edition=2018 /home/ma/rust_projects/mozjpeg-sys/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type staticlib --crate-type cdylib --crate-type lib --emit=dep-info,link -C opt-level=3 -C metadata=9745ce23b180ffe6 --out-dir /home/ma/rust_projects/compressor/target/wasm32-unknown-emscripten/release/deps --target wasm32-unknown-emscripten -L dependency=/home/ma/rust_projects/compressor/target/wasm32-unknown-emscripten/release/deps -L dependency=/home/ma/rust_projects/compressor/target/release/deps --extern libc=/home/ma/rust_projects/compressor/target/wasm32-unknown-emscripten/release/deps/liblibc-2f3ad601bf73bd52.rlib -L native=/home/ma/rust_projects/compressor/target/wasm32-unknown-emscripten/release/build/mozjpeg-sys-71352d705d4e5fb0/out -l static=mozjpeg62` (exit code: 101)

@kornelski
Copy link
Member

kornelski commented Jul 17, 2020

"building dynamic library is unsupported on Emscripten" is a Cargo issue: rust-lang/cargo#8496

You need to update to Rust 1.45 for this to work.

@ilp64
Copy link
Author

ilp64 commented Jul 20, 2020

Thank you!

It works.
I updated rust to 1.45 and removed line 234 ffi::jpeg_stdio_src(&mut self.cinfo, fh) in mozjpeg-rust/src/decompress.rs, compiled successfully.

@ilp64 ilp64 closed this as completed Jul 20, 2020
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

No branches or pull requests

2 participants