MacPorts で ctags-5.7J を作ってみる
以前 ctags-5.6J1 を MacPorts の PrivatePortfile からインストールした。
vim で tags ファイルを作って、Ctr + ] でタグジャンプを行ってみたが、
うまい事メソッドにジャンプしない。
JSONView
ググったら上記サイトに書かれてた。ctags-5.7J にすると良いみたい。
MacPorts の PrivatePortfile の ctags のバージョンが 5.6J1 で、
5.7J にはまだ対応してない。
ソースからインストールする事も考えたが、
せっかくだから自分で Portfile を作成してみる。
# お約束ですが、自己責任で。
ctags-5.7J をそのままインストールすると、emacs がインストールする ctags と衝突してしまうらしい。
http://d.hatena.ne.jp/mitsygh/20070711/1184147703
なので、上記のサイトを参考に patch ファイルを作成する。
ctags-5.7J の取得
ctags日本語対応版
まず、ctags5.7J1.tar.gz をダウンロードし、/opt/local/src/ に展開する。
展開したファイルから、ctags.1、Makefile.ini をオリジナルファイルとしてコピーする。
# cp ctags.1 ctags.1.orig # cp Makefile.ini Makefile.ini.orig
http://d.hatena.ne.jp/mitsygh/20070711/1184147703を参考に、
ファイルを変更する。
patch-ctags.1.diff
-- ctags.1.orig 2007-12-12 23:03:14.000000000 +0900 +++ ctags.1 2007-12-12 23:04:46.000000000 +0900 @@ -1,19 +1,19 @@ -.TH CTAGS 1 "Version 5.7" "Darren Hiebert" "Exuberant Ctags" +.TH JEXCTAGS 1 "Version 5.7" "Darren Hiebert" "Exuberant Ctags" .SH "NAME" -ctags \- Generate tag files for source code +jexctags \- Generate tag files for source code .SH SYNOPSIS .TP 6 -\fBctags\fP [\fBoptions\fP] [\fIfile(s)\fP] +\fBjexctags\fP [\fBoptions\fP] [\fIfile(s)\fP] .TP 6 \fBetags\fP [\fBoptions\fP] [\fIfile(s)\fP] .SH "DESCRIPTION" -The \fBctags\fP and \fBetags\fP programs (hereinafter collectively referred to +The \fBjexctags\fP and \fBetags\fP programs (hereinafter collectively referred to as \fBctags\fP, except where distinguished) generate an index (or "tag") file for a variety of language objects found in \fIfile(s)\fP. This tag file allows these items to be quickly and easily located by a text
patch-Makefile.in.diff
-- Makefile.in.orig 2007-12-12 23:02:24.000000000 +0900 +++ Makefile.in 2007-12-12 23:02:51.000000000 +0900 @@ -6,7 +6,7 @@ # These are the names of the installed programs, in case you wish to change # them. # -CTAGS_PROG = ctags +CTAGS_PROG = jexctags ETAGS_PROG = etags # Set this to the path to your shell (must run Bourne shell commands).
Portfile を作成する
Portfile は PrivatePortfile の ctags-5.6j1 を参考に作成する。
変更する箇所は、
・version のバージョンを5.6j1 を 5.7 に変更。
・revision の行を削除。
・checksums を ctags-5.7J1.tar.gz のチェックサムに変更。
# md5 ctags-5.7j1.tar.gz MD5 (ctags-5.7j1.tar.gz) = 076ffb2fefd52e3d19e59d27f7b16120
上記を Portfile として保存し、portindex でインデックスを作成する。
localports/devel/ctags/Portfile --- Portfile.orig 2007-08-05 21:38:33.000000000 +0900 +++ Portfile 2007-12-13 23:38:09.000000000 +0900 @@ -2,8 +2,7 @@ PortSystem 1.0 name ctags -version 5.6j1 -revision 1 +version 5.7 categories devel maintainers nomaintainer@macports.org description Reimplementation of ctags(1) @@ -20,7 +19,7 @@ homepage http://hp.vector.co.jp/authors/VA025040/ctags/ platforms darwin freebsd master_sites http://hp.vector.co.jp/authors/VA025040/ctags/downloads/ -checksums md5 801f533e5f25f74c13cbef6353c92e27 +checksums md5 076ffb2fefd52e3d19e59d27f7b16120 patchfiles patch-Makefile.in.diff \ patch-ctags.1.diff configure.type gnu
インデックス作成後に、sudo port install ctags でインストールする。
# sudo port install ctags
-
-
- > Fetching ctags
- > Attempting to fetch ctags-5.7.tar.gz from
-
-
-
- > Attempting to fetch ctags-5.7.tar.gz from
-
-
-
- > Attempting to fetch ctags-5.7.tar.gz from
-
-
-
- > Attempting to fetch ctags-5.7.tar.gz from
-
エラーになった(´・ω・`)
どうやら、バージョン番号でファイル名を識別しているみたい。
配布されているファイル名が確かに、ctags-5.7j1.tar.gz となっている。
Portfile の version を 5.7j1 に変更する。
# sudo port clean ctags # sudo port install ctags
-
-
- > Fetching ctags
- > Attempting to fetch ctags-5.7j1.tar.gz from
-
-
-
- > Verifying checksum(s) for ctags
- > Extracting ctags
- > Applying patches to ctags
-
ファイルに取得に成功した。が、ctags-5.7j1 というディレクトリがない!とエラーになった。
/opt/local/var/localports/devel/ctags/work をみると、ctags-5.7 というディレクトリ名になっている。
ということは、ファイル名は ctags-5.7j1.tar.gz だけど、圧縮したディレクトリ名は ctags-5.7 で
ファイル名とディレクトリ名が一致していないからエラーになったと推測。
じゃあ自分でファイル名の方を変更すればいいんじゃね?ということで変更。
# mv ctags-5.7j1.tar.gz ctags-5.7.tar.gz
変更したものをローカルマシンのドキュメントルートに設置。
で、Portfile の homepage と master_sites の URL をlocalhost 変更し、
checksums にファイル名を一応つけておく。
localports/devel/ctags/Portfile --- Portfile.orig 2007-08-05 21:38:33.000000000 +0900 +++ Portfile 2007-12-13 23:38:09.000000000 +0900 @@ -2,8 +2,7 @@ PortSystem 1.0 name ctags -version 5.7j1 -revision 1 +version 5.7 categories devel maintainers nomaintainer@macports.org description Reimplementation of ctags(1) @@ -20,7 +19,7 @@ homepage localhost platforms darwin freebsd master_sites localhost -checksums md5 801f533e5f25f74c13cbef6353c92e27 +checksums ctags-5.7.tar.gz md5 076ffb2fefd52e3d19e59d27f7b16120 patchfiles patch-Makefile.in.diff \ patch-ctags.1.diff configure.type gnu
Portfile を置き換え、portindex をし、インストールする。
# sudo port clean ctags # sudo portindex # sudo port install ctags
-
-
- > Fetching ctags
- > Attempting to fetch ctags-5.7.tar.gz from
-
-
-
- > Verifying checksum(s) for ctags
- > Extracting ctags
- > Applying patches to ctags
- > Configuring ctags
- > Building ctags with target all
- > Staging ctags into destroot
- > Installing ctags 5.7_0
- > Activating ctags 5.7_0
- > Cleaning ctags
-
おぉ!インストールできた!!
さっそく vim で使ってみたら、アクセス修飾子がついているメソッドでもジャンプできた!
普通にソースからインストールした方が早い!って思ったり、思わなかったりw