11 / 23

2015

ArchLinuxでKaoriya-Vimをビルド(Git版)

ArchLinuxでKaoriYa-VimをGitリポジトリからビルドする

Windowsでは香り屋さんの配布しているコンパイル済みVimが使えます。またMac OSXでは他の有志の方が香り屋パッチを当てた MacVim-kaoriya のバイナリを使うことができます。

プライベートでUbuntuを使っているので、UbuntuでもKaoriya-Vimを使いたいと考えて試みたところ上手くいったので、以前、Qiitaに下記のエントリを投稿しました。

Ubuntuでkaoriyaパッチとmigemoを有効にしてVimをビルド

当時はVim公式の開発のバージョン管理にMercurialが使われていたため、上記エントリでもそれに合わせたビルド手順を紹介しました。

その後、Vimの公式リポジトリがGoogleCodeからGitHubに2015年8月に正式移行し、バージョン管理システムもMercurialからGitに変更されました。

また個人的な事情として最近はUbuntuの他にArchLinux(正確にはArchから派生したAntergos)を使っているので、ArchLinuxでもKaoriya-Vimをビルドできないか試した結果うまくいったので紹介します。

前置きが長くなりましたが、今回紹介する内容は

  • Gitリポジトリに移行したVimをソースからビルドする
  • 素のVimではなく香り屋パッチを当てる
  • C/migemoを使えるようにする
  • ビルドを行う環境はArchLinux(Antergos)
  • ほとんど同じやり方でUbuntuでもビルドできる

というものになります。

コンパイル環境

  • Antergos Linux(ArchLinuxにGUIパッケージマネージャがついた派生ディストロ)
  • gcc version 5.2.0
  • Gitが使えること(versionは特に問わない)
  • cmigemoは別途インストール
  • guiltも別途インストール

香り屋版では各種のパッチを当てていますが、Mercurialではパッチ管理のサブコマンドとしてmqが使われているのに対してGitでは今のところデファクトスタンダードに相当するものがないという違いがあったりするようです。Windows版Kaoriya-Vimではguiltというコマンドを使っているようなので今回はそれに合わせてみました。

C/migemoのインストール

ローマ字で検索が可能になるC/migemoをインストールします。 ソースからコンパイルするにはGitHubのREADMEにしたがい以下のようにします。 なお、以下の説明では作業ディレクトリはすべて~/src下とします。

% cd ~/src
% git clone git@github.com:koron/cmigemo.git
% cd cmigemo
% ./configure
% make gcc
% make gcc-dict
% make gcc-install

デフォルトでは/usr/local以下にインストールされます。

ArchLinuxだとAURでcmigemo-gitというパッケージがあるのでそちらをインストールする方が楽かも知れません。その場合、インストール場所は/usr下になります。

guiltのインストール

Gitでのパッチ管理コマンドであるguiltをインストールします。

guiltに関してはほとんどウェブ上での情報がありませんが、香り屋VimのGitHubリポジトリにセットアップ手順が書かれていたのでその通りにやります。

% cd ~/src
% git clone git@github.com:koron/guilt.git ./guilt
% cd guilt
% make install

これでguiltコマンドが使えるようになるはずです。

Vimと香り屋パッチのソースコードを取得

Vim本体と香り屋パッチのリポジトリをそれぞれGitHubからクローンします。

% cd ~/src
% git clone git@github.com:vim/vim.git ./vim
% git clone git@github.com:koron/vim-kaoriya-patches.git ./patches

パッチの適用

vimのリポジトリに移動し、guiltで適用するパッチの場所の設定をします。 このとき、そのままmasterブランチで作業してもいいのですが、後々バージョンを上げることを考えると使い捨てられるブランチを切っておきます。 なお、この記事を書いている時点で香り屋パッチはVim 7.4.884に公式に対応していますが、今回は欲をかいてVim本体のパッチレベルを最新の7.4.936で試みます。

% cd ~/src/vim
% git checkout -b v7-4-936
% git config guilt.patchesdir ../patches
% guilt init

guilt init コマンドで ~/src/patches/ ディレクトリ下にVimのブランチと同じ v7-4-936 というディレクトリが生成されます。

ただしこのままでは v7-4-936/ は空のディレクトリなので、~/src/patches/master/ の中身を丸ごとコピーしてください。

vim/src ディレクトリに移動して、guiltでパッチを当てます。

