Repository navigation
Node v4.0.0 - Build failing #2228
Copy link
Copy link
Closed
Description
When installing socket.io latest with node V4.0.0 (stable), the following build failure occurs.
> utf-8-validate@1.1.0 install /app/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/utf-8-validate
> node-gyp rebuild
make: Entering directory `/app/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/utf-8-validate/build'
CXX(target) Release/obj.target/validation/src/validation.o
In file included from ../src/validation.cc:15:0:
../node_modules/nan/nan.h:261:25: error: redefinition of 'template<class T> v8::Local<T> _NanEnsureLocal(v8::Local<T>)'
../node_modules/nan/nan.h:256:25: error: 'template<class T> v8::Local<T> _NanEnsureLocal(v8::Handle<T>)' previously declared here
../node_modules/nan/nan.h:661:13: error: 'node::smalloc' has not been declared
../node_modules/nan/nan.h:661:35: error: expected ',' or '...' before 'callback'
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanNewBufferHandle(char*, size_t, int)':
../node_modules/nan/nan.h:665:50: error: 'callback' was not declared in this scope
../node_modules/nan/nan.h:665:60: error: 'hint' was not declared in this scope
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanNewBufferHandle(const char*, uint32_t)':
../node_modules/nan/nan.h:672:67: error: call of overloaded 'New(v8::Isolate*, const char*&, uint32_t&)' is ambiguous
../node_modules/nan/nan.h:672:67: note: candidates are:
In file included from ../src/validation.cc:10:0:
/root/.node-gyp/4.0.0/include/node/node_buffer.h:31:40: note: v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate*, v8::Local<v8::String>, node::encoding) <near match>
/root/.node-gyp/4.0.0/include/node/node_buffer.h:31:40: note: no known conversion for argument 3 from 'uint32_t {aka unsigned int}' to 'node::encoding'
/root/.node-gyp/4.0.0/include/node/node_buffer.h:43:40: note: v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate*, char*, size_t) <near match>
/root/.node-gyp/4.0.0/include/node/node_buffer.h:43:40: note: no known conversion for argument 2 from 'const char*' to 'char*'
In file included from ../src/validation.cc:15:0:
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanNewBufferHandle(uint32_t)':
../node_modules/nan/nan.h:676:61: error: could not convert 'node::Buffer::New(v8::Isolate::GetCurrent(), ((size_t)size))' from 'v8::MaybeLocal<v8::Object>' to 'v8::Local<v8::Object>'
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanBufferUse(char*, uint32_t)':
../node_modules/nan/nan.h:683:12: error: 'Use' is not a member of 'node::Buffer'
make: *** [Release/obj.target/validation/src/validation.o] Error 1
make: Leaving directory `/app/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/utf-8-validate/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/nodejs/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23)
gyp ERR! stack at emitTwo (events.js:87:13)
gyp ERR! stack at ChildProcess.emit (events.js:172:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 4.0.9-boot2docker
gyp ERR! command "/nodejs/bin/node" "/nodejs/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /app/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/utf-8-validate
gyp ERR! node -v v4.0.0
gyp ERR! node-gyp -v v3.0.1
gyp ERR! not ok
> bufferutil@1.1.0 install /app/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/bufferutil
> node-gyp rebuild
make: Entering directory `/app/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/bufferutil/build'
CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
In file included from ../src/bufferutil.cc:16:0:
../node_modules/nan/nan.h:261:25: error: redefinition of 'template<class T> v8::Local<T> _NanEnsureLocal(v8::Local<T>)'
../node_modules/nan/nan.h:256:25: error: 'template<class T> v8::Local<T> _NanEnsureLocal(v8::Handle<T>)' previously declared here
../node_modules/nan/nan.h:661:13: error: 'node::smalloc' has not been declared
../node_modules/nan/nan.h:661:35: error: expected ',' or '...' before 'callback'
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanNewBufferHandle(char*, size_t, int)':
../node_modules/nan/nan.h:665:50: error: 'callback' was not declared in this scope
../node_modules/nan/nan.h:665:60: error: 'hint' was not declared in this scope
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanNewBufferHandle(const char*, uint32_t)':
../node_modules/nan/nan.h:672:67: error: call of overloaded 'New(v8::Isolate*, const char*&, uint32_t&)' is ambiguous
../node_modules/nan/nan.h:672:67: note: candidates are:
In file included from ../src/bufferutil.cc:10:0:
/root/.node-gyp/4.0.0/include/node/node_buffer.h:31:40: note: v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate*, v8::Local<v8::String>, node::encoding) <near match>
/root/.node-gyp/4.0.0/include/node/node_buffer.h:31:40: note: no known conversion for argument 3 from 'uint32_t {aka unsigned int}' to 'node::encoding'
/root/.node-gyp/4.0.0/include/node/node_buffer.h:43:40: note: v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate*, char*, size_t) <near match>
/root/.node-gyp/4.0.0/include/node/node_buffer.h:43:40: note: no known conversion for argument 2 from 'const char*' to 'char*'
In file included from ../src/bufferutil.cc:16:0:
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanNewBufferHandle(uint32_t)':
../node_modules/nan/nan.h:676:61: error: could not convert 'node::Buffer::New(v8::Isolate::GetCurrent(), ((size_t)size))' from 'v8::MaybeLocal<v8::Object>' to 'v8::Local<v8::Object>'
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanBufferUse(char*, uint32_t)':
../node_modules/nan/nan.h:683:12: error: 'Use' is not a member of 'node::Buffer'
make: *** [Release/obj.target/bufferutil/src/bufferutil.o] Error 1
make: Leaving directory `/app/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/bufferutil/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/nodejs/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23)
gyp ERR! stack at emitTwo (events.js:87:13)
gyp ERR! stack at ChildProcess.emit (events.js:172:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 4.0.9-boot2docker
gyp ERR! command "/nodejs/bin/node" "/nodejs/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /app/node_modules/socket.io/node_modules/engine.io/node_modules/ws/node_modules/bufferutil
gyp ERR! node -v v4.0.0
gyp ERR! node-gyp -v v3.0.1
gyp ERR! not ok
npm WARN optional dep failed, continuing utf-8-validate@1.1.0
npm WARN optional dep failed, continuing bufferutil@1.1.0
> utf-8-validate@1.1.0 install /app/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/utf-8-validate
> node-gyp rebuild
make: Entering directory `/app/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/utf-8-validate/build'
CXX(target) Release/obj.target/validation/src/validation.o
In file included from ../src/validation.cc:15:0:
../node_modules/nan/nan.h:261:25: error: redefinition of 'template<class T> v8::Local<T> _NanEnsureLocal(v8::Local<T>)'
../node_modules/nan/nan.h:256:25: error: 'template<class T> v8::Local<T> _NanEnsureLocal(v8::Handle<T>)' previously declared here
../node_modules/nan/nan.h:661:13: error: 'node::smalloc' has not been declared
../node_modules/nan/nan.h:661:35: error: expected ',' or '...' before 'callback'
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanNewBufferHandle(char*, size_t, int)':
../node_modules/nan/nan.h:665:50: error: 'callback' was not declared in this scope
../node_modules/nan/nan.h:665:60: error: 'hint' was not declared in this scope
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanNewBufferHandle(const char*, uint32_t)':
../node_modules/nan/nan.h:672:67: error: call of overloaded 'New(v8::Isolate*, const char*&, uint32_t&)' is ambiguous
../node_modules/nan/nan.h:672:67: note: candidates are:
In file included from ../src/validation.cc:10:0:
/root/.node-gyp/4.0.0/include/node/node_buffer.h:31:40: note: v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate*, v8::Local<v8::String>, node::encoding) <near match>
/root/.node-gyp/4.0.0/include/node/node_buffer.h:31:40: note: no known conversion for argument 3 from 'uint32_t {aka unsigned int}' to 'node::encoding'
/root/.node-gyp/4.0.0/include/node/node_buffer.h:43:40: note: v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate*, char*, size_t) <near match>
/root/.node-gyp/4.0.0/include/node/node_buffer.h:43:40: note: no known conversion for argument 2 from 'const char*' to 'char*'
In file included from ../src/validation.cc:15:0:
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanNewBufferHandle(uint32_t)':
../node_modules/nan/nan.h:676:61: error: could not convert 'node::Buffer::New(v8::Isolate::GetCurrent(), ((size_t)size))' from 'v8::MaybeLocal<v8::Object>' to 'v8::Local<v8::Object>'
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanBufferUse(char*, uint32_t)':
../node_modules/nan/nan.h:683:12: error: 'Use' is not a member of 'node::Buffer'
make: *** [Release/obj.target/validation/src/validation.o] Error 1
make: Leaving directory `/app/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/utf-8-validate/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/nodejs/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23)
gyp ERR! stack at emitTwo (events.js:87:13)
gyp ERR! stack at ChildProcess.emit (events.js:172:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 4.0.9-boot2docker
gyp ERR! command "/nodejs/bin/node" "/nodejs/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /app/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/utf-8-validate
gyp ERR! node -v v4.0.0
gyp ERR! node-gyp -v v3.0.1
gyp ERR! not ok
> bufferutil@1.1.0 install /app/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/bufferutil
> node-gyp rebuild
make: Entering directory `/app/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/bufferutil/build'
CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
In file included from ../src/bufferutil.cc:16:0:
../node_modules/nan/nan.h:261:25: error: redefinition of 'template<class T> v8::Local<T> _NanEnsureLocal(v8::Local<T>)'
../node_modules/nan/nan.h:256:25: error: 'template<class T> v8::Local<T> _NanEnsureLocal(v8::Handle<T>)' previously declared here
../node_modules/nan/nan.h:661:13: error: 'node::smalloc' has not been declared
../node_modules/nan/nan.h:661:35: error: expected ',' or '...' before 'callback'
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanNewBufferHandle(char*, size_t, int)':
../node_modules/nan/nan.h:665:50: error: 'callback' was not declared in this scope
../node_modules/nan/nan.h:665:60: error: 'hint' was not declared in this scope
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanNewBufferHandle(const char*, uint32_t)':
../node_modules/nan/nan.h:672:67: error: call of overloaded 'New(v8::Isolate*, const char*&, uint32_t&)' is ambiguous
../node_modules/nan/nan.h:672:67: note: candidates are:
In file included from ../src/bufferutil.cc:10:0:
/root/.node-gyp/4.0.0/include/node/node_buffer.h:31:40: note: v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate*, v8::Local<v8::String>, node::encoding) <near match>
/root/.node-gyp/4.0.0/include/node/node_buffer.h:31:40: note: no known conversion for argument 3 from 'uint32_t {aka unsigned int}' to 'node::encoding'
/root/.node-gyp/4.0.0/include/node/node_buffer.h:43:40: note: v8::MaybeLocal<v8::Object> node::Buffer::New(v8::Isolate*, char*, size_t) <near match>
/root/.node-gyp/4.0.0/include/node/node_buffer.h:43:40: note: no known conversion for argument 2 from 'const char*' to 'char*'
In file included from ../src/bufferutil.cc:16:0:
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanNewBufferHandle(uint32_t)':
../node_modules/nan/nan.h:676:61: error: could not convert 'node::Buffer::New(v8::Isolate::GetCurrent(), ((size_t)size))' from 'v8::MaybeLocal<v8::Object>' to 'v8::Local<v8::Object>'
../node_modules/nan/nan.h: In function 'v8::Local<v8::Object> NanBufferUse(char*, uint32_t)':
../node_modules/nan/nan.h:683:12: error: 'Use' is not a member of 'node::Buffer'
make: *** [Release/obj.target/bufferutil/src/bufferutil.o] Error 1
make: Leaving directory `/app/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/bufferutil/build'
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/nodejs/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:270:23)
gyp ERR! stack at emitTwo (events.js:87:13)
gyp ERR! stack at ChildProcess.emit (events.js:172:7)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Linux 4.0.9-boot2docker
gyp ERR! command "/nodejs/bin/node" "/nodejs/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /app/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/bufferutil
gyp ERR! node -v v4.0.0
gyp ERR! node-gyp -v v3.0.1
gyp ERR! not ok
npm WARN optional dep failed, continuing utf-8-validate@1.1.0
npm WARN optional dep failed, continuing bufferutil@1.1.0
This is obviously a compilation problem with upstream packages on utf-8-validate and bufferutil, never-the-less a release will need to be made with their subsequent releases.
I will be adding tickets in these two projects as a result and reference this ticket.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels
Activity
thesimpledev commentedon Sep 9, 2015
I had this issue and this ticket started 21 days ago solved it for me
#2213
RamIdeas commented 5 days ago
Update: The issue with engine.io blocking this has been addressed. From @eugene1g's last comment, I believe socket.io now needs to update it's deps to pull in the engine.io fix.
socket.io currently references engine.io#f3fd4bb so upgrading to engine.io#385863d should do the job
Edit: Sorry, I've just realised that merged pull request is in a forked repo. But, I can confirm, changing the dependency (in "node_modules/socket.io/package.json") from "engine.io": "1.5.2" to "engine.io": "gsklee/engine.io#385863d" and then running npm install --production from within "node_modules/socket.io" does the trick to get this working on iojs 3.x
cjsaylor commentedon Sep 9, 2015
@StevenDStanton That workaround "works", but is not very practical. I can't really apply that patch in CI or deployment.
dignifiedquire commentedon Sep 9, 2015
@ owners Can this please be resolved and a new version released? This is causing karma users a lot of pain.
lholznagel commentedon Sep 9, 2015
A fix in the next version would be nice 👍
SpainTrain commentedon Sep 9, 2015
The issue is resolved in engine.io 1.5.3 (socketio/engine.io#341 (comment)).
However, if you update socket.io to use engine.io v1.5.3, there are 4 tests that fail (even on node 0.12). It appears that the API changes in ws 0.7->0.8 didn't affect engine.io's tests but have affected socket.io's tests. womp!
EDIT: sorry, there are only 4 failing tests on node 0.12 (https://travis-ci.org/socketio/socket.io/jobs/79534478)
Opened a PR so folks could see the test failures - https://travis-ci.org/socketio/socket.io/builds/79534473
Update dep engine.io to v1.5.3
Update dep engine.io to v1.5.3
rauchg commentedon Sep 9, 2015
@SpainTrain thanks for the update. I see a few tests failing on engine.io as well with Node 0.4 now. Looking into it.
frankleng commentedon Sep 10, 2015
👍 to get updates
mgol commentedon Sep 10, 2015
@frankleng To get updates you should click the Subscribe button instead of spamming every person already subscribed to this bug.
SpainTrain commentedon Sep 10, 2015
Sorry for contributing to spam comments, but this is a great chance to evangelize the petition that seeks to fix this GH UX fail - https://www.change.org/p/github-inc-add-voting-functionality-for-github-issues
There is also isaacs/github#9 for general discussion.
yosuke-furukawa commentedon Sep 10, 2015
We are listing Node v4.0 issues in this thread. If you find any other issues, please write the issue and add the following url.
nodejs/node#2798
ChALkeR commentedon Sep 12, 2015
Adding to the list: nodejs/node#2798.
maxime1992 commentedon Sep 13, 2015
Does someone have a solution ?
lholznagel commentedon Sep 13, 2015
@maxime1992 a solution is currently:
engine.iofrom1.5.2togsklee/engine.io#385863d(I think1.5.3also does the job)Thanks to @StevenDStanton for that solution (is also the first answer in this post)
14 remaining items
Restuta commentedon Sep 20, 2015
@StevenDStanton is my understanding correct that issue is that maintainers can't update NPM and release a new minor version with the trivial fix that has already been merged? So issue is not that nobody can fix the code, but that people who are in control of the project are currently inactive and can't do trivial NPM package update?
That is the situation?
torvalamo commentedon Sep 20, 2015
@Restuta Correct
Restuta commentedon Sep 20, 2015
@torvalamo I thought the process is automated as soon as you merge something to some branch like
v1.0and test pass it's getting published to NPM.SpainTrain commentedon Sep 20, 2015
Doesn't appear to be in the travis file https://github.com/socketio/socket.io/blob/master/.travis.yml (would look like http://docs.travis-ci.com/user/deployment/npm/)
If this is the case, the folks that run the npm registry have processes to handle these situations - https://docs.npmjs.com/misc/disputes
tjwebb commentedon Sep 20, 2015
@rauchg why are we still waiting for this?
mgol commentedon Sep 20, 2015
I don't think it's fixed;
npm install 'socket.io@socketio/socket.io#master'fails as well, on thebufferutilpackage.ChALkeR commentedon Sep 20, 2015
Yes. With path:
node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws/node_modules/bufferutil/build.wsis fixed and packaged long ago.engine.io-clientis fine.socket.io-clientis fine.This means that
socket.ioshould bump itssocket.io-clientdependency version.rauchg commentedon Sep 21, 2015
1.3.7 out! Thanks for the patience <3
—
@rauchg https://twitter.com/rauchg
On Mon, Sep 21, 2015 at 2:57 AM Сковорода Никита Андреевич <
notifications@github.com> wrote:
rauchg commentedon Sep 21, 2015
This is the output you should now be getting
☯ ~ npm install socket.io
/
CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
SOLINK_MODULE(target) Release/bufferutil.node
CXX(target) Release/obj.target/validation/src/validation.o
SOLINK_MODULE(target) Release/validation.node
/
CXX(target) Release/obj.target/bufferutil/src/bufferutil.o
SOLINK_MODULE(target) Release/bufferutil.node
CXX(target) Release/obj.target/validation/src/validation.o
SOLINK_MODULE(target) Release/validation.node
socket.io@1.3.7 node_modules/socket.io
├── debug@2.1.0 (ms@0.6.2)
├── has-binary-data@0.1.3 (isarray@0.0.1)
├── socket.io-parser@2.2.4 (isarray@0.0.1, debug@0.7.4,
component-emitter@1.1.2, benchmark@1.0.0, json3@3.2.6)
├── socket.io-adapter@0.3.1 (object-keys@1.0.1, debug@1.0.2,
socket.io-parser@2.2.2)
├── engine.io@1.5.4 (base64id@0.1.0, debug@1.0.3, engine.io-parser@1.2.2,
ws@0.8.0)
└── socket.io-client@1.3.7 (to-array@0.1.3, indexof@0.0.1, debug@0.7.4,
component-bind@1.0.0, backo2@1.0.2, object-component@0.0.3,
component-emitter@1.1.2, has-binary@0.1.6, parseuri@0.0.2,
engine.io-client@1.5.4)
On Mon, Sep 21, 2015 at 4:33 AM Guillermo Rauch rauchg@gmail.com wrote:
cjsaylor commentedon Sep 21, 2015
Thanks @rauchg!
jokeyrhyme commentedon Sep 21, 2015
Building perfectly for me with Xcode 7 and Node.js 4.1 on OS X 10.11. Thanks @rauchg. <3
joewood commentedon Sep 21, 2015
Works on Windows too. Thanks @rauchg
mgol commentedon Sep 21, 2015
Node 4 should also be added to .travis.yml.
nerdenough commentedon Sep 21, 2015
Working fine with Node.js 4.1 on Ubuntu 14.04. Thanks @rauchg