Androidのソースコード検索サービスを構築してみる

色々経緯(長いような長くないようなもの)があるわけでして、構築してみることにしました。
とりあえず、aospのmasterで構築してみます。

環境


GNU Globalのバージョンは、なるべく新しいものを入れるようにします。。。
Ubuntuのapt-getでインストールもできますが、ソースコードを解析した結果が正しくgenerateされません。
6.2.8だと正しく解析できました。(公式もdebianで配布しているパッケージは古いと記載があったので、Ubuntuも同じ感じでしょう)

事前準備


事前準備として、以下を実施します。

  • GNU Globalのインストール
  • Apache2のインストール
  • Androidのソースコードをダウンロード
GNU Globalのインストール

前述のように、UbuntuのリポジトリにあるGNU Globalは古いのでソースコードの解析が正しく行われません。
そのため、ビルドしてインストールします。

  1. ソースコードの取得(ここからダウンロード)
  2. ビルド(ここではデフォルト設定で行います)
1
2
$./configure --prefix=/usr/local/global
$make
  1. インストール
1
$sudo make install

ビルドの際に付与するオプションはご自身で設定してください。

Apache2のインストール

普通にインストールします。

1
$sudo apt-get install apache2

UbuntuっていうかDebian系使いづらいなぁ・・・。

Androidのソースコード取得

(公式)[]にしたがって実施します。
今回は「/var/aosp」のディレクトリ配下に保存することとします。

コード解析(タグ作成)の実施


以下のコマンドで実行します

1
2
$cd /var/aosp
$gtags -v

タグのHtml化


以下のコマンドで実行します。

1
2
$cd /var/aosp
$htags -afsnDvo --title Android --item-order=s --show-position --fixed-guid --auto-completion

非常に長いオプションですが、ソースコード検索フォームのhtmlが生成されます。
検索に加えて、検索フォームの上で入力補完をできるようにしていますので、CGIの実行が必要です。

Apache2の設定


以下のコマンドでブラウザから参照可能なディレクトリを作成します。

1
$mkdir -p /var/www/aosp

コンテンツの配備を実施します。
特に意図はないですが、コピーだとめんどいのでシンボリックリンクにします。

1
2
$cd /var/www/aosp
$ln -s ../aosp/HTML HTML

/etc/apache2/sites-enable/defaultsを編集します。

1
2
3
4
5
6
7
8
ScriptAlias /cgi-bin/ /var/www/aosp/HTML
<Directory "</var/www/aosp/HTML/cgi-bin">
    AllowOverride None
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl
    Order allow,deny
    Allow from all
</Directory>

編集完了後、apache2を再起動します。

1
$/etc/init.d/apache2 restart

ブラウザ上でhttp://localhost/aospにアクセスして、画面が表示されることを確認します。

感想


こういうサービスが、既に世の中にある訳で・・・

自分がやる必要ってあんまりないんじゃないかなーとか。。。