#999803 missing dependencies in the emscripten package

#999803#5
Date:
2021-11-16 21:30:03 UTC
From:
To:
It looks like the emscripten debian package contains a few errors. It does not contain symlinks to the emscripten executables in the emscripten root directory, which makes compilation with emcmake fail. The missing symlinks are:

sudo ln -s /usr/share/emscripten/emcc.py /usr/share/emscripten/emcc && \
sudo ln -s /usr/share/emscripten/emar.py /usr/share/emscripten/emar && \
sudo ln -s /usr/share/emscripten/emranlib.py
/usr/share/emscripten/emranlib && \
sudo ln -s /usr/share/emscripten/em++.py /usr/share/emscripten/em++

The package misses a dependency to the acorn js library, which raises the following error:

Error: Cannot find module 'acorn'
Require stack:
- /usr/share/emscripten/tools/acorn-optimizer.js
     at Function.Module._resolveFilename (node:internal/modules/cjs/loader:933:15)
     at Function.Module._load (node:internal/modules/cjs/loader:778:27)
     at Module.require (node:internal/modules/cjs/loader:1005:19)
     at require (node:internal/modules/cjs/helpers:102:18)
     at Object.<anonymous> (/usr/share/emscripten/tools/acorn-optimizer.js:1:13)
     at Module._compile (node:internal/modules/cjs/loader:1101:14)
     at Object.Module._extensions..js (node:internal/modules/cjs/loader:1153:10)
     at Module.load (node:internal/modules/cjs/loader:981:32)
     at Function.Module._load (node:internal/modules/cjs/loader:822:12)
     at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12) {
   code: 'MODULE_NOT_FOUND',
   requireStack: [ '/usr/share/emscripten/tools/acorn-optimizer.js' ]
}
emcc: error: '/usr/local/bin/node /usr/share/emscripten/tools/acorn-optimizer.js /tmp/emscripten_temp_g7n6r4of/highs.js.pp.js AJSDCE --closureFriendly' failed (1)



Tested while compilinghttps://github.com/ERGO-Code/HiGHS  (as a part ofhttps://github.com/lovasoa/highs-js  )

#999803#10
Date:
2021-11-16 21:47:04 UTC
From:
To:
emscripten also depends on closure-compiler, which is not listed as a
dependency to the emscripten package

#999803#15
Date:
2021-11-16 22:16:31 UTC
From:
To:
There is also a bug in debian's patch to tools/building.py :

https://github.com/emscripten-core/emscripten/issues/15545

#999803#20
Date:
2021-11-17 02:03:20 UTC
From:
To:
Quoting Ophir Lojkine (2021-11-16 22:47:04)

Please file each issue separately.

 - Jonas

#999803#25
Date:
2021-11-17 01:05:11 UTC
From:
To:
Hi Ophir,

Quoting Ophir Lojkine (2021-11-16 22:30:03)

Debian packaging of emscripten provides executables in $PATH.

Please try use those.

emscripten 2.0.12~dfsg-2 depends on node-acorn, so the cause for above
error must be a different one.


 - Jonas

#999803#30
Date:
2021-11-17 11:39:21 UTC
From:
To:
It's not me who is trying to use the executables from
/usr/share/emscripten, it's emscripten itself. Notably, emcmake requires
it in /usr/share/emscripten/cmake/Modules/Platform/Emscripten.cmake,
which is where I initially encountered the error, but the entire
codebase of emscripten expects the executables to be present in
EMSCRIPTEN_ROOT, which is /usr/share/emscripten/ in debian.

Well, you can try it yourself. The require in
/usr/share/emscripten/tools/acorn-optimizer.js fails unless acorn is
manually installed to  /usr/share/emscripten/node_modules.