The binary distributions of node.js no longer work on 10.5 (at least no distribution I could find.). So I went about building my own from source. There's several pitfalls I had to overcome, so I figured I'd list the solutions here.
Step 1. Download the source. I did this using:
git clone git://github.com/joyent/node.git
git checkout origin/v0.6.11-release
Step 2. Patch the included v8 source. If you dont patch it you get an error about missing symbols for Dictionary::SlowReverseLookup
, although they may be mangled, so it's not to obvious.
diff --git a/deps/v8/src/objects.cc b/deps/v8/src/objects.cc
index 88ebbf4..c4aea1c 100644
--- a/deps/v8/src/objects.cc
+++ b/deps/v8/src/objects.cc
@@ -10012,6 +10012,9 @@ template Object* Dictionary::
template Object* Dictionary::SlowReverseLookup(
Object*);
+template Object* Dictionary::SlowReverseLookup(
+ Object*);
+
template void Dictionary::CopyKeysTo(
FixedArray*,
PropertyAttributes,
Step 3. Download a new version of openssl and build and install shared versions. I downloaded version 0.9.8t and built it using:
./config shared
make
make install
On OS X by default this installs to
/usr/local/ssl
If you try to use the default version of openssl then you get a bunch of errors:
../src/node_crypto.cc: In member function ‘bool node::crypto::DiffieHellman::Init(int)’:
../src/node_crypto.cc:3537: error: ‘DH_generate_parameters_ex’ was not declared in this scope
../src/node_crypto.cc: In static member function ‘static v8::Handle node::crypto::DiffieHellman::ComputeSecret(const v8::Arguments&)’:
../src/node_crypto.cc:3811: error: ‘DH_check_pub_key’ was not declared in this scope
../src/node_crypto.cc:3814: error: ‘DH_CHECK_PUBKEY_TOO_SMALL’ was not declared in this scope
../src/node_crypto.cc:3817: error: ‘DH_CHECK_PUBKEY_TOO_LARGE’ was not declared in this scope
If you forget to build a shared version then node will almost compile, but complain about missing symbols at link time for the final binary.
Step 4. Build node using the changes you've made:
./configure --openssl-includes=/usr/local/ssl/include/ --openssl-libpath=/usr/local/ssl/lib/
make
make install
Now hopefully you'll have a running version of node installed.