OpenGrokをローカルで動かしてソースコードを読むために
2012/04/07(土) 10:39 NetBSD はてブ情報 はてブに登録 はてブ数

ソースコードを追っかけるときに大変お世話になっているhttp://nxr.netbsd.orgですが、ここで使われているのはOpenGrokというツールです。

手元で動くとうれしいなぁということでpkgsrcを探すとdevel/opengrokがありました。

ここではNetBSDのsrc, xsrcを対象にOpenGrokをWebブラウザで使えるところまでの記録をしておきたいと思います。

まず、devel/opengrok, www/apache-tomcat7をpkgsrcからインストールします。
OpenJDKのインストールに結構時間がかかりました。

次に、NetBSDのソースを用意します。/export/s/HEADに置くことにしました。
ここでcvs -d /cvsroot/NetBSD srcなどとしてsrcやxsrcをチェックアウトしておきます。

/usr/pkg/share/opengrokに移動して、run.shに次のようなパッチをあてます。
--- run.sh.orig	2012-04-04 00:38:41.000000000 +0000
+++ run.sh	2012-04-05 11:18:37.000000000 +0000
@@ -3,7 +3,7 @@
 PROGDIR=/usr/pkg/share/opengrok
 
 # REQUIRED The root of your source tree
-SRC_ROOT=/your/src/tree/
+SRC_ROOT=/export/s/HEAD
 
 # REQUIRED  The directory where the data files like
 # Lucene index and hypertext cross-references are stored
@@ -18,13 +18,14 @@
 EXUB_CTAGS=/usr/pkg/bin/exctags
 
 # If you need to set properties (Ex. override the mercurial binary)
-#PROPERTIES=-Dorg.opensolaris.opengrok.history.Mercurial=/home/trond/bin/hg
+PROPERTIES=-Dorg.opensolaris.opengrok.history.cvs=/usr/bin/cvs
 
 # Uncomment the following line if your source contains Mercurial repositories.
 # SCAN_FOR_REPOS="-S"
+SCAN_FOR_REPOS="-S -H -v -r on -W ./configuration.xml"
 
 # You might want to add more available memory, and perhaps use a server jvm?
-#JAVA_OPTS="-server -Xmx1024m"
+JAVA_OPTS="-server -Xmx1024m"
 
 LOGGER="-D/usr/pkg/java/openjdk7/bin/java.util.logging.config.file=conf/logging.properties"
ポイントはSCAN_FOR_REPORSに与えた引数ですかね。あ、あとJAVA_OPTSはどっちでもいいのかなと思っていたら、今回のような大きなソースを食わせる時にはこのオプションをつけておかないと解析が全然終わらないことがわかったので有効にしています。

次に、source.warを/usr/pkg/share/tomcat/webappsにコピーします。このsource.warはconfiguration.xmlが/var/opengrok/etcにあることを期待しているので、生成されたconfuguration.xmlを/var/opengrok/etcに置きます。ディレクトリは自分で作ってあげないといけません。


次に/usr/pkg/share/tomcat/bin/startup.shを実行してTomcatを起動します。これで準備完了です。

Webブラウザでhttp://localhost:8080/sourceにアクセスすればhttp://nxr.netbsd.orgとほぼ同じことが手元のマシンで可能になります。やった!

名前:  非公開コメント   

  • TB-URL  http://www.tokuda.net/diary/0784/tb/