Skip to content
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

Compilation fails on Mac M1 #283

Open
kilmas opened this issue Mar 1, 2021 · 28 comments
Open

Compilation fails on Mac M1 #283

kilmas opened this issue Mar 1, 2021 · 28 comments

Comments

@kilmas
Copy link

kilmas commented Mar 1, 2021

= note: ld: in /Users/XXX/Desktop/xxxxx/target/debug/deps/libsecp256k1_sys-83373f8ecea41938.rlib(secp256k1.o), archive member 'secp256k1.o' with length 195816 is not mach-o or llvm bitcode for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

@real-or-random
Copy link
Collaborator

Can you include more information? So this is on Mac M1? What were you doing when this message came up? Can you include the entire log?

What's your rust version? Can you compile other Rust code? (see https://blog.rust-lang.org/2020/11/27/Rustup-1.23.0.html )

@real-or-random real-or-random changed the title Mac M1 osx problem! Compilation fails on Mac M1 Mar 1, 2021
@kilmas
Copy link
Author

kilmas commented Mar 1, 2021

Can you include more information? So this is on Mac M1? What were you doing when this message came up? Can you include the entire log?

What's your rust version? Can you compile other Rust code? (see https://blog.rust-lang.org/2020/11/27/Rustup-1.23.0.html )

secp256k1 = {version = "0.20.1", features = ["std", "recovery"] }

It is in Mac M1.

rustc --version
rustc 1.50.0 (cb75ad5db 2021-02-10)
$ cargo --version
cargo 1.50.0 (f04e7fab7 2021-02-04)
$ rustup --version
rustup 1.23.1 (3df2264a9 2020-11-30)
info: This is the version for the rustup toolchain manager, not the rustc compiler.
info: The currently active `rustc` version is `rustc 1.50.0 (cb75ad5db 2021-02-10)`

It build successfully , and I can compile other Rust code:

$cargo build
    Finished dev [unoptimized + debuginfo] target(s) in 0.32s

It is ok!

But i run a test:

cargo test --package xxxxx_crypto --lib -- xxxx::xxx::xxxx --exact --nocapture'

error: linking with `cc` failed: exit code: 1
  |
  = note: "cc" "-arch" "arm64" 
"-L" "/Users/xxxx/.rustup/toolchains/stable-aarch64-apple-darwin....
...
...
 = note: ld: in /Users/xxxx/Desktop/xxxxx/target/debug/deps/libsecp256k1_sys-83373f8ecea41938.rlib(secp256k1.o), archive member 'secp256k1.o' with length 195816 is not mach-o or llvm bitcode for architecture arm64
          clang: error: linker command failed with exit code 1 (use -v to see invocation)


error: aborting due to previous error
error: could not compile `xxxx_crypto`

@elichai
Copy link
Member

elichai commented Mar 1, 2021

