tarantool/node-tarantool-driver

A problem with the msgpack package

monolithed opened this issue · 9 comments

➜ npm install
\
> msgpack@0.2.6 install node_modules/tarantool-driver/node_modules/msgpack
> node-gyp rebuild

child_process: customFds option is deprecated, use stdio instead.
  CXX(target) Release/obj.target/libmsgpack/deps/msgpack/gcc_atomic.o
  CXX(target) Release/obj.target/libmsgpack/deps/msgpack/object.o
  CC(target) Release/obj.target/libmsgpack/deps/msgpack/objectc.o
  CC(target) Release/obj.target/libmsgpack/deps/msgpack/unpack.o
  CC(target) Release/obj.target/libmsgpack/deps/msgpack/vrefbuffer.o
  CC(target) Release/obj.target/libmsgpack/deps/msgpack/zone.o
  CC(target) Release/obj.target/libmsgpack/deps/msgpack/version.o
  LIBTOOL-STATIC Release/msgpack.a
Traceback (most recent call last):
  File "./gyp-mac-tool", line 512, in <module>
    sys.exit(main(sys.argv[1:]))
  File "./gyp-mac-tool", line 28, in main
    exit_code = executor.Dispatch(args)
  File "./gyp-mac-tool", line 43, in Dispatch
    return getattr(self, method)(*args[1:])
  File "./gyp-mac-tool", line 226, in ExecFilterLibtool
    if not libtool_re.match(line):
TypeError: can't use a string pattern on a bytes-like object
make: *** [Release/msgpack.a] Error 1
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:267:23)
gyp ERR! stack     at ChildProcess.emit (events.js:110:17)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (child_process.js:1067:12)
gyp ERR! System Darwin 14.4.0
gyp ERR! command "node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd node_modules/tarantool-driver/node_modules/msgpack
gyp ERR! node -v v0.12.1
gyp ERR! node-gyp -v v1.0.2
gyp ERR! not ok 
npm ERR! Darwin 14.4.0
npm ERR! argv "node" "/usr/local/bin/npm" "install"
npm ERR! node v0.12.1
npm ERR! npm  v2.5.1
npm ERR! code ELIFECYCLE

npm ERR! msgpack@0.2.6 install: `node-gyp rebuild`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the msgpack@0.2.6 install script 'node-gyp rebuild'.
npm ERR! This is most likely a problem with the msgpack package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     node-gyp rebuild
npm ERR! You can get their info via:
npm ERR!     npm owner ls msgpack
npm ERR! There is likely additional logging output above.

npm ERR! Please include the following file with any support request:
npm ERR!     npm-debug.log

https://github.com/creationix/msgpack-js — Популярная реализация, но я в ней есть критический баг с 64-битными числами и decode возвращает почему-то объектное значение

https://www.npmjs.com/package/neo-msgpack-js — Усовершенствованный форк msgpack-js

https://www.npmjs.com/package/uupaa.messagepack.js — На первый взгляд неплохая реализация, однако корявое подключение

https://www.npmjs.com/package/msgpack-javascript — Вроде работает правильно, но API очень адовое и pack возвращает не буфер, а объект

https://github.com/grimen/node-document-serializer-msgpack — ....

https://www.npmjs.com/package/msgpack5 — живой проект и тест проходят!

node-msgpack у меня не взлетел ни на одной из доступных у меня версий python:

➜ npm install --python=python2
➜ npm install --python=python2.5
➜ npm install --python=python2.6
➜ npm install --python=python2.7
fail

pgriess/node-msgpack#60

Пулреквест — #2

Можно на базе нодовского буфера написать свой encoder легко.

А какой у тебя nodejs? Io.js?

➜ babel-node --version
5.6.14
➜ /usr/local/bin/node -v
v0.12.7
➜ node-gyp -v
v2.0.2
➜ npm -v
3.1.2

Я видел в истории коммитов, что msgpack5 был заменен на msgpack. Почему?

Он для браузера, а тот вроде как нативный, что видимо и вызывает минусы с инсталляцией. Сейчас проверю что да как там.
Пока на маке проверить не могу, завтра попробую взять у друзей посмотреть, будет ли такая же история.

Он для браузера

Я бы так не сказал :)

а тот вроде как нативный

То что он написан на С++ не делает его нативным.

К сожалению ни у того ни у друго нет сравнительных бенчмарков, но то, что msgpack нужно собирать через gyp является значительным минусом.

Помержил.
Да там код который я на взгляд оценил, не впечатлило(про msgpack5), а в тот что на C++ я особо смотреть не могу, так что и вздыхать поэтому поводу не смог.
Я проведу тесты как найду мак что там с msgpack установкой и бенч какой-нибудь прогоню, но все таки склоняюсь, что вряд ли msgpack5 быстрее msgpack.

Спасибо!
Код там вполне нормальный, в dist лежит сборка для клиента (в ноде будет использоваться только, то что lib)