Troubleshoot VM Build

54 views
Skip to first unread message

James Stortz

unread,
Jul 26, 2016, 12:55:32 AM7/26/16
to emscripten-discuss
Since my last thread, I have successfully built a very old version, 1.13.0, of Emscripten (I believe.)

Now I can use it to build ioQuake3, as proven by QuakeJS.

It should be easy because Quake 3 builds VMs with LLVM, but that is where I am having 3 errors.
 KeyError
 - I know Emscripten isn't made to link modules, and I believe that is what error #1 signifies.
 TypeError
 - Error #2 is commonly associated with minification/concatenation...
 AssertionError
 - Seems to have to do with memory.

Anyway, here is that output in the terminal.

SHLIB_CC code/qcommon/q_shared.c
CGAME_CC code/cgame/cg_syscalls.c
LD build/release-js-js/baseq3/cgame.js
Traceback (most recent call last):
  File "/usr/lib/emscripten/emscripten.py", line 1428, in <module>
    _main(environ=os.environ)
  File "/usr/lib/emscripten/emscripten.py", line 1416, in _main
    temp_files.run_and_clean(lambda: main(
  File "/usr/lib/emscripten/tools/tempfiles.py", line 39, in run_and_clean
    return func()
  File "/usr/lib/emscripten/emscripten.py", line 1424, in <lambda>
    DEBUG_CACHE=DEBUG_CACHE,
  File "/usr/lib/emscripten/emscripten.py", line 1311, in main
    jcache=jcache, temp_files=temp_files, DEBUG=DEBUG, DEBUG_CACHE=DEBUG_CACHE)
  File "/usr/lib/emscripten/emscripten.py", line 1114, in emscript_fast
    for key, value in forwarded_json['Variables']['globals'].iteritems():
KeyError: 'Variables'

/usr/lib/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js:272
        throw new JS_Parse_Error(message, line, col, pos);
        ^
TypeError: (intermediate value) is not a function
    at new JS_Parse_Error (/usr/lib/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js:261:21)
    at js_error (/usr/lib/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js:272:15)
    at croak (/usr/lib/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js:742:17)
    at token_error (/usr/lib/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js:749:17)
    at unexpected (/usr/lib/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js:755:17)
    at block_ (/usr/lib/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js:998:40)
    at /usr/lib/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js:978:43
    at /usr/lib/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js:982:29
    at /usr/lib/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js:1112:43
    at maybe_unary (/usr/lib/emscripten/tools/eliminator/node_modules/uglify-js/lib/parse-js.js:1209:27)
Traceback (most recent call last):
  File "/usr/lib/emscripten/emcc", line 1702, in <module>
    flush_js_optimizer_queue()
  File "/usr/lib/emscripten/emcc", line 1630, in flush_js_optimizer_queue
    final = shared.Building.js_optimizer(final, js_optimizer_queue, jcache, debug_level >= 4, js_optimizer_extra_info)
  File "/usr/lib/emscripten/tools/shared.py", line 1449, in js_optimizer
    return js_optimizer.run(filename, passes, listify(NODE_JS), jcache, debug, extra_info)
  File "/usr/lib/emscripten/tools/js_optimizer.py", line 347, in run
    return temp_files.run_and_clean(lambda: run_on_js(filename, passes, js_engine, jcache, source_map, extra_info))
  File "/usr/lib/emscripten/tools/tempfiles.py", line 39, in run_and_clean
    return func()
  File "/usr/lib/emscripten/tools/js_optimizer.py", line 347, in <lambda>
    return temp_files.run_and_clean(lambda: run_on_js(filename, passes, js_engine, jcache, source_map, extra_info))
  File "/usr/lib/emscripten/tools/js_optimizer.py", line 269, in run_on_js
    filenames = pool.map(run_on_chunk, commands, chunksize=1)
  File "/usr/local/lib/python2.7/multiprocessing/pool.py", line 227, in map
    return self.map_async(func, iterable, chunksize).get()
  File "/usr/local/lib/python2.7/multiprocessing/pool.py", line 528, in get
    raise self._value
AssertionError: Error in js optimizer: 
make[2]: *** [Makefile:2301: build/release-js-js/baseq3/cgame.js] Error 1
rm build/release-js-js/renderergl2/glsl/pshadow_fp.c build/release-js-js/renderergl2/glsl/pshadow_vp.c build/release-js-js/renderergl2/glsl/down4x_fp.c 
build/release-js-js/renderergl2/glsl/down4x_vp.c build/release-js-js/renderergl2/glsl/ssao_fp.c build/release-js-js/renderergl2/glsl/ssao_vp.c 
build/release-js-js/renderergl2/glsl/calclevels4x_fp.c build/release-js-js/renderergl2/glsl/calclevels4x_vp.c 
build/release-js-js/renderergl2/glsl/shadowfill_vp.c build/release-js-js/renderergl2/glsl/lightall_fp.c build/release-js-js/renderergl2/glsl/lightall_vp.c 
build/release-js-js/renderergl2/glsl/generic_fp.c build/release-js-js/renderergl2/glsl/generic_vp.c build/release-js-js/renderergl2/glsl/bokeh_vp.c 
build/release-js-js/renderergl2/glsl/fogpass_vp.c build/release-js-js/renderergl2/glsl/bokeh_fp.c build/release-js-js/renderergl2/glsl/shadowfill_fp.c 
build/release-js-js/renderergl2/glsl/dlight_fp.c build/release-js-js/renderergl2/glsl/dlight_vp.c build/release-js-js/renderergl2/glsl/fogpass_fp.c 
build/release-js-js/renderergl2/glsl/depthblur_fp.c build/release-js-js/renderergl2/glsl/depthblur_vp.c build/release-js-js/renderergl2/glsl/shadowmask_fp.c 
build/release-js-js/renderergl2/glsl/shadowmask_vp.c build/release-js-js/renderergl2/glsl/texturecolor_vp.c 
build/release-js-js/renderergl2/glsl/texturecolor_fp.c build/release-js-js/renderergl2/glsl/tonemap_fp.c build/release-js-js/renderergl2/glsl/tonemap_vp.c
make[2]: Leaving directory '/home/jrs/Server/try3/quakejs/ioq3'
make[1]: *** [Makefile:1325: targets] Error 2
make[1]: Leaving directory '/home/jrs/Server/try3/quakejs/ioq3'
make: *** [Makefile:1263: release] Error 2

Any help trying to sort this out would be appreciated! I have a feeling there's a way to fix this. ( I just cloned QuakeJS. The developer blogged Quake VMs in JS.) In the meantime, I'm going to try installing Java to see if Closure Compiler is necessary.

Thanks again,
James

Alon Zakai

unread,
Jul 27, 2016, 1:24:12 PM7/27/16
to emscripten-discuss
They KeyError is an internal compiler error. Perhaps that project never built with that exact version of the compiler? Or needs different build options somehow? Might be worth contacting the developer directly to make sure.

--
You received this message because you are subscribed to the Google Groups "emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to emscripten-disc...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

James Stortz

unread,
Jul 29, 2016, 1:53:02 AM7/29/16
to emscripte...@googlegroups.com
For the Emscripten Compiler, I am in the same thinking now that you've explained that to me. Here's where I think the resolution is. The Python version. Is there anything in the build options and whatnot having to do with that?

I remember the cause of that specific error, .iteritems on ['Variables']['global'], being Python compatibility. (.iteritems method was changed to something else.)

Anyway, thanks! (I have been trying to track down people who have run this before. Tried to contact the developer, but sadly haven't heard anything.)

Jukka Jylänki

unread,
Aug 1, 2016, 10:56:32 AM8/1/16
to emscripte...@googlegroups.com
Which python version was this run on? Is it an option to upgrade to latest python 2.7.x? I don't think we'd have had any behavior in old Emscripten that would require old python as well, so updating python should be a safe thing to attempt.

--

James Stortz

unread,
Aug 1, 2016, 11:03:55 AM8/1/16
to emscripte...@googlegroups.com
I thought it was 2.7? But I have Python 3, so it might be that. I read about that specific error being about needing Python 2.7 Specifically. Also, I couldn't get emsdk to work since I had the wrong Python, and actually, now that I think about it, that's where I remember that specific error from. I remember changing .iteritems and things to the Python 3 compatible syntax to get the emsdk script to run on Python 3.

I don't understand what I need to do to avoid keeping getting this error. lol. I think I have 2.7 and 3 installed.

--
You received this message because you are subscribed to a topic in the Google Groups "emscripten-discuss" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/emscripten-discuss/U57NUX_7ObA/unsubscribe.
To unsubscribe from this group and all its topics, send an email to emscripten-disc...@googlegroups.com.

James Stortz

unread,
Aug 1, 2016, 11:05:04 AM8/1/16
to emscripte...@googlegroups.com
I thought it was 2.7? But I have Python 3, so it might be that. I read about that specific error being about needing Python 2.7 Specifically. Also, I couldn't get emsdk to work since I had the wrong Python, and actually, now that I think about it, that's where I remember that specific error from. I remember changing .iteritems and things to the Python 3 compatible syntax to get the emsdk script to run on Python 3.

I don't understand what I need to do to avoid keeping getting this error. lol. I think I have 2.7 and 3 installed.
Reply all
Reply to author
Forward
0 new messages