I'm working on making Gentoo Linux's nodejs package compile against system
v8: http://bugs.gentoo.org/show_bug.cgi?id=348609
Passing --shared-v8 to node results in the following error (full log
attached to the bug above):

/var/tmp/portage/net-libs/nodejs-0.3.1/work/node-v0.3.1/build/../src/node_buffer.cc:635:
undefined reference to
`v8::Object::GetIndexedPropertiesExternalArrayDataType()'
/var/tmp/portage/net-libs/nodejs-0.3.1/work/node-v0.3.1/build/../src/node_buffer.cc:635:
undefined reference to
`v8::Object::GetIndexedPropertiesExternalArrayDataType()'
/var/tmp/portage/net-libs/nodejs-0.3.1/work/node-v0.3.1/build/../src/node_buffer.cc:635:
undefined reference to
`v8::Object::GetIndexedPropertiesExternalArrayDataType()'
/var/tmp/portage/net-libs/nodejs-0.3.1/work/node-v0.3.1/build/../src/node_buffer.cc:635:
undefined reference to
`v8::Object::GetIndexedPropertiesExternalArrayDataType()'
/var/tmp/portage/net-libs/nodejs-0.3.1/work/node-v0.3.1/build/../src/node_buffer.cc:635:
undefined reference to
`v8::Object::GetIndexedPropertiesExternalArrayDataType()'
default/src/node_buffer_3.o: In function
`node::Buffer::Data(v8::Handle<v8::Object>)':
/var/tmp/portage/net-libs/nodejs-0.3.1/work/node-v0.3.1/build/../src/node_buffer.cc:140:
undefined reference to `v8::Object::GetIndexedPropertiesExternalArrayData()'
default/src/node_buffer_3.o: In function
`node::Buffer::HasInstance(v8::Handle<v8::Value>)':
/var/tmp/portage/net-libs/nodejs-0.3.1/work/node-v0.3.1/build/../src/node_buffer.cc:635:
undefined reference to
`v8::Object::GetIndexedPropertiesExternalArrayDataType()'
default/src/node_buffer_3.o: In function
`node::Buffer::Length(v8::Handle<v8::Object>)':
/var/tmp/portage/net-libs/nodejs-0.3.1/work/node-v0.3.1/build/../src/node_buffer.cc:147:
undefined reference to
`v8::Object::GetIndexedPropertiesExternalArrayDataLength()'
/var/tmp/portage/net-libs/nodejs-0.3.1/work/node-v0.3.1/build/../src/node_buffer.cc:147:
undefined reference to
`v8::Object::GetIndexedPropertiesExternalArrayDataLength()'
default/src/node_buffer_3.o: In function
`node::Buffer::Data(v8::Handle<v8::Object>)':
/var/tmp/portage/net-libs/nodejs-0.3.1/work/node-v0.3.1/build/../src/node_buffer.cc:140:
undefined reference to `v8::Object::GetIndexedPropertiesExternalArrayData()'
collect2: ld returned 1 exit status

nodejs builds its bundled v8 with visibility=default, which also "fixes" the
problem for shared build. However, I'm not sure if that's a good idea, so I
created a patch to make those symbols exported instead:
http://bugs.gentoo.org/attachment.cgi?id=258953

--- include/v8.h.orig   2011-01-05 17:57:32.000000000 +0100
+++ include/v8.h        2011-01-05 17:57:58.000000000 +0100
@@ -1647,9 +1647,9 @@
       ExternalArrayType array_type,
       int number_of_elements);
   bool HasIndexedPropertiesInExternalArrayData();
-  void* GetIndexedPropertiesExternalArrayData();
-  ExternalArrayType GetIndexedPropertiesExternalArrayDataType();
-  int GetIndexedPropertiesExternalArrayDataLength();
+  V8EXPORT void* GetIndexedPropertiesExternalArrayData();
+  V8EXPORT ExternalArrayType GetIndexedPropertiesExternalArrayDataType();
+  V8EXPORT int GetIndexedPropertiesExternalArrayDataLength();

   V8EXPORT static Local<Object> New();
   static inline Object* Cast(Value* obj);

What do you think? Is that the correct solution, or maybe should nodejs stop
using those non-exported calls?

-- 
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users

Reply via email to