liesen/libspotify-node

Broken with Node v0.2.3?

MPV opened this issue · 3 comments

MPV commented

Hi,
I just recently updated my Node to version 0.2.3 and now I started getting this error message when I run "node test/all.js":

$ node test/all.js 
>>> running 8 tests
>>> run test-login.js
dyld: lazy symbol binding failed: Symbol not found: __ZN2v814ObjectTemplate25SetIndexedPropertyHandlerEPFNS_6HandleINS_5ValueEEEjRKNS_12AccessorInfoEEPFS3_jNS_5LocalIS2_EES6_EPFNS1_INS_7BooleanEEEjS6_ESG_PFNS1_INS_5ArrayEEES6_ES3_
  Referenced from: ............/libspotify-node/spotify/binding.node
  Expected in: flat namespace

dyld: Symbol not found: __ZN2v814ObjectTemplate25SetIndexedPropertyHandlerEPFNS_6HandleINS_5ValueEEEjRKNS_12AccessorInfoEEPFS3_jNS_5LocalIS2_EES6_EPFNS1_INS_7BooleanEEEjS6_ESG_PFNS1_INS_5ArrayEEES6_ES3_
  Referenced from: ......../libspotify-node/spotify/binding.node
  Expected in: flat namespace

>>> fail test-login.js -- status null
>>> ran 1 of 8 tests with 1 failure(s)

Right. You want to clean up your node installation. If you're using homebrew: brew cleanup.

Get the changes that I just pushed. It has to do with a V8 API change: http://groups.google.com/group/v8-users/browse_thread/thread/38e8c726b8b1f9c5/96e1ab947148945b.

Then make sure you run node-waf configure before building and running tests.

MPV commented

Hi Liesen,
I am very thankful for your help!

Unfortunately I haven't been able to get it work yet.

I ran cleanup:

$ brew cleanup
Pruned 0 symbolic links and 66 directories from /usr/local

And pulled your changes. And then I ran:

$ node-waf configure
Checking for program g++ or c++          : /usr/bin/g++ 
Checking for program cpp                 : /usr/bin/cpp 
Checking for program ar                  : /usr/bin/ar 
Checking for program ranlib              : /usr/bin/ranlib 
Checking for g++                         : ok  
Checking for node path                   : ok /Users/vs/.node_libraries 
Checking for node prefix                 : ok /usr/local 
'configure' finished successfully (0.509s)

Next thing was to run the tests:

$ node test/all.js 
>>> running 8 tests
>>> run test-login.js
dyld: lazy symbol binding failed: Symbol not found: __ZN2v814ObjectTemplate25SetIndexedPropertyHandlerEPFNS_6HandleINS_5ValueEEEjRKNS_12AccessorInfoEEPFS3_jNS_5LocalIS2_EES6_EPFNS1_INS_7BooleanEEEjS6_ESG_PFNS1_INS_5ArrayEEES6_ES3_
  Referenced from: /Users/vs/Dropbox/Sites/libspotify-node/spotify/binding.node
  Expected in: flat namespace

dyld: Symbol not found: __ZN2v814ObjectTemplate25SetIndexedPropertyHandlerEPFNS_6HandleINS_5ValueEEEjRKNS_12AccessorInfoEEPFS3_jNS_5LocalIS2_EES6_EPFNS1_INS_7BooleanEEEjS6_ESG_PFNS1_INS_5ArrayEEES6_ES3_
  Referenced from: /Users/vs/Dropbox/Sites/libspotify-node/spotify/binding.node
  Expected in: flat namespace

>>> fail test-login.js -- status null
>>> ran 1 of 8 tests with 1 failure(s)

Then I checked and found that I was running node v0.2.2, updated Homebrew, updated Node to v0.2.3, ran brew cleanup (it removed node v0.2.2) and ran it all again with same error:

$ node-waf configure build test
Checking for program g++ or c++          : /usr/bin/g++ 
Checking for program cpp                 : /usr/bin/cpp 
Checking for program ar                  : /usr/bin/ar 
Checking for program ranlib              : /usr/bin/ranlib 
Checking for g++                         : ok  
Checking for node path                   : ok /Users/vs/.node_libraries 
Checking for node prefix                 : ok /usr/local/Cellar/node/0.2.3 
'configure' finished successfully (0.053s)
Waf: Entering directory `/Users/vs/Sites/libspotify-node/build'
Waf: Leaving directory `/Users/vs/Sites/libspotify-node/build'
'build' finished successfully (0.827s)
>>> running 8 tests
>>> run test-login.js
dyld: lazy symbol binding failed: Symbol not found: __ZN2v814ObjectTemplate25SetIndexedPropertyHandlerEPFNS_6HandleINS_5ValueEEEjRKNS_12AccessorInfoEEPFS3_jNS_5LocalIS2_EES6_EPFNS1_INS_7BooleanEEEjS6_ESG_PFNS1_INS_5ArrayEEES6_ES3_
  Referenced from: /Users/vs/Dropbox/Sites/libspotify-node/spotify/binding.node
  Expected in: flat namespace

dyld: Symbol not found: __ZN2v814ObjectTemplate25SetIndexedPropertyHandlerEPFNS_6HandleINS_5ValueEEEjRKNS_12AccessorInfoEEPFS3_jNS_5LocalIS2_EES6_EPFNS1_INS_7BooleanEEEjS6_ESG_PFNS1_INS_5ArrayEEES6_ES3_
  Referenced from: /Users/vs/Dropbox/Sites/libspotify-node/spotify/binding.node
  Expected in: flat namespace

>>> fail test-login.js -- status null
>>> ran 1 of 8 tests with 1 failure(s)
tests failed

Any ideas?

it seems like the v8.h you compile against is different from what the v8 runtime (or node?) uses. i'd try reinstalling both.