Mac Leopardでnode-v0.8.7をビルド出来た

node 0.6.xはLeopardでもビルド出来てたんだけど、次の安定版0.8.xになってからビルド出来ずに困ってました。Mac Leopardにnode-v0.8.1.pkgで入れたnodeをアンインストールする - kanonjiの日記でインストーラーを使ってみると、インストールディレクトリが固定であまり好みじゃなく、タイトル通り消してしまった。

解決策

$ CC=gcc-4.2 CXX=g++-4.2 nvm install v0.8.7

これでビルド出来ました。

CC=gcc-4.2 CXX=g++-4.2 ./configure && make
Fix issues building node 0.6.15 on OS X 10.5 · Issue #3114 · nodejs/node-v0.x-archive · GitHub

Leopardのデフォルトのgccだとビルド出来ず、gcc 4.2を使う必要があるとの事。nvmで入れてるけど、nvmでも上記の通りビルド出来ました。

補足

0.8.7のビルド出来たけど、対話モードがエラーする
$ nvm use v0.8.7
Now using node v0.8.7
$ node
> Assertion failed: (!!(events & UV__IO_READ) ^ !!(events & UV__IO_WRITE)), function uv__stream_io, file ../deps/uv/src/unix/stream.c, line 732.

ビルド出来たのは良いけど、対話モードで起動しようとするとエラーになりました。

`node < /dev/tty` doesn't seem to work as expected on OSX · Issue #3072 · nodejs/node-v0.x-archive · GitHubのissueで直したり直ってないってコメントが来たりで、対応中の様子。

$ sudo node web.js

ちょうど書いてるコードは、動かしてみたら動くみたいなので、対話モードだけ使えないのなら、まぁそんなに不都合は無いかな。

デフォルトのgccを使った場合のエラー
$ ./configure --prefix=/Users/myuser/tmp/node-v0.8.6
$ make
[長くビルド処理が進み・・・]
  LD_LIBRARY_PATH=/Users/myuser/tmp/node-v0.8.6/out/Release/lib.host:/Users/myuser/tmp/node-v0.8.6/out/Release/lib.target:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH; cd ../deps/v8/tools/gyp; mkdir -p /Users/myuser/tmp/node-v0.8.6/out/Release/obj.target/v8_snapshot/geni; "/Users/myuser/tmp/node-v0.8.6/out/Release/mksnapshot" --log-snapshot-positions --logfile "/Users/myuser/tmp/node-v0.8.6/out/Release/obj.target/v8_snapshot/geni/snapshot.log" "/Users/myuser/tmp/node-v0.8.6/out/Release/obj.target/v8_snapshot/geni/snapshot.cc"
/bin/sh: line 1: 63221 Bus error               "/Users/myuser/tmp/node-v0.8.6/out/Release/mksnapshot" --log-snapshot-positions --logfile "/Users/myuser/tmp/node-v0.8.6/out/Release/obj.target/v8_snapshot/geni/snapshot.log" "/Users/myuser/tmp/node-v0.8.6/out/Release/obj.target/v8_snapshot/geni/snapshot.cc"
make[1]: *** [/Users/myuser/tmp/node-v0.8.6/out/Release/obj.target/v8_snapshot/geni/snapshot.cc] Error 138
make: *** [node] Error 2

こんなエラーになりました。なんどかビルドは試していて、上記にsnapshot.logに色々書いてあったケースもあったような気がするんだけど、今回は空っぽでした。なんでだろう。

LeopardはPythonのバージョンもデフォルトだと合わない

python 2.6 or 2.7. The build tools distributed with Node run on python.

Installation · nodejs/node-v0.x-archive Wiki · GitHub

pythonもLeopardのデフォルトが2.5系なので、もう1個新しいバージョンを入れる必要があります。

環境

Mac Mac OS X 10.5.8(Leopard)
node 0.8.7
Python 2.7.2

書いた日

2012-08-16
例によって下書きのまま放置してた