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 がどうこうと言われるが多分問題なしでビルド成功。