mymonero / mymonero-core-js

The JS library containing the Monero crypto plus lightwallet functions behind the official MyMonero apps
BSD 3-Clause "New" or "Revised" License
102 stars 103 forks source link

./bin/build-emcpp.sh fail with : :ERROR: Targeting asm.js with --separate-asm and -s MODULARIZE=1 requires specifying the target variable name #96

Open ang-st opened 5 years ago

ang-st commented 5 years ago
[ 50%] Built target MyMoneroCoreCpp_WASM
[ 51%] Linking CXX executable MyMoneroCoreCpp_ASMJS.js
shared:DEBUG: EM_CONFIG is located in /home/ang-st/.emscripten
shared:DEBUG: TEMP_DIR not defined in /home/ang-st/.emscripten, using /tmp
shared:DEBUG: PYTHON not defined in /home/ang-st/.emscripten, using "/usr/bin/python"
shared:DEBUG: JAVA not defined in /home/ang-st/.emscripten, using "java"
cache:DEBUG: PID 28824 acquiring multiprocess file lock to Emscripten cache at /home/ang-st/.emscripten_cache
cache:DEBUG: done
cache:DEBUG: PID 28824 released multiprocess file lock to Emscripten cache at /home/ang-st/.emscripten_cache
shared:DEBUG: check tells us to use asm.js backend
emcc:WARNING: invocation: /home/ang-st/code/bc-gw/bc-gw/monero-playground/emsdk/emscripten/1.38.30/emcc.py -std=c++11 -Wall -std=c++11 --bind -s MODULARIZE=1 -s EXPORT_NAME="MyMoneroCoreCpp" --llvm-lto 1 -s ERROR_ON_UNDEFINED_SYMBOLS=0 -s ASSERTIONS=2 -s EXIT_RUNTIME=0 -s BINARYEN_TRAP_MODE='clamp' -s PRECISE_F32=1 -s DISABLE_EXCEPTION_CATCHING=0 -s EXCEPTION_DEBUG=1 -s DEMANGLE_SUPPORT=1 -s NO_DYNAMIC_EXECUTION=1 -s NODEJS_CATCH_EXIT=0 -s EXTRA_EXPORTED_RUNTIME_METHODS=["UTF8ToString"] -s WASM=0 -Os --separate-asm -s AGGRESSIVE_VARIABLE_ELIMINATION=1 -s ALLOW_MEMORY_GROWTH=0 --memory-init-file 0 @CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/objects1.rsp -o MyMoneroCoreCpp_ASMJS.js @CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/linklibs.rsp --emscripten-cxx  (in /home/ang-st/code/bc-gw/bc-gw/monero-playground/mymonero-core-js/build)
root:WARNING: Read response file CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/objects1.rsp: ['CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/index.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/emscr_async_send_bridge.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/src/monero_address_utils.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/src/monero_paymentID_utils.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/src/monero_key_image_utils.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/src/monero_fee_utils.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/src/monero_transfer_utils.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/src/monero_fork_rules.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/src/monero_wallet_utils.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/src/serial_bridge_index.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/src/monero_send_routine.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/src/serial_bridge_utils.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/src/tools__ret_vals.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/cryptonote_basic/cryptonote_basic_impl.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/cryptonote_basic/account.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/cryptonote_basic/cryptonote_format_utils.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/crypto.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/hash.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/slow-hash-dummied.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/oaes_lib.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/crypto-ops.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/crypto-ops-data.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/keccak.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/chacha.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/random.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/aesb.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/tree-hash.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/hash-extra-blake.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/blake256.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/hash-extra-groestl.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/hash-extra-jh.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/hash-extra-skein.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/groestl.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/jh.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/crypto/skein.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/cryptonote_core/cryptonote_tx_utils.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/common/base58.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/common/threadpool.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/common/aligned.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/common/util.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/epee/src/hex.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/epee/src/string_tools.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/epee/src/memwipe.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/epee/src/mlocker.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/epee/src/wipeable_string.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/device/device.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/device/device_default.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/ringct/rctOps.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/ringct/rctTypes.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/ringct/rctCryptoOps.c.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/ringct/rctSigs.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/ringct/bulletproofs.cc.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/ringct/multiexp.cc.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/mnemonics/electrum-words.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/vtlogger/logger.cpp.o', 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/src/submodules/mymonero-core-cpp/contrib/monero-core-custom/contrib/libsodium/src/crypto_verify/verify.c.o']
root:WARNING: Read response file CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/linklibs.rsp: ['boost/lib/libboost_chrono.a', 'boost/lib/libboost_system.a', 'boost/lib/libboost_thread.a']
shared:DEBUG: successfully executed /home/ang-st/code/bc-gw/bc-gw/monero-playground/emsdk/clang/e1.38.30_64bit/clang++ --version
root:DEBUG: Checking JS engine ['/home/ang-st/code/bc-gw/bc-gw/monero-playground/emsdk/node/8.9.1_64bit/bin/node']
shared:DEBUG: successfully executed /home/ang-st/code/bc-gw/bc-gw/monero-playground/emsdk/node/8.9.1_64bit/bin/node --version
shared:DEBUG: successfully executed /home/ang-st/code/bc-gw/bc-gw/monero-playground/emsdk/clang/e1.38.30_64bit/llc --version
shared:DEBUG: successfully executed /home/ang-st/code/bc-gw/bc-gw/monero-playground/emsdk/clang/e1.38.30_64bit/clang++ --version
shared:INFO: (Emscripten: Running sanity checks)
shared:WARNING: java does not seem to exist, required for closure compiler, which is optional (define JAVA in /home/ang-st/.emscripten if you want it)
shared:WARNING: closure compiler will not be available
shared:WARNING: --separate-asm works best when compiling to HTML. Otherwise, you must yourself load the '.asm.js' file that is emitted separately, and must do so before loading the main '.js' file. [-Wseparate-asm]
shared:ERROR: Targeting asm.js with --separate-asm and -s MODULARIZE=1 requires specifying the target variable name to which the asm.js module is loaded into. See https://github.com/emscripten-core/emscripten/pull/7949 for details
CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/build.make:1585: recipe for target 'MyMoneroCoreCpp_ASMJS.js' failed
make[2]: *** [MyMoneroCoreCpp_ASMJS.js] Error 1
CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/all' failed
make[1]: *** [CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
shared:DEBUG: executed cmake --build .
ang-st commented 5 years ago

I ended to pass through this error by adding an extra flag -s SEPARATE_ASM_MODULE_NAME=xxx

like :

 /home/ang-st/code/bc-gw/bc-gw/monero-playground/emsdk/emscripten/1.38.30/emcc.py -std=c++11 -Wall -std=c++11 --bind -s MODULARIZE=1 -s EXPORT_NAME=MyMoneroCoreCpp --llvm-lto 1 -s ERROR_ON_UNDEFINED_SYMBOLS=0 -s ASSERTIONS=2 -s EXIT_RUNTIME=0 -s BINARYEN_TRAP_MODE='clamp' -s PRECISE_F32=1 -s DISABLE_EXCEPTION_CATCHING=0 -s EXCEPTION_DEBUG=1 -s DEMANGLE_SUPPORT=1 -s NO_DYNAMIC_EXECUTION=1 -s NODEJS_CATCH_EXIT=0 -s EXTRA_EXPORTED_RUNTIME_METHODS=\["UTF8ToString"\] -s WASM=0 -Os --separate-asm -s AGGRESSIVE_VARIABLE_ELIMINATION=1 -s ALLOW_MEMORY_GROWTH=0 --memory-init-file 0 @CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/objects1.rsp -o MyMoneroCoreCpp_ASMJS.js @CMakeFiles/MyMoneroCoreCpp_ASMJS.dir/linklibs.rsp --emscripten-cxx  -s SEPARATE_ASM_MODULE_NAME=xxx
shared:WARNING: --separate-asm works best when compiling to HTML. Otherwise, you must yourself load the '.asm.js' file that is emitted separately, and must do so before loading the main '.js' file. [-Wseparate-asm]
warning: undefined symbol: err
paulshapiro commented 5 years ago

What version of emscripten are you using? What version did they add SEPARATE_ASM_MODULE_NAME?

Your build log indicates some irregularities as well, but none of them seem overtly impactful, though they could be another good starting place to look.

ang-st commented 5 years ago

The error message mention https://github.com/emscripten-core/emscripten/pull/7949 I'm using the latest release : emscripten 1.38.30

what version is known to successfully build the repo ?

italocoin-project commented 5 years ago

It works until emscripten 1.38.21

ang-st commented 5 years ago

Awesome ! It built successfully from master with https://github.com/mymonero/mymonero-core-js/pull/97 merged. Thanks

moneroexamples commented 5 years ago

Same issue. Removing the line from cmake makes it compile: https://github.com/mymonero/mymonero-core-js/blob/2d072e00dbfc975761a542960e5b99d00ed2b3a3/CMakeLists.txt#L166

italocoin-project commented 5 years ago

@moneroexamples what version of emscripten you have? I've tested it with latest and works perfectly

moneroexamples commented 5 years ago

@italocoin-project

38.16.

italocoin-project commented 5 years ago

It works on my end, did you tried on a clean environment? Maybe some cache issue?

moneroexamples commented 5 years ago

@italocoin-project Haven't tried much really. Just made it compile by removing the said line and I moved to other things. Also made note of this in this issue for completeness. Maybe later will try on the newest version of emsdk, as I see now that mine is not the latest one.

italocoin-project commented 5 years ago

This fix is needed for newest emsdk. From emscripten 1.38.30 above, you need this fix

moneroexamples commented 5 years ago

Just upgraded to 38.30 and it works fine.