hmmmm, that won't be easy to debug without an actual mac M1 (are there VMs/qemus of it?)
Can you try these:

  1. RUSTFLAGS=-Cembed-bitcode=no cargo test.
  2. Building libsecp itself + running the tests(https://github.com/bitcoin-core/secp256k1).
  3. Can you try testing other popular FFI crates? (like librocksdb or git2-rs with the zlib-ng-compat feature)

@real-or-random
Copy link
Collaborator

The three tests are interesting but in the end I suspect the problem needs to be fixed in cc. This issue here looks relevant: rust-lang/cc-rs#542

@apoelstra
Copy link
Member

New versions of cc are incompatible with Rust 1.29 so unfortunately this means we won't be able to hit our MSRV target on the M1.

@real-or-random
Copy link
Collaborator

Indeed, but I wonder how important this is on MacOS (e.g., we arrived at 1.29 specifically because we were looking at Debian versions...)

@apoelstra
Copy link
Member

We arrived at 1.29 because this is mrustc's target.

But I agree, this probably doesn't matter for users of OS X because they are already running scads of completely closed-source software.

@real-or-random
Copy link
Collaborator

We arrived at 1.29 because this is mrustc's target.

Oh right. But yeah, it's probably not as important on Mac as it is on Linux.

@fanatid
Copy link
Contributor

fanatid commented Apr 6, 2021

It's not possible to build wasm32 target on M1 right now too:

error: failed to build archive: section too large

error: aborting due to previous error

env:

% clang --version
clang version 11.1.0
Target: arm64-apple-darwin20.3.0
Thread model: posix
InstalledDir: /opt/homebrew/opt/llvm/bin
% rustup --version
rustup 1.23.1 (3df2264a9 2020-11-30)
info: This is the version for the rustup toolchain manager, not the rustc compiler.
info: The currently active `rustc` version is `rustc 1.53.0-nightly (07e0e2ec2 2021-03-24)`
% rustc --version
rustc 1.53.0-nightly (07e0e2ec2 2021-03-24)

Code: https://github.com/fanatid/rust-secp256k1/tree/wasm-example-m1
(it's just simple secp256k1-sys dependency)

Full output with `-vv`
   Compiling cc v1.0.67
     Running `CARGO=/Users/kirill/.rustup/toolchains/nightly-aarch64-apple-darwin/bin/cargo CARGO_CRATE_NAME=cc CARGO_MANIFEST_DIR=/Users/kirill/.cargo/registry/src/github.com-1ecc6299db9ec823/cc-1.0.67 CARGO_PKG_AUTHORS='Alex Crichton <alex@alexcrichton.com>' CARGO_PKG_DESCRIPTION='A build-time dependency for Cargo build scripts to assist in invoking the native
C compiler to compile native C code into a static archive to be linked into Rust
code.
' CARGO_PKG_HOMEPAGE='https://github.com/alexcrichton/cc-rs' CARGO_PKG_LICENSE=MIT/Apache-2.0 CARGO_PKG_LICENSE_FILE='' CARGO_PKG_NAME=cc CARGO_PKG_REPOSITORY='https://github.com/alexcrichton/cc-rs' CARGO_PKG_VERSION=1.0.67 CARGO_PKG_VERSION_MAJOR=1 CARGO_PKG_VERSION_MINOR=0 CARGO_PKG_VERSION_PATCH=67 CARGO_PKG_VERSION_PRE='' DYLD_FALLBACK_LIBRARY_PATH='/Users/kirill/projects/rust-secp256k1/target/debug/deps:/Users/kirill/.rustup/toolchains/nightly-aarch64-apple-darwin/lib:/Users/kirill/.rustup/toolchains/nightly-aarch64-apple-darwin/lib:/Users/kirill/lib:/usr/local/lib:/usr/lib' rustc --crate-name cc --edition=2018 /Users/kirill/.cargo/registry/src/github.com-1ecc6299db9ec823/cc-1.0.67/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debuginfo=2 -C metadata=f2f685229e753d27 -C extra-filename=-f2f685229e753d27 --out-dir /Users/kirill/projects/rust-secp256k1/target/debug/deps -L dependency=/Users/kirill/projects/rust-secp256k1/target/debug/deps --cap-lints warn`
   Compiling secp256k1-sys v0.4.0 (https://github.com/rust-bitcoin/rust-secp256k1#4ae0e7eb)
     Running `CARGO=/Users/kirill/.rustup/toolchains/nightly-aarch64-apple-darwin/bin/cargo CARGO_CRATE_NAME=build_script_build CARGO_MANIFEST_DIR=/Users/kirill/.cargo/git/checkouts/rust-secp256k1-089150aa740fd098/4ae0e7e/secp256k1-sys CARGO_PKG_AUTHORS='Dawid Ciężarkiewicz <dpc@ucore.info>:Andrew Poelstra <apoelstra@wpsoftware.net>:Steven Roose <steven@stevenroose.org>' CARGO_PKG_DESCRIPTION='FFI for Pieter Wuille'\''s `libsecp256k1` library.' CARGO_PKG_HOMEPAGE='https://github.com/rust-bitcoin/rust-secp256k1/' CARGO_PKG_LICENSE=CC0-1.0 CARGO_PKG_LICENSE_FILE='' CARGO_PKG_NAME=secp256k1-sys CARGO_PKG_REPOSITORY='https://github.com/rust-bitcoin/rust-secp256k1/' CARGO_PKG_VERSION=0.4.0 CARGO_PKG_VERSION_MAJOR=0 CARGO_PKG_VERSION_MINOR=4 CARGO_PKG_VERSION_PATCH=0 CARGO_PKG_VERSION_PRE='' DYLD_FALLBACK_LIBRARY_PATH='/Users/kirill/projects/rust-secp256k1/target/debug/deps:/Users/kirill/.rustup/toolchains/nightly-aarch64-apple-darwin/lib:/Users/kirill/.rustup/toolchains/nightly-aarch64-apple-darwin/lib:/Users/kirill/lib:/usr/local/lib:/usr/lib' rustc --crate-name build_script_build /Users/kirill/.cargo/git/checkouts/rust-secp256k1-089150aa740fd098/4ae0e7e/secp256k1-sys/build.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type bin --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --cfg 'feature="default"' --cfg 'feature="std"' -C metadata=b6c9174a25014874 -C extra-filename=-b6c9174a25014874 --out-dir /Users/kirill/projects/rust-secp256k1/target/debug/build/secp256k1-sys-b6c9174a25014874 -L dependency=/Users/kirill/projects/rust-secp256k1/target/debug/deps --extern cc=/Users/kirill/projects/rust-secp256k1/target/debug/deps/libcc-f2f685229e753d27.rlib --cap-lints warn`
     Running `/Users/kirill/projects/rust-secp256k1/target/debug/build/secp256k1-sys-b6c9174a25014874/build-script-build`
[secp256k1-sys 0.4.0] TARGET = Some("wasm32-unknown-unknown")
[secp256k1-sys 0.4.0] OPT_LEVEL = Some("0")
[secp256k1-sys 0.4.0] HOST = Some("aarch64-apple-darwin")
[secp256k1-sys 0.4.0] CC_wasm32-unknown-unknown = None
[secp256k1-sys 0.4.0] CC_wasm32_unknown_unknown = None
[secp256k1-sys 0.4.0] TARGET_CC = None
[secp256k1-sys 0.4.0] CC = None
[secp256k1-sys 0.4.0] CFLAGS_wasm32-unknown-unknown = None
[secp256k1-sys 0.4.0] CFLAGS_wasm32_unknown_unknown = None
[secp256k1-sys 0.4.0] TARGET_CFLAGS = None
[secp256k1-sys 0.4.0] CFLAGS = None
[secp256k1-sys 0.4.0] CRATE_CC_NO_DEFAULTS = None
[secp256k1-sys 0.4.0] DEBUG = Some("true")
[secp256k1-sys 0.4.0] CC_wasm32-unknown-unknown = None
[secp256k1-sys 0.4.0] CC_wasm32_unknown_unknown = None
[secp256k1-sys 0.4.0] TARGET_CC = None
[secp256k1-sys 0.4.0] CC = None
[secp256k1-sys 0.4.0] CFLAGS_wasm32-unknown-unknown = None
[secp256k1-sys 0.4.0] CFLAGS_wasm32_unknown_unknown = None
[secp256k1-sys 0.4.0] TARGET_CFLAGS = None
[secp256k1-sys 0.4.0] CFLAGS = None
[secp256k1-sys 0.4.0] CRATE_CC_NO_DEFAULTS = None
[secp256k1-sys 0.4.0] running: "clang" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "--target=wasm32-unknown-unknown" "-I" "depend/secp256k1/" "-I" "depend/secp256k1/include" "-I" "depend/secp256k1/src" "-I" "wasm-sysroot" "-Wall" "-Wextra" "-DSECP256K1_BUILD=1" "-DENABLE_MODULE_ECDH=1" "-DENABLE_MODULE_SCHNORRSIG=1" "-DENABLE_MODULE_EXTRAKEYS=1" "-DECMULT_GEN_PREC_BITS=4" "-DUSE_NUM_NONE=1" "-DUSE_FIELD_INV_BUILTIN=1" "-DUSE_SCALAR_INV_BUILTIN=1" "-DECMULT_WINDOW_SIZE=15" "-DUSE_EXTERNAL_DEFAULT_CALLBACKS=1" "-o" "/Users/kirill/projects/rust-secp256k1/target/wasm32-unknown-unknown/debug/build/secp256k1-sys-aba734166f0256f6/out/depend/secp256k1/contrib/lax_der_parsing.o" "-c" "depend/secp256k1/contrib/lax_der_parsing.c"
[secp256k1-sys 0.4.0] exit code: 0
[secp256k1-sys 0.4.0] running: "clang" "-O0" "-ffunction-sections" "-fdata-sections" "-fPIC" "-g" "-fno-omit-frame-pointer" "--target=wasm32-unknown-unknown" "-I" "depend/secp256k1/" "-I" "depend/secp256k1/include" "-I" "depend/secp256k1/src" "-I" "wasm-sysroot" "-Wall" "-Wextra" "-DSECP256K1_BUILD=1" "-DENABLE_MODULE_ECDH=1" "-DENABLE_MODULE_SCHNORRSIG=1" "-DENABLE_MODULE_EXTRAKEYS=1" "-DECMULT_GEN_PREC_BITS=4" "-DUSE_NUM_NONE=1" "-DUSE_FIELD_INV_BUILTIN=1" "-DUSE_SCALAR_INV_BUILTIN=1" "-DECMULT_WINDOW_SIZE=15" "-DUSE_EXTERNAL_DEFAULT_CALLBACKS=1" "-o" "/Users/kirill/projects/rust-secp256k1/target/wasm32-unknown-unknown/debug/build/secp256k1-sys-aba734166f0256f6/out/depend/secp256k1/src/secp256k1.o" "-c" "depend/secp256k1/src/secp256k1.c"
[secp256k1-sys 0.4.0] cargo:warning=In file included from depend/secp256k1/src/secp256k1.c:10:
[secp256k1-sys 0.4.0] cargo:warning=In file included from depend/secp256k1/src/assumptions.h:12:
[secp256k1-sys 0.4.0] cargo:warning=In file included from depend/secp256k1/src/util.h:16:
[secp256k1-sys 0.4.0] cargo:warning=wasm-sysroot/stdio.h:4:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
[secp256k1-sys 0.4.0] cargo:warning=extern const unsigned char WASM32_INT_SIZE = sizeof(int);
[secp256k1-sys 0.4.0] cargo:warning=                           ^
[secp256k1-sys 0.4.0] cargo:warning=wasm-sysroot/stdio.h:5:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
[secp256k1-sys 0.4.0] cargo:warning=extern const unsigned char WASM32_INT_ALIGN = alignof(int);
[secp256k1-sys 0.4.0] cargo:warning=                           ^
[secp256k1-sys 0.4.0] cargo:warning=wasm-sysroot/stdio.h:7:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
[secp256k1-sys 0.4.0] cargo:warning=extern const unsigned char WASM32_UNSIGNED_INT_SIZE = sizeof(unsigned int);
[secp256k1-sys 0.4.0] cargo:warning=                           ^
[secp256k1-sys 0.4.0] cargo:warning=wasm-sysroot/stdio.h:8:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
[secp256k1-sys 0.4.0] cargo:warning=extern const unsigned char WASM32_UNSIGNED_INT_ALIGN = alignof(unsigned int);
[secp256k1-sys 0.4.0] cargo:warning=                           ^
[secp256k1-sys 0.4.0] cargo:warning=wasm-sysroot/stdio.h:10:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
[secp256k1-sys 0.4.0] cargo:warning=extern const unsigned char WASM32_SIZE_T_SIZE = sizeof(size_t);
[secp256k1-sys 0.4.0] cargo:warning=                           ^
[secp256k1-sys 0.4.0] cargo:warning=wasm-sysroot/stdio.h:11:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
[secp256k1-sys 0.4.0] cargo:warning=extern const unsigned char WASM32_SIZE_T_ALIGN = alignof(size_t);
[secp256k1-sys 0.4.0] cargo:warning=                           ^
[secp256k1-sys 0.4.0] cargo:warning=wasm-sysroot/stdio.h:13:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
[secp256k1-sys 0.4.0] cargo:warning=extern const unsigned char WASM32_UNSIGNED_CHAR_SIZE = sizeof(unsigned char);
[secp256k1-sys 0.4.0] cargo:warning=                           ^
[secp256k1-sys 0.4.0] cargo:warning=wasm-sysroot/stdio.h:14:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
[secp256k1-sys 0.4.0] cargo:warning=extern const unsigned char WASM32_UNSIGNED_CHAR_ALIGN = alignof(unsigned char);
[secp256k1-sys 0.4.0] cargo:warning=                           ^
[secp256k1-sys 0.4.0] cargo:warning=wasm-sysroot/stdio.h:16:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
[secp256k1-sys 0.4.0] cargo:warning=extern const unsigned char WASM32_PTR_SIZE = sizeof(void*);
[secp256k1-sys 0.4.0] cargo:warning=                           ^
[secp256k1-sys 0.4.0] cargo:warning=wasm-sysroot/stdio.h:17:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
[secp256k1-sys 0.4.0] cargo:warning=extern const unsigned char WASM32_PTR_ALIGN = alignof(void*);
[secp256k1-sys 0.4.0] cargo:warning=                           ^
[secp256k1-sys 0.4.0] cargo:warning=In file included from depend/secp256k1/src/secp256k1.c:13:
[secp256k1-sys 0.4.0] cargo:warning=depend/secp256k1/src/field_impl.h:266:13: warning: unused function 'rustsecp256k1_v0_4_0_fe_inv_all_var' [-Wunused-function]
[secp256k1-sys 0.4.0] cargo:warning=static void rustsecp256k1_v0_4_0_fe_inv_all_var(rustsecp256k1_v0_4_0_fe *r, const rustsecp256k1_v0_4_0_fe *a, size_t len) {
[secp256k1-sys 0.4.0] cargo:warning=            ^
[secp256k1-sys 0.4.0] cargo:warning=In file included from depend/secp256k1/src/secp256k1.c:15:
[secp256k1-sys 0.4.0] cargo:warning=depend/secp256k1/src/group_impl.h:191:13: warning: unused function 'rustsecp256k1_v0_4_0_ge_set_infinity' [-Wunused-function]
[secp256k1-sys 0.4.0] cargo:warning=static void rustsecp256k1_v0_4_0_ge_set_infinity(rustsecp256k1_v0_4_0_ge *r) {
[secp256k1-sys 0.4.0] cargo:warning=            ^
[secp256k1-sys 0.4.0] cargo:warning=depend/secp256k1/src/group_impl.h:658:12: warning: unused function 'rustsecp256k1_v0_4_0_gej_has_quad_y_var' [-Wunused-function]
[secp256k1-sys 0.4.0] cargo:warning=static int rustsecp256k1_v0_4_0_gej_has_quad_y_var(const rustsecp256k1_v0_4_0_gej *a) {
[secp256k1-sys 0.4.0] cargo:warning=           ^
[secp256k1-sys 0.4.0] cargo:warning=In file included from depend/secp256k1/src/secp256k1.c:16:
[secp256k1-sys 0.4.0] cargo:warning=In file included from depend/secp256k1/src/ecmult_impl.h:16:
[secp256k1-sys 0.4.0] cargo:warning=In file included from depend/secp256k1/src/ecmult.h:13:
[secp256k1-sys 0.4.0] cargo:warning=depend/secp256k1/src/scratch.h:24:38: warning: unused function 'rustsecp256k1_v0_4_0_scratch_create' [-Wunused-function]
[secp256k1-sys 0.4.0] cargo:warning=static rustsecp256k1_v0_4_0_scratch* rustsecp256k1_v0_4_0_scratch_create(const rustsecp256k1_v0_4_0_callback* error_callback, size_t max_size);
[secp256k1-sys 0.4.0] cargo:warning=                                     ^
[secp256k1-sys 0.4.0] cargo:warning=depend/secp256k1/src/scratch.h:26:13: warning: unused function 'rustsecp256k1_v0_4_0_scratch_destroy' [-Wunused-function]
[secp256k1-sys 0.4.0] cargo:warning=static void rustsecp256k1_v0_4_0_scratch_destroy(const rustsecp256k1_v0_4_0_callback* error_callback, rustsecp256k1_v0_4_0_scratch* scratch);
[secp256k1-sys 0.4.0] cargo:warning=            ^
[secp256k1-sys 0.4.0] cargo:warning=In file included from depend/secp256k1/src/secp256k1.c:16:
[secp256k1-sys 0.4.0] cargo:warning=depend/secp256k1/src/ecmult_impl.h:1035:12: warning: unused function 'rustsecp256k1_v0_4_0_ecmult_multi_var' [-Wunused-function]
[secp256k1-sys 0.4.0] cargo:warning=static int rustsecp256k1_v0_4_0_ecmult_multi_var(const rustsecp256k1_v0_4_0_callback* error_callback, const rustsecp256k1_v0_4_0_ecmult_context *ctx, rustsecp256k1_v0_4_0_scratch *scratch, rustsecp256k1_v0_4_0_gej *r, const rustsecp256k1_v0_4_0_scalar *inp_g_sc, rustsecp256k1_v0_4_0_ecmult_multi_callback cb, void *cbdata, size_t n) {
[secp256k1-sys 0.4.0] cargo:warning=           ^
[secp256k1-sys 0.4.0] cargo:warning=depend/secp256k1/src/ecmult_impl.h:621:12: warning: unused function 'rustsecp256k1_v0_4_0_ecmult_strauss_batch_single' [-Wunused-function]
[secp256k1-sys 0.4.0] cargo:warning=static int rustsecp256k1_v0_4_0_ecmult_strauss_batch_single(const rustsecp256k1_v0_4_0_callback* error_callback, const rustsecp256k1_v0_4_0_ecmult_context *actx, rustsecp256k1_v0_4_0_scratch *scratch, rustsecp256k1_v0_4_0_gej *r, const rustsecp256k1_v0_4_0_scalar *inp_g_sc, rustsecp256k1_v0_4_0_ecmult_multi_callback cb, void *cbdata, size_t n) {
[secp256k1-sys 0.4.0] cargo:warning=           ^
[secp256k1-sys 0.4.0] cargo:warning=depend/secp256k1/src/ecmult_impl.h:863:15: warning: unused function 'rustsecp256k1_v0_4_0_pippenger_scratch_size' [-Wunused-function]
[secp256k1-sys 0.4.0] cargo:warning=static size_t rustsecp256k1_v0_4_0_pippenger_scratch_size(size_t n_points, int bucket_window) {
[secp256k1-sys 0.4.0] cargo:warning=              ^
[secp256k1-sys 0.4.0] cargo:warning=depend/secp256k1/src/ecmult_impl.h:944:12: warning: unused function 'rustsecp256k1_v0_4_0_ecmult_pippenger_batch_single' [-Wunused-function]
[secp256k1-sys 0.4.0] cargo:warning=static int rustsecp256k1_v0_4_0_ecmult_pippenger_batch_single(const rustsecp256k1_v0_4_0_callback* error_callback, const rustsecp256k1_v0_4_0_ecmult_context *actx, rustsecp256k1_v0_4_0_scratch *scratch, rustsecp256k1_v0_4_0_gej *r, const rustsecp256k1_v0_4_0_scalar *inp_g_sc, rustsecp256k1_v0_4_0_ecmult_multi_callback cb, void *cbdata, size_t n) {
[secp256k1-sys 0.4.0] cargo:warning=           ^
[secp256k1-sys 0.4.0] cargo:warning=19 warnings generated.
[secp256k1-sys 0.4.0] exit code: 0
[secp256k1-sys 0.4.0] AR_wasm32-unknown-unknown = None
[secp256k1-sys 0.4.0] AR_wasm32_unknown_unknown = None
[secp256k1-sys 0.4.0] TARGET_AR = None
[secp256k1-sys 0.4.0] AR = None
[secp256k1-sys 0.4.0] CROSS_COMPILE = None
[secp256k1-sys 0.4.0] running: "ar" "cq" "/Users/kirill/projects/rust-secp256k1/target/wasm32-unknown-unknown/debug/build/secp256k1-sys-aba734166f0256f6/out/libsecp256k1.a" "/Users/kirill/projects/rust-secp256k1/target/wasm32-unknown-unknown/debug/build/secp256k1-sys-aba734166f0256f6/out/depend/secp256k1/contrib/lax_der_parsing.o" "/Users/kirill/projects/rust-secp256k1/target/wasm32-unknown-unknown/debug/build/secp256k1-sys-aba734166f0256f6/out/depend/secp256k1/src/secp256k1.o"
[secp256k1-sys 0.4.0] exit code: 0
[secp256k1-sys 0.4.0] running: "ar" "s" "/Users/kirill/projects/rust-secp256k1/target/wasm32-unknown-unknown/debug/build/secp256k1-sys-aba734166f0256f6/out/libsecp256k1.a"
[secp256k1-sys 0.4.0] cargo:warning=warning: /Library/Developer/CommandLineTools/usr/bin/ranlib: archive library: /Users/kirill/projects/rust-secp256k1/target/wasm32-unknown-unknown/debug/build/secp256k1-sys-aba734166f0256f6/out/libsecp256k1.a the table of contents is empty (no object file members in the library define global symbols)
[secp256k1-sys 0.4.0] exit code: 0
[secp256k1-sys 0.4.0] cargo:rustc-link-lib=static=secp256k1
[secp256k1-sys 0.4.0] cargo:rustc-link-search=native=/Users/kirill/projects/rust-secp256k1/target/wasm32-unknown-unknown/debug/build/secp256k1-sys-aba734166f0256f6/out
warning: In file included from depend/secp256k1/src/secp256k1.c:10:
warning: In file included from depend/secp256k1/src/assumptions.h:12:
warning: In file included from depend/secp256k1/src/util.h:16:
warning: wasm-sysroot/stdio.h:4:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
warning: extern const unsigned char WASM32_INT_SIZE = sizeof(int);
warning:                            ^
warning: wasm-sysroot/stdio.h:5:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
warning: extern const unsigned char WASM32_INT_ALIGN = alignof(int);
warning:                            ^
warning: wasm-sysroot/stdio.h:7:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
warning: extern const unsigned char WASM32_UNSIGNED_INT_SIZE = sizeof(unsigned int);
warning:                            ^
warning: wasm-sysroot/stdio.h:8:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
warning: extern const unsigned char WASM32_UNSIGNED_INT_ALIGN = alignof(unsigned int);
warning:                            ^
warning: wasm-sysroot/stdio.h:10:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
warning: extern const unsigned char WASM32_SIZE_T_SIZE = sizeof(size_t);
warning:                            ^
warning: wasm-sysroot/stdio.h:11:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
warning: extern const unsigned char WASM32_SIZE_T_ALIGN = alignof(size_t);
warning:                            ^
warning: wasm-sysroot/stdio.h:13:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
warning: extern const unsigned char WASM32_UNSIGNED_CHAR_SIZE = sizeof(unsigned char);
warning:                            ^
warning: wasm-sysroot/stdio.h:14:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
warning: extern const unsigned char WASM32_UNSIGNED_CHAR_ALIGN = alignof(unsigned char);
warning:                            ^
warning: wasm-sysroot/stdio.h:16:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
warning: extern const unsigned char WASM32_PTR_SIZE = sizeof(void*);
warning:                            ^
warning: wasm-sysroot/stdio.h:17:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
warning: extern const unsigned char WASM32_PTR_ALIGN = alignof(void*);
warning:                            ^
warning: In file included from depend/secp256k1/src/secp256k1.c:13:
warning: depend/secp256k1/src/field_impl.h:266:13: warning: unused function 'rustsecp256k1_v0_4_0_fe_inv_all_var' [-Wunused-function]
warning: static void rustsecp256k1_v0_4_0_fe_inv_all_var(rustsecp256k1_v0_4_0_fe *r, const rustsecp256k1_v0_4_0_fe *a, size_t len) {
warning:             ^
warning: In file included from depend/secp256k1/src/secp256k1.c:15:
warning: depend/secp256k1/src/group_impl.h:191:13: warning: unused function 'rustsecp256k1_v0_4_0_ge_set_infinity' [-Wunused-function]
warning: static void rustsecp256k1_v0_4_0_ge_set_infinity(rustsecp256k1_v0_4_0_ge *r) {
warning:             ^
warning: depend/secp256k1/src/group_impl.h:658:12: warning: unused function 'rustsecp256k1_v0_4_0_gej_has_quad_y_var' [-Wunused-function]
warning: static int rustsecp256k1_v0_4_0_gej_has_quad_y_var(const rustsecp256k1_v0_4_0_gej *a) {
warning:            ^
warning: In file included from depend/secp256k1/src/secp256k1.c:16:
warning: In file included from depend/secp256k1/src/ecmult_impl.h:16:
warning: In file included from depend/secp256k1/src/ecmult.h:13:
warning: depend/secp256k1/src/scratch.h:24:38: warning: unused function 'rustsecp256k1_v0_4_0_scratch_create' [-Wunused-function]
warning: static rustsecp256k1_v0_4_0_scratch* rustsecp256k1_v0_4_0_scratch_create(const rustsecp256k1_v0_4_0_callback* error_callback, size_t max_size);
warning:                                      ^
warning: depend/secp256k1/src/scratch.h:26:13: warning: unused function 'rustsecp256k1_v0_4_0_scratch_destroy' [-Wunused-function]
warning: static void rustsecp256k1_v0_4_0_scratch_destroy(const rustsecp256k1_v0_4_0_callback* error_callback, rustsecp256k1_v0_4_0_scratch* scratch);
warning:             ^
warning: In file included from depend/secp256k1/src/secp256k1.c:16:
warning: depend/secp256k1/src/ecmult_impl.h:1035:12: warning: unused function 'rustsecp256k1_v0_4_0_ecmult_multi_var' [-Wunused-function]
warning: static int rustsecp256k1_v0_4_0_ecmult_multi_var(const rustsecp256k1_v0_4_0_callback* error_callback, const rustsecp256k1_v0_4_0_ecmult_context *ctx, rustsecp256k1_v0_4_0_scratch *scratch, rustsecp256k1_v0_4_0_gej *r, const rustsecp256k1_v0_4_0_scalar *inp_g_sc, rustsecp256k1_v0_4_0_ecmult_multi_callback cb, void *cbdata, size_t n) {
warning:            ^
warning: depend/secp256k1/src/ecmult_impl.h:621:12: warning: unused function 'rustsecp256k1_v0_4_0_ecmult_strauss_batch_single' [-Wunused-function]
warning: static int rustsecp256k1_v0_4_0_ecmult_strauss_batch_single(const rustsecp256k1_v0_4_0_callback* error_callback, const rustsecp256k1_v0_4_0_ecmult_context *actx, rustsecp256k1_v0_4_0_scratch *scratch, rustsecp256k1_v0_4_0_gej *r, const rustsecp256k1_v0_4_0_scalar *inp_g_sc, rustsecp256k1_v0_4_0_ecmult_multi_callback cb, void *cbdata, size_t n) {
warning:            ^
warning: depend/secp256k1/src/ecmult_impl.h:863:15: warning: unused function 'rustsecp256k1_v0_4_0_pippenger_scratch_size' [-Wunused-function]
warning: static size_t rustsecp256k1_v0_4_0_pippenger_scratch_size(size_t n_points, int bucket_window) {
warning:               ^
warning: depend/secp256k1/src/ecmult_impl.h:944:12: warning: unused function 'rustsecp256k1_v0_4_0_ecmult_pippenger_batch_single' [-Wunused-function]
warning: static int rustsecp256k1_v0_4_0_ecmult_pippenger_batch_single(const rustsecp256k1_v0_4_0_callback* error_callback, const rustsecp256k1_v0_4_0_ecmult_context *actx, rustsecp256k1_v0_4_0_scratch *scratch, rustsecp256k1_v0_4_0_gej *r, const rustsecp256k1_v0_4_0_scalar *inp_g_sc, rustsecp256k1_v0_4_0_ecmult_multi_callback cb, void *cbdata, size_t n) {
warning:            ^
warning: 19 warnings generated.
warning: warning: /Library/Developer/CommandLineTools/usr/bin/ranlib: archive library: /Users/kirill/projects/rust-secp256k1/target/wasm32-unknown-unknown/debug/build/secp256k1-sys-aba734166f0256f6/out/libsecp256k1.a the table of contents is empty (no object file members in the library define global symbols)
     Running `CARGO=/Users/kirill/.rustup/toolchains/nightly-aarch64-apple-darwin/bin/cargo CARGO_CRATE_NAME=secp256k1_sys CARGO_MANIFEST_DIR=/Users/kirill/.cargo/git/checkouts/rust-secp256k1-089150aa740fd098/4ae0e7e/secp256k1-sys CARGO_PKG_AUTHORS='Dawid Ciężarkiewicz <dpc@ucore.info>:Andrew Poelstra <apoelstra@wpsoftware.net>:Steven Roose <steven@stevenroose.org>' CARGO_PKG_DESCRIPTION='FFI for Pieter Wuille'\''s `libsecp256k1` library.' CARGO_PKG_HOMEPAGE='https://github.com/rust-bitcoin/rust-secp256k1/' CARGO_PKG_LICENSE=CC0-1.0 CARGO_PKG_LICENSE_FILE='' CARGO_PKG_NAME=secp256k1-sys CARGO_PKG_REPOSITORY='https://github.com/rust-bitcoin/rust-secp256k1/' CARGO_PKG_VERSION=0.4.0 CARGO_PKG_VERSION_MAJOR=0 CARGO_PKG_VERSION_MINOR=4 CARGO_PKG_VERSION_PATCH=0 CARGO_PKG_VERSION_PRE='' DYLD_FALLBACK_LIBRARY_PATH='/Users/kirill/projects/rust-secp256k1/target/debug/deps:/Users/kirill/.rustup/toolchains/nightly-aarch64-apple-darwin/lib:/Users/kirill/.rustup/toolchains/nightly-aarch64-apple-darwin/lib:/Users/kirill/lib:/usr/local/lib:/usr/lib' OUT_DIR=/Users/kirill/projects/rust-secp256k1/target/wasm32-unknown-unknown/debug/build/secp256k1-sys-aba734166f0256f6/out rustc --crate-name secp256k1_sys /Users/kirill/.cargo/git/checkouts/rust-secp256k1-089150aa740fd098/4ae0e7e/secp256k1-sys/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debuginfo=2 --cfg 'feature="default"' --cfg 'feature="std"' -C metadata=94f18f14a77d06f3 -C extra-filename=-94f18f14a77d06f3 --out-dir /Users/kirill/projects/rust-secp256k1/target/wasm32-unknown-unknown/debug/deps --target wasm32-unknown-unknown -L dependency=/Users/kirill/projects/rust-secp256k1/target/wasm32-unknown-unknown/debug/deps -L dependency=/Users/kirill/projects/rust-secp256k1/target/debug/deps --cap-lints warn -L native=/Users/kirill/projects/rust-secp256k1/target/wasm32-unknown-unknown/debug/build/secp256k1-sys-aba734166f0256f6/out -l static=secp256k1`
error: failed to build archive: section too large

error: aborting due to previous error

The following warnings were emitted during compilation:

warning: In file included from depend/secp256k1/src/secp256k1.c:10:
warning: In file included from depend/secp256k1/src/assumptions.h:12:
warning: In file included from depend/secp256k1/src/util.h:16:
warning: wasm-sysroot/stdio.h:4:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
warning: extern const unsigned char WASM32_INT_SIZE = sizeof(int);
warning:                            ^
warning: wasm-sysroot/stdio.h:5:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
warning: extern const unsigned char WASM32_INT_ALIGN = alignof(int);
warning:                            ^
warning: wasm-sysroot/stdio.h:7:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
warning: extern const unsigned char WASM32_UNSIGNED_INT_SIZE = sizeof(unsigned int);
warning:                            ^
warning: wasm-sysroot/stdio.h:8:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
warning: extern const unsigned char WASM32_UNSIGNED_INT_ALIGN = alignof(unsigned int);
warning:                            ^
warning: wasm-sysroot/stdio.h:10:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
warning: extern const unsigned char WASM32_SIZE_T_SIZE = sizeof(size_t);
warning:                            ^
warning: wasm-sysroot/stdio.h:11:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
warning: extern const unsigned char WASM32_SIZE_T_ALIGN = alignof(size_t);
warning:                            ^
warning: wasm-sysroot/stdio.h:13:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
warning: extern const unsigned char WASM32_UNSIGNED_CHAR_SIZE = sizeof(unsigned char);
warning:                            ^
warning: wasm-sysroot/stdio.h:14:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
warning: extern const unsigned char WASM32_UNSIGNED_CHAR_ALIGN = alignof(unsigned char);
warning:                            ^
warning: wasm-sysroot/stdio.h:16:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
warning: extern const unsigned char WASM32_PTR_SIZE = sizeof(void*);
warning:                            ^
warning: wasm-sysroot/stdio.h:17:28: warning: 'extern' variable has an initializer [-Wextern-initializer]
warning: extern const unsigned char WASM32_PTR_ALIGN = alignof(void*);
warning:                            ^
warning: In file included from depend/secp256k1/src/secp256k1.c:13:
warning: depend/secp256k1/src/field_impl.h:266:13: warning: unused function 'rustsecp256k1_v0_4_0_fe_inv_all_var' [-Wunused-function]
warning: static void rustsecp256k1_v0_4_0_fe_inv_all_var(rustsecp256k1_v0_4_0_fe *r, const rustsecp256k1_v0_4_0_fe *a, size_t len) {
warning:             ^
warning: In file included from depend/secp256k1/src/secp256k1.c:15:
warning: depend/secp256k1/src/group_impl.h:191:13: warning: unused function 'rustsecp256k1_v0_4_0_ge_set_infinity' [-Wunused-function]
warning: static void rustsecp256k1_v0_4_0_ge_set_infinity(rustsecp256k1_v0_4_0_ge *r) {
warning:             ^
warning: depend/secp256k1/src/group_impl.h:658:12: warning: unused function 'rustsecp256k1_v0_4_0_gej_has_quad_y_var' [-Wunused-function]
warning: static int rustsecp256k1_v0_4_0_gej_has_quad_y_var(const rustsecp256k1_v0_4_0_gej *a) {
warning:            ^
warning: In file included from depend/secp256k1/src/secp256k1.c:16:
warning: In file included from depend/secp256k1/src/ecmult_impl.h:16:
warning: In file included from depend/secp256k1/src/ecmult.h:13:
warning: depend/secp256k1/src/scratch.h:24:38: warning: unused function 'rustsecp256k1_v0_4_0_scratch_create' [-Wunused-function]
warning: static rustsecp256k1_v0_4_0_scratch* rustsecp256k1_v0_4_0_scratch_create(const rustsecp256k1_v0_4_0_callback* error_callback, size_t max_size);
warning:                                      ^
warning: depend/secp256k1/src/scratch.h:26:13: warning: unused function 'rustsecp256k1_v0_4_0_scratch_destroy' [-Wunused-function]
warning: static void rustsecp256k1_v0_4_0_scratch_destroy(const rustsecp256k1_v0_4_0_callback* error_callback, rustsecp256k1_v0_4_0_scratch* scratch);
warning:             ^
warning: In file included from depend/secp256k1/src/secp256k1.c:16:
warning: depend/secp256k1/src/ecmult_impl.h:1035:12: warning: unused function 'rustsecp256k1_v0_4_0_ecmult_multi_var' [-Wunused-function]
warning: static int rustsecp256k1_v0_4_0_ecmult_multi_var(const rustsecp256k1_v0_4_0_callback* error_callback, const rustsecp256k1_v0_4_0_ecmult_context *ctx, rustsecp256k1_v0_4_0_scratch *scratch, rustsecp256k1_v0_4_0_gej *r, const rustsecp256k1_v0_4_0_scalar *inp_g_sc, rustsecp256k1_v0_4_0_ecmult_multi_callback cb, void *cbdata, size_t n) {
warning:            ^
warning: depend/secp256k1/src/ecmult_impl.h:621:12: warning: unused function 'rustsecp256k1_v0_4_0_ecmult_strauss_batch_single' [-Wunused-function]
warning: static int rustsecp256k1_v0_4_0_ecmult_strauss_batch_single(const rustsecp256k1_v0_4_0_callback* error_callback, const rustsecp256k1_v0_4_0_ecmult_context *actx, rustsecp256k1_v0_4_0_scratch *scratch, rustsecp256k1_v0_4_0_gej *r, const rustsecp256k1_v0_4_0_scalar *inp_g_sc, rustsecp256k1_v0_4_0_ecmult_multi_callback cb, void *cbdata, size_t n) {
warning:            ^
warning: depend/secp256k1/src/ecmult_impl.h:863:15: warning: unused function 'rustsecp256k1_v0_4_0_pippenger_scratch_size' [-Wunused-function]
warning: static size_t rustsecp256k1_v0_4_0_pippenger_scratch_size(size_t n_points, int bucket_window) {
warning:               ^
warning: depend/secp256k1/src/ecmult_impl.h:944:12: warning: unused function 'rustsecp256k1_v0_4_0_ecmult_pippenger_batch_single' [-Wunused-function]
warning: static int rustsecp256k1_v0_4_0_ecmult_pippenger_batch_single(const rustsecp256k1_v0_4_0_callback* error_callback, const rustsecp256k1_v0_4_0_ecmult_context *actx, rustsecp256k1_v0_4_0_scratch *scratch, rustsecp256k1_v0_4_0_gej *r, const rustsecp256k1_v0_4_0_scalar *inp_g_sc, rustsecp256k1_v0_4_0_ecmult_multi_callback cb, void *cbdata, size_t n) {
warning:            ^
warning: 19 warnings generated.
warning: warning: /Library/Developer/CommandLineTools/usr/bin/ranlib: archive library: /Users/kirill/projects/rust-secp256k1/target/wasm32-unknown-unknown/debug/build/secp256k1-sys-aba734166f0256f6/out/libsecp256k1.a the table of contents is empty (no object file members in the library define global symbols)

error: could not compile `secp256k1-sys`

Caused by:
  process didn't exit successfully: `CARGO=/Users/kirill/.rustup/toolchains/nightly-aarch64-apple-darwin/bin/cargo CARGO_CRATE_NAME=secp256k1_sys CARGO_MANIFEST_DIR=/Users/kirill/.cargo/git/checkouts/rust-secp256k1-089150aa740fd098/4ae0e7e/secp256k1-sys CARGO_PKG_AUTHORS='Dawid Ciężarkiewicz <dpc@ucore.info>:Andrew Poelstra <apoelstra@wpsoftware.net>:Steven Roose <steven@stevenroose.org>' CARGO_PKG_DESCRIPTION='FFI for Pieter Wuille'\''s `libsecp256k1` library.' CARGO_PKG_HOMEPAGE='https://github.com/rust-bitcoin/rust-secp256k1/' CARGO_PKG_LICENSE=CC0-1.0 CARGO_PKG_LICENSE_FILE='' CARGO_PKG_NAME=secp256k1-sys CARGO_PKG_REPOSITORY='https://github.com/rust-bitcoin/rust-secp256k1/' CARGO_PKG_VERSION=0.4.0 CARGO_PKG_VERSION_MAJOR=0 CARGO_PKG_VERSION_MINOR=4 CARGO_PKG_VERSION_PATCH=0 CARGO_PKG_VERSION_PRE='' DYLD_FALLBACK_LIBRARY_PATH='/Users/kirill/projects/rust-secp256k1/target/debug/deps:/Users/kirill/.rustup/toolchains/nightly-aarch64-apple-darwin/lib:/Users/kirill/.rustup/toolchains/nightly-aarch64-apple-darwin/lib:/Users/kirill/lib:/usr/local/lib:/usr/lib' OUT_DIR=/Users/kirill/projects/rust-secp256k1/target/wasm32-unknown-unknown/debug/build/secp256k1-sys-aba734166f0256f6/out rustc --crate-name secp256k1_sys /Users/kirill/.cargo/git/checkouts/rust-secp256k1-089150aa740fd098/4ae0e7e/secp256k1-sys/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debuginfo=2 --cfg 'feature="default"' --cfg 'feature="std"' -C metadata=94f18f14a77d06f3 -C extra-filename=-94f18f14a77d06f3 --out-dir /Users/kirill/projects/rust-secp256k1/target/wasm32-unknown-unknown/debug/deps --target wasm32-unknown-unknown -L dependency=/Users/kirill/projects/rust-secp256k1/target/wasm32-unknown-unknown/debug/deps -L dependency=/Users/kirill/projects/rust-secp256k1/target/debug/deps --cap-lints warn -L native=/Users/kirill/projects/rust-secp256k1/target/wasm32-unknown-unknown/debug/build/secp256k1-sys-aba734166f0256f6/out -l static=secp256k1` (exit code: 1)

@atylee29
Copy link

I have the same compilation error on a 2015 Macbook Pro on Catalina 10.15. So this may not be an M1-specific issue

@elichai
Copy link
Member

elichai commented May 31, 2021

I have the same compilation error on a 2015 Macbook Pro on Catalina 10.15. So this may not be an M1-specific issue

Are you also targetting webassembly? can you show the output of the compilation?

FWIWI I just ran cargo test successfully on a Macbook Pro 2019 with Big Sur 11.4.

@atylee29
Copy link

Unfortunately I changed my rustup config and now cannot reproduce the section too large issue. I was trying out BTC-Parachain when I encountered the issue. Now, instead, I get No available targets are compatible with triple "wasm32-unknown-unknown" when I cargo build the whole project, even though building/testing the crate that uses secp256k1 separately works.

@trevyn
Copy link

trevyn commented Aug 2, 2021

No available targets are compatible with triple "wasm32-unknown-unknown"

FWIW, I believe Apple clang does not support wasm targets and produces this message; using Homebrew clang (brew install llvm and putting it in the PATH) resolves this for me, but now I'm hitting the failed to build archive: section too large error (in a different wasm project, on M1, which is what brought me here...)

Note that it's possible to run the x86_64 toolchain on M1:

arch -x86_64 /bin/bash -c "$(curl -fsSL https://github.com/raw/Homebrew/install/master/install.sh)"
arch -x86_64 /usr/local/bin/brew install llvm
export PATH="/usr/local/opt/llvm/bin:$PATH"

This still gives me failed to build archive: section too large though.

@thomaseizinger
Copy link
Contributor

See #254.

You will also need to override the archiver that is being used (AR env variable)!

@bnonni
Copy link

bnonni commented Nov 3, 2021

I don't have an M1 chip, I'm running BigSur 11.6 and I get this error. I've tried everything on this thread, but I still get the error: failed to build archive: section too large error. Anyone have any help or guidance?

For context, I've installed llvm and I have the following in my .zshrc:

export PATH="/usr/local/opt/llvm/bin/:$PATH"
export CC=/usr/local/opt/llvm/bin/clang
export AR=/usr/local/opt/llvm/bin/llvm-ar

Versioning outputs:

% /usr/local/opt/llvm/bin/clang --version
Homebrew clang version 13.0.0
Target: x86_64-apple-darwin20.6.0
Thread model: posix
InstalledDir: /usr/local/opt/llvm/bin

% /usr/local/opt/llvm/bin/llvm-ar --version 
Homebrew LLVM version 13.0.0
  Optimized build.
  Default target: x86_64-apple-darwin20.6.0
  Host CPU: skylake

@Bargsteen
Copy link

No available targets are compatible with triple "wasm32-unknown-unknown"

FWIW, I believe Apple clang does not support wasm targets and produces this message; using Homebrew clang (brew install llvm and putting it in the PATH) resolves this for me, but now I'm hitting the failed to build archive: section too large error (in a different wasm project, on M1, which is what brought me here...)

Note that it's possible to run the x86_64 toolchain on M1:

arch -x86_64 /bin/bash -c "$(curl -fsSL https://github.com/raw/Homebrew/install/master/install.sh)"
arch -x86_64 /usr/local/bin/brew install llvm
export PATH="/usr/local/opt/llvm/bin:$PATH"

This still gives me failed to build archive: section too large though.

I am getting these two errors (no available targets.. with system clang and section too large with brew's clang) on an intel machine running macOS 12.1. Did you ever get around the issue?

@aewc
Copy link

aewc commented Aug 1, 2022

I get the same error at first, then I get true path:

which llvm-ar
/opt/homebrew/opt/llvm/bin/llvm-ar

which clang
/opt/homebrew/opt/llvm/bin/clang

But after I set both, I failed too:

AR=/opt/homebrew/opt/llvm/bin/llvm-ar CC=/opt/homebrew/opt/llvm/bin/clang cargo build --release --target wasm32-unknown-unknown

run cargo clean first will make compile success:

cargo clean

AR=/opt/homebrew/opt/llvm/bin/llvm-ar CC=/opt/homebrew/opt/llvm/bin/clang cargo build --release --target wasm32-unknown-unknown

@wilfredjonathanjames
Copy link

@aewc worked for me. Thanks!

@justinmoon
Copy link
Contributor

Thanks @aewc. That worked for me, too.

@justinmoon
Copy link
Contributor

justinmoon commented Sep 21, 2022

If it helps, this pr produces there error with a Nix flake so that should hopefully be reproducible.

@luca992
Copy link

luca992 commented Jun 14, 2023

I get the same error at first, then I get true path:

which llvm-ar
/opt/homebrew/opt/llvm/bin/llvm-ar

which clang
/opt/homebrew/opt/llvm/bin/clang

But after I set both, I failed too:

AR=/opt/homebrew/opt/llvm/bin/llvm-ar CC=/opt/homebrew/opt/llvm/bin/clang cargo build --release --target wasm32-unknown-unknown

run cargo clean first will make compile success:

cargo clean

AR=/opt/homebrew/opt/llvm/bin/llvm-ar CC=/opt/homebrew/opt/llvm/bin/clang cargo build --release --target wasm32-unknown-unknown

For others, you can also add AR and CC to your path on mac like this without having to include it in the cargo build command:

echo 'export AR=/opt/homebrew/opt/llvm/bin/llvm-ar' >> ~/.zshrc
echo 'export CC=/opt/homebrew/opt/llvm/bin/clang' >> ~/.zshrc

restart your terminal after adding these to ~/.zshrc

@dandanlen
Copy link

☝️ This worked for me, thanks!

For new readers, in case you don't want to add those variables to your shell environment, you can also add it to the cargo build environment, either in the $PROJECT/.cargo/config.toml, or in your $HOME/.cargo/config.toml:

[env]
AR = "/opt/homebrew/opt/llvm/bin/llvm-ar"
CC = "/opt/homebrew/opt/llvm/bin/clang"

@emlanis
Copy link

emlanis commented Jan 25, 2024

While trying to run make build-mainnet

I got the following errors:

RUSTFLAGS='-C link-arg=-s' cargo build --release --target wasm32-unknown-unknown
warning: output filename collision.

So it is file name collision warning... Still getting this again:

The bin target secret_encryption in package secret_encryption v0.1.0 (/Users/emlanis/examples/EVM-encrypt-decrypt/secret_network) has the same output filename as the lib target secret_encryption in package secret_encryption v0.1.0 (/Users/emlanis/examples/EVM-encrypt-decrypt/secret_network).

And this is the Colliding filename: /Users/emlanis/examples/EVM-encrypt-decrypt/secret_network/target/wasm32-unknown-unknown/release/secret_encryption.wasm

And it is saying the targets should have unique names.

And this is the suggestion:
Consider changing their names to be unique or compiling them separately.
This may become a hard error in the future; see rust-lang/cargo#6313.

After that, I still encountered other error messages such as:

error: failed to run custom build command for secp256k1-sys v0.1.2 (https://github.com/scrtlabs/rust-secp256k1#0782872f)

Caused by:
process didn't exit successfully: /Users/emlanis/examples/EVM-encrypt-decrypt/secret_network/target/release/build/secp256k1-sys-f15c9ab598c99094/build-script-build (exit status: 1)
--- stdout

So this is basically a secp256k1-sys error. I need help sorting it out. See more output info for that error:

TARGET = Some("wasm32-unknown-unknown")
OPT_LEVEL = Some("3")
HOST = Some("x86_64-apple-darwin")
CC_wasm32-unknown-unknown = None
CC_wasm32_unknown_unknown = None
TARGET_CC = None
CC = Some("/opt/homebrew/opt/llvm/bin/clang")
CFLAGS_wasm32-unknown-unknown = None
CFLAGS_wasm32_unknown_unknown = None
TARGET_CFLAGS = None
CFLAGS = None
CRATE_CC_NO_DEFAULTS = None
DEBUG = Some("false")
CC_wasm32-unknown-unknown = None
CC_wasm32_unknown_unknown = None
TARGET_CC = None
CC = Some("/opt/homebrew/opt/llvm/bin/clang")
CFLAGS_wasm32-unknown-unknown = None
CFLAGS_wasm32_unknown_unknown = None
TARGET_CFLAGS = None
CFLAGS = None
CRATE_CC_NO_DEFAULTS = None
running: "/opt/homebrew/opt/llvm/bin/clang" "-O3" "-ffunction-sections" "-fdata-sections" "-fPIC" "--target=wasm32-unknown-unknown" "-I" "depend/secp256k1/" "-I" "depend/secp256k1/include" "-I" "depend/secp256k1/src" "-I" "wasm-sysroot" "-Wall" "-Wextra" "-DSECP256K1_BUILD=1" "-DUSE_NUM_NONE=1" "-DUSE_FIELD_INV_BUILTIN=1" "-DUSE_SCALAR_INV_BUILTIN=1" "-DENABLE_MODULE_ECDH=1" "-DECMULT_WINDOW_SIZE=15" "-DUSE_EXTERNAL_DEFAULT_CALLBACKS=1" "-DUSE_FIELD_10X26=1" "-DUSE_SCALAR_8X32=1" "-o" "/Users/emlanis/examples/EVM-encrypt-decrypt/secret_network/target/wasm32-unknown-unknown/release/build/secp256k1-sys-e94a74f7440dcb3a/out/depend/secp256k1/contrib/lax_der_parsing.o" "-c" "depend/secp256k1/contrib/lax_der_parsing.c"

--- stderr

This is the finally error message I received:

error occurred: Failed to find tool. Is clang installed?

Obviously a clang error.

I'm stuck at this stage towards compiling a contract and I desperately need help sorting it out.

Note that I tried all the solutions above without success. I'm using MacBook Air 2020 MacOs Sonoma 14.2.1

@Kixunil
Copy link
Collaborator

Kixunil commented Jan 25, 2024

@emlanis I'm not really convinced the duplicate is related to this library. Can you try compiling secp256k1 only, with no other dependencies to make sure it's really broken?

@emlanis
Copy link

emlanis commented Jan 26, 2024

@emlanis I'm not really convinced the duplicate is related to this library. Can you try compiling secp256k1 only, with no other dependencies to make sure it's really broken?

That's an interesting take from you. I'm now left with the 'secp256k1' error only. So this is what I got returned after trying to compile again:

" error: failed to select a version for secp256k1-sys.
... required by package secp256k1 v0.17.2 (https://github.com/scrtlabs/rust-secp256k1#0782872f)
... which satisfies git dependency secp256k1 (locked to 0.17.2) of package secret_encryption v0.1.0 (/Users/emlanis/examples/EVM-encrypt-decrypt/secret_network)
versions that meet the requirements ^0.1.1 (locked to 0.1.2) are: 0.1.2

the package secp256k1-sys links to the native library rustsecp256k1_v0_1_1, but it conflicts with a previous package which links to rustsecp256k1_v0_1_1 as well:
package secp256k1-sys v0.1.2
... which satisfies dependency secp256k1-sys = "^0.1.2" of package secret_encryption v0.1.0 (/Users/emlanis/examples/EVM-encrypt-decrypt/secret_network)
Only one package in the dependency graph may specify the same links value. This helps ensure that only one copy of a native library is linked in the final binary. Try to adjust your dependencies so that only one package uses the links ='secp256k1-sys' value. For more information, see https://doc.rust-lang.org/cargo/reference/resolver.html#links.

failed to select a version for secp256k1-sys which could resolve this conflict
make: *** [_build-mainnet] Error 101 "

Is there anyway you can help sort this out finally?

@apoelstra
Copy link
Member

secp256k1-sys 0.1is from 2019, before we figured out how best to handle linking issues with multiple versions of libsecp (and possibly before we had compiler support for our actual solution). The latest version is 0.9.2.

I'm afraid if you're going to use ancient versions from near the start of this project, we won't be able to help you.

@emlanis
Copy link

emlanis commented Jan 26, 2024

secp256k1-sys 0.1is from 2019, before we figured out how best to handle linking issues with multiple versions of libsecp (and possibly before we had compiler support for our actual solution). The latest version is 0.9.2.

I'm afraid if you're going to use ancient versions from near the start of this project, we won't be able to help you.

So what do you think I should do in order to move past this bug?

@Kixunil
Copy link
Collaborator

Kixunil commented Jan 26, 2024

Upgrade the library, obviously.

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