You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
openbci-ganglion fails to install with node v10, due to a broken dependency, bluetooth-hci-socket.
$ node -v
v10.13.0
npm install @openbci/ganglion
...
../src/BluetoothHciSocket.cpp: In member function ‘void BluetoothHciSocket::emitErrnoError()’:
../src/BluetoothHciSocket.cpp:275:72: error: no matching function for call to ‘v8::Function::NewInstance(int, v8::Local<v8::Value> [1])’
Local<Value> error = errorConstructor->NewInstance(1, constructorArgs);
^
In file included from /home/mhirsch/.node-gyp/10.13.0/include/node/node.h:63,
from /home/mhirsch/.node-gyp/10.13.0/include/node/node_buffer.h:25,
from ../src/BluetoothHciSocket.cpp:7:
...
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/usr/lib/node_modules/node-gyp/lib/build.js:258:23)
gyp ERR! stack at ChildProcess.emit (events.js:182:13)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:240:12)
gyp ERR! System Linux 4.18.18-300.fc29.x86_64
gyp ERR! command "/usr/bin/node" "/usr/bin/node-gyp" "rebuild"
gyp ERR! cwd /home/mhirsch/Projects/OpenBCI/node_modules/bluetooth-hci-socket
gyp ERR! node -v v10.13.0
gyp ERR! node-gyp -v v3.6.2
gyp ERR! not ok
npm WARN enoent ENOENT: no such file or directory, open '/home/mhirsch/Projects/OpenBCI/package.json'
npm WARN OpenBCI No description
npm WARN OpenBCI No repository field.
npm WARN OpenBCI No README data
npm WARN OpenBCI No license field.
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: xpc-connection@0.1.4 (node_modules/xpc-connection):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for xpc-connection@0.1.4: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! bluetooth-hci-socket@0.5.1 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the bluetooth-hci-socket@0.5.1 install script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
It depends on bluetooth-hci-scocket by way of noble. Since noble is an optional dependency you can get around this by running npm install --no-optional @openbci/ganglion
One thing I didn't understand is that the BLED112 dongle is not a normal BLE dongle. It has the ability to bypass the normal system bluetooth stack and interact as a serial port. The way this code is written, at least on Windows and Linux, it relies on this very specific behavior of the BLED112 dongle. But then on macos, it seems the project does rely on the native bluetooth stack, which is why noble is a dependency. When used on linux, noble perhaps once upon a time worked by pulling in bluetooth-hci-scocket, but that's all crufty and broken.
Why in the world it was written this way is a confounding and frustrating mystery. But then again, every layer of OpenBCI code, from this driver, to the Hub, to the GUI, is a hot mess of barely functional, brittle spaghetti code. I'm so dissapointed by this project. I am sad that I gave them money for the ganglion board. The debt of human misery they have created by subjecting the world to their insane concept of software engineering could never be sufficiently repaid in brain research.
@mhirsch I'm with you. Painfully aware of how brittle, messy, and hard to maintain the code is. It has been neglected for a while.
The good news is that we're working on making it better. Way better. It won't happen overnight, but it's happening.
Why is noble is a dependency? Probably because we still support built-in bluetooth on mac. I'll see if I can get the install working on Node 10. If not, maybe it's time to consider dropping built-in bluetooth for now.
openbci-ganglion fails to install with node v10, due to a broken dependency, bluetooth-hci-socket.
See the issue with bluetooth-hci-socket here
noble/node-bluetooth-hci-socket#84
The project should migrate away from this abandoned dependency.
The text was updated successfully, but these errors were encountered: