2013年2月2日土曜日

vim +kaoriya build on ubuntu.



<追記 2017/06/12>
以下の内容は、今日、既に古すぎる情報となっています。
現在は、公式で、githubにホストしてあり、gitでソースが取得できます。
また、各パッチの管理等は、guiltを使っていますが、あまりしっくり来ていません。
取りあえず、quiltやhgのmq extentionと同じコマンド体型なのでそのまま使っている感じです。
</追記 2017/06/12>



























さて、前から幾分たって、お久しぶりですが、早速vimの話です。

私は、数年前Windowsを使用していた時から、KaoriYaさんところのvimを使っていたので、
プライベートでも仕事でも、Linux (Ubuntu) に移行した後も、KaoriYa版vimと同じ様に
Migemo等々をつかいたかったので、自前でビルドして使っています。

そこで、KaoriYa patchをUnix系のOSで当てて使っている人の情報が
あまり見当たらなかったので、簡単にまとめてみます。
と、思ったら、現在ではここや、ここなど、いっぱいあるようです。
皆さん、わかりやすくまとめられているので、先に参照されると良いと思います。(2013/02/06 追記)

まず環境を整え、ソースの取得

vim-jp.orgLinuxでのビルド方法を参考に、「ソース取得」まで進める。

KaoriYaパッチをあてる

KaoriYaさんのところから、Win32でもWin64でもいいからダウンロードし、zipを展開したpatchディレクトリにあるkaoriya-hg.diffをあてる。
この時、hgの最新ソースと、KaoriYaさんのところのパッチのパッチバージョンが揃っていると、patchコマンドが失敗しないのでいい感じです。
$ unzip vim73-kaoriya-win64-20130131.zip
$ cd vim
$ patch -p 1 < ../vim73-kaoriya-win64/patch/kaoriya-hg.diff

configure.inにパッチをあてる

ここで、さらにconfigure.inにpatchあてます。
どうやら、AC_DEFINEの行は改行されていなければいけない様子(?)で、
これをやらないと、最後のmakeで、libmigemoがリンクできずにundefined symbolになってしまいました。
なので、下記のdiffを適当名前で保存して、
--- ./src/configure.in.bak 2013-02-02 01:09:57.432359586 +0900
+++ ./src/configure.in 2013-02-02 01:10:40.360572462 +0900
@@ -3565,7 +3565,8 @@
 if test "$enable_migemo" = "yes"; then
   AC_MSG_RESULT(no)
   AC_CHECK_LIB(migemo, migemo_open,
- [LIBS="$LIBS -lmigemo" AC_DEFINE(HAVE_MIGEMO)],,)
+ [LIBS="$LIBS -lmigemo"
+ AC_DEFINE(HAVE_MIGEMO)],,)
 else
   AC_MSG_RESULT(yes)
 fi
パッチをあてます
$ patch -p 1 < ../migemo_configure.in.patch

autoconfで、configureの再生成

次に、./src/configure.inが更新されても./src/auto/configureは自動で再生成されないようなので、 ./srcに入って、autoconfを実行させる。vim的にはmake autoconfでいいようだ。
$ cd src
$ make autoconf
ここで、自宅のUbuntu 10.04では、autoconfが失敗した。
その場合は、autoconf2.13パッケージをuninstallすれば、標準のautoconf(versionは2.65?)が使用され、 無事に./src/auto/configureが再生成される。

C/migemo (libmigemo) のインストール (2013/02/05 追記)

C/migemoについて書き忘れていました。

Ubuntu10.04の場合、簡単な方法は憩いの場さんのPPAを登録し、aptコマンドでインストールする方法です。
$ sudo add-apt-repository ppa:ikoinoba/ppa
$ sudo apt-get install cmigemo libmigemo-dev
もうひとつの方法としては、KaoriYaさんのC/Migemoから、ソースをダウンロードしてビルドします。 (最近、google codeからgithubに移行したようです)
$ git clone https://github.com/koron/cmigemo
$ cd cmigemo
$ ./configure
$ make gcc
$ sudo make install
Ubuntu12.04からは公式のuniverseリポジトリにあるので、簡単にインストールできます。
$ sudo apt-get install cmigemo libmigemo-dev

configure、makeの実行

ここでようやく、./configureして、makeの実行だ。
$ cd ../               # ./srcの中にいたので一個上に上がる。
$ ./configure
./configure の オプションは、環境ごとにpython3が使える使えないがあったので以下の通り。
スペック厨なので、とりあえず何でも使えるようにしてする。
CFLAGSは適当に拾ったものを使用させていただいております。基本的には-march=nativeだけやりたかった。
Ubuntu 12.04のLDFLAGSは mattnさんのブログから、ヒントもらいx86-64用に設定してます。

Ubuntu 10.04
./configure --prefix=/usr/local --with-features=huge --enable-pythoninterp=yes --disable-python3interp --enable-rubyinterp=yes --enable-perlinterp=yes --enable-luainterp=yes --enable-tclinterp=yes --enable-cscope --enable-gui=gtk2 --enable-fail-if-missing CFLAGS='-march=native -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE -D_REENTRANT -D_REENTRANT=1 -D_THREAD_SAFE=1' 
Ubuntu 12.04
./configure --prefix=/usr/local --with-features=huge --enable-python3interp=yes --enable-pythoninterp=yes --enable-rubyinterp=yes --enable-perlinterp=yes --enable-luainterp=yes --enable-tclinterp=yes --enable-cscope --enable-gui=gtk2 --enable-fail-if-missing CFLAGS='-march=native -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURCE -D_REENTRANT -D_REENTRANT=1 -D_THREAD_SAFE=1' LDFLAGS='-L/usr/lib/x86_64-linux-gnu' 
そして適当に、make
$ make -j4
$ sudo make install
とかする。
以上。

2013年1月15日火曜日

Hello Blogger Blog !!

Hello Blogger Blog !!
なんとなく、ブログを始めてみます。
生来の無精なもので、いつまで続くやらですが
IT関連の技術的なメモなんかを残していこうと思う次第です。