ぼちぼち日記

おそらくプロトコルネタを書いていることが多いんじゃないかと思います。

node-0.7.x の新機能: GYPによる Node.js のビルド (追記)

先程ちょうど node-0.7.1 がリリースされました。

実は前回書いた GYP 周りのビルドで少し修正が加えられています。nodeをGYPでビルドする際に Release/Debug を選ぶのですが(default は Release)、node-0.7.0 では Debug をビルドするには make BUILDTYPE=Debug と明示的に指定(環境変数でもOK)しなければなりませんでした。
node-0.6.x までは configure --debug でビルドタイプを指定できました。そのオプションがGYPでは有効になっていなかったので、パッチを送りました。
Fix: Makefile not to ignore --debug option in configure
GYPの設定ファイル中の debug フラグを読み込むため、 Makefilepythonスクリプトをじかに埋め込んだパッチだったのですが、やっぱりやり方がきれいじゃないですね。(GYPは Makefile を動的に生成しますが、逆に Makefileが GYP設定を参照することは非常に辛いことがわかりました。)
結果 config.mk にビルドタイプ設定を埋め込んで include する方法で修正されました。(Benにはいつも脱帽です。)

ということで、メデタク下記の通り configure --debug で Debug ビルドができるようになりました。

unix:~/tmp/node-v0.7.1> ./configure --debug
{ 'target_defaults': { 'cflags': [],
                       'defines': [],
                       'include_dirs': [],
                       'libraries': ['-lz']},
  'variables': { 'host_arch': 'ia32',
                 'node_install_npm': 'true',
                 'node_install_waf': 'true',
                 'node_prefix': '',
                 'node_shared_cares': 'false',
                 'node_shared_v8': 'false',
                 'node_use_dtrace': 'false',
                 'node_use_isolates': 'true',
                 'node_use_openssl': 'true',
                 'node_use_system_openssl': 'false',
                 'target_arch': 'ia32',
                 'v8_use_snapshot': 'true'}}
creating  ./config.gypi
creating  ./config.mk
unix:~/tmp/node-v0.7.1> cat config.mk
# Do not edit. Generated by the configure script.
BUILDTYPE=Debug

GYPによる C++ アドオンモジュールの作成方法はこのパッチが採用されてから書こうかなと思っていたんですが、少し放置系になってます。気長に返事を待ちますか。