Intel Mac 上で PPC 用のテストをする方法

ここしばらく、PPC 上でしか再現しないバグを追うために、メインの Intel Mac と以前使っていた iBook G4 との間を行き来しながらテストをしていた。さすがにこれは効率が悪い。
.app は PPC バイナリのみを作るようにコンパイルすれば、強制的に Rosetta で実行することができるから、Intel Mac だけで問題ない。だが、コマンドラインから ruby を実行する unit test が問題だった。
PPC バイナリのみのコマンドを作って、execve で ruby に化けるしかないのかなぁと思っていたら、きむらさんによるとsysctlbyname で sysctl.proc_exec_affinity を指定して、子プロセスとして実行する方法があるらしい。
さっそく作ってみたら、Laurent から「それ /usr/libexec/oah/translate でできるよ」というコメントが。。orz たしかに、ps を見るとたまに居たよなぁ。
というわけで、さっそく RubyCocoa の install.rb に translate を組み込んでみた。

$ ruby install.rb test --use-rosetta

と実行すれば、Intel Mac 上で PPC 用のテストができるようになった。
せっかくなので、自作したソースを置いておきます。
http://limechat.net/rubycocoa/morph.zip