2014年3月8日土曜日

[OCaml]omake -P で FAM not enabled

環境はDebian wheezy。
omakeの自動ビルドを試そうと、omake -Pしてみた。

~/workspace/ocaml/reversi$ omake -P  
*** omake: reading OMakefiles
*** omake: finished reading OMakefiles (0.00 sec)
Fatal error: exception Invalid_argument("FAM not enabled")

エラーとなった。
omakeをインストールする際に、libfam-devをインストールしていなかったためかと思い、
sudo apt-get install libfam-dev してから、
再度、opam reinstall omake とした。

再度、試してみる。
~/workspace/ocaml/reversi$ omake -P
*** omake: reading OMakefiles
*** omake: finished reading OMakefiles (0.01 sec)
*** omake: 0/1 targets are up to date
*** omake: failed (0.10 sec, 0/0 scans, 0/0 rules, 0/13 digests)
*** omake error:
   Failure: om_notify_open: (null)     

また、エラーになった。  
famデーモンを起動していないと出るらしい。
famなんかインストールしたっけ?

/etc/init.d$ ls *fam*
zsh: no matches found: *fam*

あれ?? famがない...
famを入れれば良いのかな?

~/workspace/ocaml/reversi$ sudo apt-get install fam
パッケージリストを読み込んでいます... 完了
依存関係ツリーを作成しています               
状態情報を読み取っています... 完了
以下のパッケージが新たにインストールされます:
  fam
アップグレード: 0 個、新規インストール: 1 個、削除: 0 個、保留: 1 個。
74.8 kB のアーカイブを取得する必要があります。
この操作後に追加で 270 kB のディスク容量が消費されます。
取得:1 http://ftp.jp.debian.org/debian/ wheezy/main fam i386 2.7.0-17 [74.8 kB]
74.8 kB を 0秒 で取得しました (124 kB/s)
以前に未選択のパッケージ fam を選択しています。
(データベースを読み込んでいます ... 現在 110180 個のファイルとディレクトリがインストールされています。)
(.../archives/fam_2.7.0-17_i386.deb から) fam を展開しています...
man-db のトリガを処理しています ...
fam (2.7.0-17) を設定しています ...
Starting file alteration monitor: FAM.

どうやらFAMが有効になったらしい。
omake -P を試してみる。

~/workspace/ocaml/reversi$ omake -P
*** omake: reading OMakefiles
*** omake: finished reading OMakefiles (0.00 sec)
*** omake: done (0.02 sec, 0/2 scans, 0/7 rules, 0/46 digests)
*** omake: polling for filesystem changes

お。動いた!
試しに、ファイルを編集してみる。

*** omake: file reversi_client.ml changed ←◆これを編集
*** omake: rebuilding
*** omake: done (0.25 sec, 1/3 scans, 2/11 rules, 6/93 digests)
*** omake: polling for filesystem changes

リビルドされた。これは便利。

参考