読者です 読者をやめる 読者になる 読者になる

mzschemeインタプリタオプションをつけたvimのビルドがうまくできない

Macvimからmzschemeインタフェースを使いと思ってvimの再ビルドをしていますが、かなり手こずっています。

手順としては

  1. MacPortsvimのPortfileをカスタマイズ
  2. 最低限のビルドをできるようにする
  3. mzschemeオプションをつけてビルドをする

という感じで進めました。
メモ・記録として残します。
この手順が間違っている可能性がある事も明記しておきます。

Macportsvimのビルド準備


まずは下記サイトから、Portfileをダウンロードし
MacPorts WikiJP】
http://lapangan.net/darwinports/index.php?cmd=read&page=PrivatePortfile%2FVim&word=vim

Portfileとfilesを差し替える。
【差し替えるファイルパス】

/opt/local/var/macports/sources/rsync.macports.org/release/ports/editors/vim/Portfile

さっそくvimのビルドをport経由で試みたのですが、依存関係の7pzipのインストールでこけたので、デフォルトのPortfileの設定から下記で公開されている、Portfileに差し替えました。バージョンもあがっているみたいです。
http://svn.macports.org/repository/macports/trunk/dports/archivers/p7zip/

これで最低限のvimをビルドできるようになりました。

mzschemeのインタプリタオプションをつけたビルド

次に、mzschemeをインストールするのですが、portから

sudo port install mzscheme

もしくは、公式サイトからダウンロードして配置する方法の2つです。

/usr/local/plt

に公式ページからダウンロードし展開したファイル群を配置しておきます。
コンソールからmzschemeが起動できるか確認もしておきます。

次に、port経由でbuildするので、Portfileのconfigureに+mzscheme指定mzschemeのパス*1を追加します。

variant mzscheme {
    configure.args-append   --enable-mzschemeinterp --with-plthome=/usr/local/plt
}

これでビルドを行うと、

ld: framework not found PLT_MzScheme
collect2: ld returned 1 exit status

とエラーが表示されたので、Portfileのconfigure.envのLDFLAGSに

 -F${prefix}/Library/Frameworks

を追加します。
そうすると、コンパイルできるようになります。

コンパイルしたVimを起動すると、

dyld: Library not loaded:
PLT_MzScheme.framework/Versions/371_3m/PLT_MzScheme

とエラーの表示がされます。
起動確認の為だけにシンボリックリンクで試してみると、起動できました。*2
本来は、環境変数 DYLD_FALLBACK_FRAMEWORK_PATH をすると良いそうです。

has関数で、mzshemeインタプリタが使えるかどうか試します。

1が返され、mzschemeインタフェースが使用できる事が確認できました。

が・・・

:mzscheme(+ 1 1)

と試すと

E185: Cannot find color scheme desert
Press ENTER or type command to continueVim: Caught deadly signal BUS

エラーが表示されて、vimが落ちてしまいます。

<< 今ここ

最後に

うーん、厳しいなぁ。
mzschemeインタフェースを使えるようにするのがここまで難しかったとは・・・
一時断念し、schemeの取り組みに集中し馴れてきた頃に最終目標としてvimからschemeを使えるようにするとか。
断念する事も勇気か。でも、次する時にうまくできるとも限らないしな。

悩ましい。

最後になりましたが、今回のMacports経由のvimコンパイル作業に関して、下記サイトでコンパイルしたvimを公開している「Sakamotoさん」に色々と相談をして色々とアドバイスを頂きました。改めてお礼申し上げます。
http://sourceforge.jp/forum/forum.php?forum_id=13420

*1:Portの場合は「/opt/local/var/macports/software/mzscheme/371_1/opt/local」かな。

*2:これではなんの解決にもならないです。