Closed danez closed 6 years ago
This is ultimately an issue with the underlying implementation, for which the original developer states that "[t]he hash function generation software made no effort toward portability".
So sadly, this won't ever compile on non-SSE environments until someone patches the underlying code.
But why did it compile with 2.3 of this module?
Uhm sorry about that, I missed that it worked with 2.3.0.
What might be causing the problem is this change:
- "cflags" : [ "-std=c++11 -Wno-deprecated-declarations -Wno-unused-value -Wno-unused-function -Wno-unknown-pragmas -Wno-format -msse4.2" ],
+ "cflags" : [ "-std=c++11 -Wno-deprecated-declarations -Wno-unused-value -Wno-unused-function -Wno-unknown-pragmas -Wno-format -march=native" ],
Could you check and see if reverting that change (in binding.gyp
) fixes your problem?
Yes the compiling works. I guess that by reverting this it gets compiled with sse 4.2 support even if the platform does not support it? Which seems also not good.
In our case we haven't really tried running it on this machines without sse 4.2 as we only use metrohash on development machines (but we install it on the servers). If I have to guess I would think that the compiled version won't work there and segfaults or crashes, but cannot test that right now.
Yeah, I just tried on hardware that doesn't support SSE4.2:
Illegal instruction (core dumped)
Ok then let's close this and accept that sse4.2 is a hard requirement. And failing on compile is probably better than failing later during runtime.
Thanks for your time.
The latest version does not compile on our virtual machines anymore. It works with 2.3 but not with 2.4.
cat /proc/cpuinfo: