続 cpsm で Vim: Cought deadly signal ABRT が出てしまう
会社で使っている Mac でも同様の問題が発生し、記事の方法に従ったところ解決しなかったので改めて調査して解法を探りました。
検証環境
python の実行ファイルと優先度は下の通り。
$ where python /Users/t308/.pyenv/shims/python /usr/local/bin/python /usr/bin/python
検証
1. 普通に install.sh を使ってインストール
まず README に従って cpsm のリポジトリにある install.sh を実行してインストールしてみる。install.sh は素朴な shell script で、build ディレクトリを作成して cmake -> make install している。
実行して cmake のデバッグメッセージを眺めると、Python のインタプリタは正しく探せているものの、ライブラリは System Python のライブラリを参照している。
$ ./install.sh ... ... -- Found PythonInterp: /Users/t308/.pyenv/shims/python2.7 (found version "2.7.11") -- Found Python executable: /Users/t308/.pyenv/shims/python2.7 -- Found Python version: 2.7.11 -- Found Python library: /usr/lib/libpython2.7.dylib ... ...
出力されたオブジェクトファイルがリンクしている Python ライブラリを見てみると、System の Python framework を使っている。
$ otool -L build/cpsm_py.so build/cpsm_py.so: /Users/t308/.vim/bundle/cpsm/build/cpsm_py.so (compatibility version 0.0.0, current version 0.0.0) /System/Library/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.10) /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)
この状態で CtrlP してみると、以下のような出力とともに Vim が終了する。
Vim: Caught deadly signal ABRT Vim: Finished. [1] 51311 abort env LANG=ja_JP.UTF-8 vim "$@"
2. cmake のオプション値を指定して直接ビルドする
次に、 install.sh を使わずに、cmake の PYTHON_LIBRARY 変数の値を直接指定してビルドしてインストールしてみる。
$ cd cmake $ cmake -DPYTHON_LIBRARY=/usr/local/opt/python/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib .. ... ... -- Found PythonInterp: /Users/t308/.pyenv/shims/python2.7 (found version "2.7.11") -- Found Python executable: /Users/t308/.pyenv/shims/python2.7 -- Found Python version: 2.7.11 -- Found Python library: /usr/local/opt/python/Frameworks/Python.framework/Versions/2.7/lib/libpython2.7.dylib ... ... $ make install
再度オブジェクトファイルのライブラリを確認してみる。
$ otool -L autoload/cpsm_py.so autoload/cpsm_py.so: cpsm_py.so (compatibility version 0.0.0, current version 0.0.0) /usr/local/opt/python/Frameworks/Python.framework/Versions/2.7/Python (compatibility version 2.7.0, current version 2.7.0) /usr/lib/libc++.1.dylib (compatibility version 1.0.0, current version 120.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1213.0.0)
それらしいあれになりましたね。CtrlP してみても元気に動きます。めでたいと思います。
これでも解決しないときは vim 自体をビルドし直すと解決する場合もあるようです。自分は Homebrew で入れているので以下のような感じに(オプションはよしなに)。
$ brew reinstall vim --with-lua --with-luajit --with-mzscheme --HEAD