kripken / ammo.js

Direct port of the Bullet physics engine to JavaScript using Emscripten
Other
4.16k stars 559 forks source link

Getting "TypeError: unhashable type: 'IDLCallbackType'" when attempting to build #326

Open maxbbb opened 4 years ago

maxbbb commented 4 years ago

Hello,

When I do a clean install and follow the build instructions, I'm receiving this error after running cmake --build builds

[  0%] Building CXX object bullet/src/LinearMath/CMakeFiles/LinearMath.dir/btAlignedAllocator.o
[  1%] Building CXX object bullet/src/LinearMath/CMakeFiles/LinearMath.dir/btConvexHull.o
[  1%] Building CXX object bullet/src/LinearMath/CMakeFiles/LinearMath.dir/btConvexHullComputer.o
[  2%] Building CXX object bullet/src/LinearMath/CMakeFiles/LinearMath.dir/btGeometryUtil.o
[  2%] Building CXX object bullet/src/LinearMath/CMakeFiles/LinearMath.dir/btPolarDecomposition.o
[  3%] Building CXX object bullet/src/LinearMath/CMakeFiles/LinearMath.dir/btQuickprof.o
[  3%] Building CXX object bullet/src/LinearMath/CMakeFiles/LinearMath.dir/btSerializer.o
[  5%] Building CXX object bullet/src/LinearMath/CMakeFiles/LinearMath.dir/btVector3.o
[  5%] Linking CXX static library libLinearMath.a
[  5%] Built target LinearMath
Scanning dependencies of target ammo-bindings
[  6%] Generating ammo bindings
Traceback (most recent call last):
  File "/Users/kanethomas/dev-projects/emsdk/upstream/emscripten/tools/webidl_binder.py", line 57, in <module>
    data = p.finish()
  File "/Users/kanethomas/dev-projects/emsdk/upstream/emscripten/third_party/WebIDL.py", line 4983, in finish
    if p not in seen:
TypeError: unhashable type: 'IDLCallbackType'
make[2]: *** [glue.cpp] Error 1
make[1]: *** [CMakeFiles/ammo-bindings.dir/all] Error 2
make: *** [all] Error 2

I've built in the past with the old build system, and curiously the first time I tried building with the new build system I did not receive this error, but the next time I tried to build I did. I thought it was due to changes I had made to the IDL but I tried with a fresh install and still no luck. I tried completely deleting both cmake and emsdk but that also didn't help. Also tried on a few previous versions of emsdk to see if it was due to a recent change or something. Last resort tried on a new machine that didn't have cmake or emsdk and got the same issue.

Versions if they're relevant emcc: 2.0.0 python: 3.6.1 cmake: 3.18.1

Any help with this would be greatly appreciated.

maxbbb commented 4 years ago

If anyone has any ideas on what could be causing this would appreciate even just some direction if it's a local setup issue, not familiar with emscripten and couldn't really find anything online about this type of error.

ianpurvis commented 4 years ago

Hi, sorry I am just reading this now. I've seen this error as well and was able to recreate it in the CI builds for #327 .

I'm not sure, but it seems like python 3 hashing behavior breaks the WebIDL Binder. I think we're going to need @kripken to help get it fixed on the emscripten side. You should be able to avoid this by downgrading to emsdk < 2.0 and using python < 3.0. Let me know if you have any build issues from there!

maxbbb commented 4 years ago

So actually I went ahead and integrated your patch for the setInternalTickCallback from #329 and everything is good now rather than downgrading emsdk and python. Thank you for your help!!

ianpurvis commented 4 years ago

Awesome!