YAMAGUCHI::weblog

土足で窓から失礼いたします。今日からあなたの息子になります。 当年とって92歳、下町の発明王、エジソンです。

pfffをビルドする

はじめに

チャオ(こんにちは)、Python界のザッカーバーグです。最近「ソーシャル・ネットワーク」とかいう映画が流行ってるそうですね。僕も刺激されたのでFacebookが開発したソースコード解析ツールのpfffを試してみました。Python Hackathon 2011.02で紹介させてもらいましたが、何回かに分けてご紹介していこうと思います。

訂正:発表時点ではMac OSでビルドできませんでしたが、怒涛のアップデートによりビルド出来るようになりました

環境

コンパイルには最低限これらが必要。あと細々した物もいるけど多分入ってると思う。configureでエラー出たら探せばいいと思います。make入ってない人はこの記事見ないと思うのでその辺は省略。

  • OCaml >=3.11.0 (3.11.2がいいです)
  • make
  • PCRE
  • pkg-config
OCaml

OCamlは3.11.0以上が必要だとのこと。まあ素晴らしい言語なのでとりあえず枯れてる3.11.2を入れましょう。OCamlのインストールに関しては下記リンクのエントリを参照。まあconfigureしてmakeするだけの簡単なお仕事です。

$ curl -O http://caml.inria.fr/pub/distrib/ocaml-3.11/ocaml-3.11.2.tar.gz
$ tar xzf ocaml-3.11.2.tar.gz
$ cd ocaml-3.11.2
$ ./configure
$ make world.opt
$ sudo umask 022
$ sudo make install
依存パッケージ

MacPortsなら下記のパッケージを追加します。

$ sudo port install pcre cairo gtk2

Ubuntuならapt-getでPCREとかGTK2+とかいくつか入れます。(install_linux.txt参照)

$ sudo apt-get install libpcre3-dev libgtk2.0-dev libcairo2-dev libpango1.0-dev

ビルド

以上が入っていればすごく簡単。./configure && make depend && make でおしまい。

$ cd pfff
$ ./configure
$ make depend
$ make

さらにバイナリコンパイルしたかったらmake optして、インストールはmake installで。

$ make opt
$ make install

これでエラーもなく以下のファイルが生成されていたら大丈夫。

  • sgrep
  • stags
  • spatch
  • scheck
  • codemap
  • pfff
  • pfff_db

次回は使い方とかご紹介。

おまけ

OCamlは"wonderfuul language"という注釈付き。こういうところはおちゃめだな。

$ ./configure --prefix=/opt/local/
Checking your configuration.

OCaml (the wonderful language) is present.

make (gnu version) is present.
PCRE is present.

おまけ2

PCREがなくてコンパイル失敗したときのログ。ここで「pfff-dependencies.tgzがpfffのWebサイトから取得できる!」って言ってるけどどこ探しても見当たりません。

...
----------------------------------------------------------------------
!!!! You can try to compile and test pfff, 
but some features or plugins may be missing. !!!!

We have found 1 missing package. This package may be installed 
by picking it in pfff-dependencies.tgz available on the pfff website.
...