Does emsdk support installation on the openEuler 22.03 distribution
Opened this issue · 9 comments
openEuler 22.03
gcc version 10.3.1 (GCC)
ldd (GNU libc) 2.34
does emsdk support installation ?
Since openEuler is just a linux distro (as far as I can tell) you should be able to simply install emsdk. Have you tried?
i have tried ,and An error occurred during compilation,libatomic.so.a:cannot open shared object file
#25242
there is another issue. After I executed these two commands(python embuilder.py build ALL,,FROZEN_CACHE = True in .emscripten), an error occurred during compile:raise exception attempt to lock the cache but FROZEN_CACHE is set.
so is the cache directory not set correctly? Do I need to set the cache directory?
I installed emsdk from an internet-connected environment and copied the entire emsdk folder to an internet-disconnected environment. However, it triggered the sanity check mechanism and deleted all the contents in the cache。
shared:INFO: old sanity: 4.0.14|/home/yff/emsdkV4.0.14/emsdk/upstream/bin shared:INFO: new sanity: 4.0.14|/opt2/emsdk/emsdkV4.0.14/upstream/bin shared:INFO: (Emscripten: config changed, clearing cache)
i have tried ,and An error occurred during compilation,libatomic.so.a:cannot open shared object file
Which compilation was this? Compilation of emsdk? LLVM? Binaryen? Your Wasm code? Maybe sharing more detailed logs around the error, and command line, can help.
I executed these two commands(python embuilder.py build ALL,,FROZEN_CACHE = True in .emscripten), an error occurred during compile:raise exception attempt to lock the cache but FROZEN_CACHE is set.
so is the cache directory not set correctly? Do I need to set the cache directory?
This to me reads like a bug. I posted #25259 to help troubleshoot this error message. It won't fix the problem, but will hopefully give info on why that is happening. If you want to apply that locally, it should help troubleshoot what code flow/call site is triggering the clear.
it triggered the sanity check mechanism and deleted all the contents in the cache
This can and will happen if FROZEN_CACHE is not set. If FROZEN_CACHE is set, then the sanity check cache clear mechanism should not take place. There does exit logic to do this:
Lines 426 to 429 in 1c1baae
One way to try to navigate around this, is to set environment variable EMCC_SKIP_SANITY_CHECK=1. That will skip running the sanity check, and definitely will then skip the cache clear.
The compilation script is as follows:
emcc test.c -o test.html -s INITIAL_MEMORY=500MB -s MAXIMUM_MEMORY=1023MB -s ALLOW_MEMORY_GROWTH=1 -s MAX_WEBGL_VERSION=2 -s USE_FREETYPE=1 -lopenal -s GL_PREINITIALIZED_CONTEXT=1 -s OFFSCREENCANVAS_SUPPORT=1 -s ENVIRONMENT=web,worker -s EXPORT_NAME='JSPlayerModule' -s MODULARIZE=1 -s ALLOW_TABLE_GROWTH=1 -s STACK_SIZE=1MB -s SINGLE_FILE=1
when i set EMCC_SKIP_SANITY_CHECK=1, That skiped running the sanity check.
and another question:When I compile, the cache directory requires write permission, but my server does not allow writing?
OSError: [Errno 30] Read-only file system: '/opt2/emsdk/emsdkV4.0.14/upstream/emscripten/cache/symbol_lists/443d10e81ad687da5c782aea192083aa5bfeb7f3.json.lock'
If your server does not allow writing to the cache then you need to set FROZEN_CACHE in your .emscripten config file (or you can use EM_FROZEN_CACHE in the environment.
I would advise against using EMCC_SKIP_SANITY_CHECK. That should not be needed if emscripten is configured correctly.
but when i compile it , it need to write the lock file , if set FROZEN_CACHE, the cache not allow to write. '/opt2/emsdk/emsdkV4.0.14/upstream/emscripten/cache/symbol_lists/443d10e81ad687da5c782aea192083aa5bfeb7f3.json.lock'