MacVim-kaoriyaがSnow Leopard非対応になった件について

今日MacVim-kaoriyaの自動アップデートしたら、MacVim-kaoriyaがSnow Leopard非対応になって起動しなくなってしまった。

macvim-kaoriya - MacVim KaoriYa - Google Project Hosting

古いOSでは自分でビルドせよってことなのでビルドしてみたけど色々ハマったのでメモ。

手順書:Building · b4winckler/macvim Wiki · GitHub

Gitリポジトリを取ってくる。ここは特に問題なし。

$ git clone git://github.com/splhack/macvim.git

configureする。ここも特に問題なし。

$ cd macvim/src
$ ./configure --with-features=huge \
              --enable-rubyinterp \
              --enable-pythoninterp \
              --enable-perlinterp \
              --enable-cscope

makeする。ここで第一の問題発生。

$ make
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_MACVIM -Wall -Wno-unknown-pragmas -pipe  -DMACOS_X_UNIX -no-cpp-precomp  -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       version.c -o objects/version.o
()
Undefined symbols:
  "_iconv_close", referenced from:
      _buf_write in fileio.o
      _readfile in fileio.o
      _readfile in fileio.o
      _readfile in fileio.o
      _my_iconv_open in mbyte.o
      _convert_setup_ext in mbyte.o
  "_iconv_open", referenced from:
      _my_iconv_open in mbyte.o
     (maybe you meant: _my_iconv_open)
  "_iconv", referenced from:
      _buf_write_bytes in fileio.o
      _buf_write_bytes in fileio.o
      _readfile in fileio.o
      _my_iconv_open in mbyte.o
      _string_convert_ext in mbyte.o
     (maybe you meant: _my_iconv_open)
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [Vim] Error 1

原因はMacPortsのlibiconvが1.14で、MacVimが求めているlibiconvのバージョンが2.0以降なことにあるらしい。
MacPortsのlibiconvを見ないようにするために $ port deactivate libiconv したが、依存パッケージが多すぎてdeactivateできないので、無理矢理ファイル退避させてからmakeする。そうすることでシステムに入っているlibiconv(2.0以降)が使われる。
ここで第二のエラーが発生するが、libconv起因の問題は解消しているので、一時退避したlibiconvは戻しておく。

$ pushd /opt/local/lib
$ sudo mkdir temporary
$ sudo mv libiconv.* temporary/
$ popd
$ make
gcc -c -I. -Iproto -DHAVE_CONFIG_H -DFEAT_GUI_MACVIM -Wall -Wno-unknown-pragmas -pipe  -DMACOS_X_UNIX -no-cpp-precomp  -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1       version.c -o objects/version.o
()
cp: /Users/craftone/macvim/src/MacVim/../po/ja_JP.UTF-8.mo: No such file or directory
chmod: /Users/craftone/macvim/src/MacVim/build/Release/MacVim.app/Contents/Resources/vim/runtime/lang/ja_JP.UTF-8/LC_MESSAGES/vim.mo: No such file or directory
** BUILD FAILED **


The following build commands failed:
MacVim:
	PhaseScriptExecution "Copy LC_MESSAGES" /Users/craftone/macvim/src/MacVim/build/MacVim.build/Release/MacVim.build/Script-528DA6661426D01E003380F1.sh
(1 failure)

make: *** [macvim] Error 1
$ #退避したlibiconvは元に戻しておく
$ pushd /opt/local/lib
$ sudo mv temporary/* . 
$ sudo rmdir temporary

このエラーの原因はutf-8のエラー情報がないため。EUCのエラー情報はあったので無理矢理UTF-8版を作る。

$ cd po   # ~/macvim/src/po
$ cp -p ja.po ja_JP.UTF-8.po
$ vim ja_JP.UTF-8.po
#vim内で  :set fileencode=utf-8 して :wq
$ make
$ ..  # ~/macvim/srcに戻る

これでようやく準備が整ったのでmakeする。

$ make

MacVim-generic.icons がどうこうと言われるが多分問題なしでビルド成功。