% cd ~/src/vim/src
% guilt push -a

Vimのパッチレベルが7.4.936では2011-remove-client-edge.diff のところで失敗します。

2011-remove-client-edge.diffの中身を見ると、src/gui_w32.c を修正しています。

Vim本体のコミット履歴を見てみると、パッチ7.4.930で同じファイルのほぼ同じ箇所に修正を加えていました。

Windows向けのパッチなのでArchLinuxには関係ないですが、いずれにしても最新のVimでは2011-remove-client-edge.diffは不要なので外しておきます。

~/src/patches/v7-4-936/series をエディタで開いて、2011-remove-client-edge.diffの行を削除しましょう。

再度、

% guilt push -a

とすると残りは幸い問題なくパッチが適用されました。guiltでパッチを適用すると、 guilt/元のブランチ名 というブランチが新たに作られます。今回の例でいうと guilt/v7-4-936 となります。

% guilt applied

でパッチが適用されているか確認できます。

cmigemoに対応したconfigureの作成

香り屋パッチを適用すると、vim/src/configure.in にmigemoに関する設定が生成されます。しかし、vim/src/auto/configure は自動的には更新されませんから、このまま ./configure しても-enable-migemo オプションが有効になりません。 vim/src に移動してから make autoconf を実行します。

% cd ~/src/vim/src
% make autoconf

これで、vim/src/auto/configure が更新され、中身をのぞいてmigemoで検索すると関数やヘッダファイル名でヒットするはずです。

configure、そしてmake

ここまで来たら、あとは ./configure してコンパイルするだけです。

ただしこのとき注意しなければならないのは、上記で make autoconf した直後は vim/src/ にいるので、1つ上の vim/ に戻ってから ./configure する必要がある点です。

% cd ../
% ./configure

以前にUbuntuで試したときは少々違うconfigureの生成方法だったせいか、 vim/src/ ディレクトリから ./configure してうまく行ったので、ここでハマってしまいました。

configure オプション

さて、configureするときのオプションですが、これは人によって好みがあるので僕が使った設定を紹介するに留めます。

% LIBS="-lmigemo" ./configure \
  --prefix=/usr/local \
  --with-features=huge \
  --enable-gui=gtk2 \
  --enable-multibyte \
  --enable-perlinterp=dynamic \
  --enable-pythoninterp=dynamic \
  --enable-tclinterp \
  --enable-rubyinterp=dynamic \
  --enable-luainterp=dynamic \
  --with-lua-prefix=/usr \
  --with-luajit \
  --enable-gpm \
  --enable-cscope \
  --enable-fontset \
  --enable-migemo \
  --enable-fail-if-missing

ただし、C/migemoを使うためには以下の2点だけは忘れないでください。

  • ./configure の前にLIBS="-lmigemo"を指定する。
  • --enable-migemo オプションを指定する。

それから、大量のオプションをコマンドラインで直打ちするのはタイプミスの恐れがあるので、上記のようなコマンドを記述したシェルスクリプトを作って実行するのがいいのではないかと思います。

make & インストール

configureして特に問題なければいよいよコンパイルしてインストールです。

% make
% sudo make install

sudoをつけるのは /usr/local にインストールするから(書くまでもないかも知れませんが)。

パスを通す

インストール場所にあらかじめパスが通っていなければ、/usr/bin/vim が優先されてしまうのでパスを通しましょう。

.bashrc や .zshrc に以下のように追記してターミナルを再起動するかsource .bashrc or source .zshrc で再読み込みさせます。

export PATH=/usr/local/bin:$PATH

+kaoriya +migemoになっていることを確認

コマンドラインで

% vim --version

とたたくか、Vimを起動してから

:version

と打ち、+kaoriya +migemo と表示されていれば無事に香り屋パッチとcmigemoは有効になっています。

お疲れ様でした。

余談

ここまで書いてきた内容ですが、実をいうと大半はArchLinux固有の話はなく、Ubuntuをはじめ他のLinuxディストリビューションにも当てはまる内容です。

もう一つ、今回はVimのソースコードと香り屋パッチを別々に取得するというやり方でしたが、下記の参考ページにもある香り屋さんのGitHubリポジトリにはそれらのソースと各種プラグインなどがが同梱された koron/vim-kaoriya があります。

僕のやり方がまだるっこしいと思われる方はそちらをクローンしてお試しください。

参考にしたページ

Category

Tags

#vim
#archlinux