2012年03月11日

Windowsでrebarを使う

ふだんの開発をWindowsで行っているのですが、ErlangのビルドツールとしてVoluntasさんがこちらの記事で推奨してた、rebar (githubはこちらzipはこちら)を入れてみることにしました。

Windows固有のハマリが2つ。

・nmakeでmakeできない。
・self containing escriptになってるのを動かそうとしたら、escriptが下のようなメッセージを出してrebarを実行してくれない
C:\HOGEHOGE>escript rebar
escript: Failed to open file: C:\HOGEHOGE\escript.escript



というわけで、それぞれのとりあえずの解決。


・nmakeでmakeできない。

本体のビルド作業だけなら bootstrap.bat を実行すればよいので、makeではなく
C:\rebar> bootstrap.bat

のようにすればOKです。

・escriptがエラーを出してrebarを実行してくれない

上の手順でビルドして作られた「rebar」ファイルだけを持ってくれば動くはずなのですが、今度はescriptがうまく動かない。。。

解決してしまえばシンプルでした。

動かない > C:\HOGEHOGE> escript rebar


動く!  > C:\HOGEHOGE> escript.exe rebar


Franco Lombardoさんのこちらのエントリ(英語)にあるように、escriptを"escript.exe" として起動してあげないと、引数のファイルを読みに行ってくれないようです。

escriptのソースは読んでませんが、argv[0]が自分のファイル名(escript.exe)でない場合は、escript.exeが「argv[1]ではなく、argv[0]が実行すべきescriptファイルだ」と判断して、argv[0]そのもの、もしくはargv[0]に".escript"を付加したファイルを探しに行く、という動作になっているものと思われます。これ自体は妥当な動きなので「escript.exe」で実行するようにすればいいだけですね。

というわけで、

C:\> copy \rebar\rebar \HOGEHOGE
C:\> cd \HOGEHOGE
C:\> escript.exe rebar


という流れで、Windowsでもrebarの準備ができました^^


※補足

ビルドされたrebarファイルですが、Windowsで作ってもLinuxで作っても同じようにUnixのスクリプトファイル形式(#!で始まるあれ)で出力されます。というわけで、Erlangのバージョンが同じならLinux環境でビルドしたものをそのまま使うことも可能ですね。
posted by へろ at 11:19| Comment(1) | TrackBack(0) | Erlang
この記事へのコメント
rebarのディレクトリをよく見たら、rebarが生成されたディレクトリに、rebar.cmdがあって、これがWindows用のcmdファイルでした。これだと、C:> rebar compile とかできますね。すてき。
Posted by へろ at 2012年04月15日 12:16
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/54389546

この記事へのトラックバック