人にはそれぞれ役割ってのがあって,やっていいことと,いけないこと,ってのがあるってこと -- MacVim-Kaoriyaのソースからビルド(失敗)
この度,Applenが2019年向けに仕掛けた"初売り"とか言う戯れにまんまと引っ掛かり🤣*1,マシンを新調しました.
Macbook Air.
煩悩百八つ全てを,ガッツリ抱きかかえたまま年を越したその翌日,24,000円に目がくらみ,1月2日当日にサイトから注文.
後日,ヘラヘラと受け取りに伺ったApple Storeで*2,清算の時になって始めて,ソイツは初売りの対象外であることを知る,という痴態を晒すことから始めました,2019年.*3
折角なので作業環境見直そうか,と言う流れの中で,とうとう「Vimをソースコードからビルドとか?,ってが?!」と,トチ狂った妄想を始めるようになったのですよ,と言うのが今回のお話です.
きっかけ
"今更" なのですが,defx.nvim
の存在を知ったこと,になるでしょうか.
改めて自身の vimrc
を眺めていた中,「unite.vim
って何で入れていたんだっけ?」となり,躊躇なく,その定義をごっそり落としました.
その結果知ったことが,unite
はvimfiler.vim
だけのために入れていた,ということ.
何だか悲しい気持ちになったのを切っ掛けに代替を探すことに.
そんな中,この世には既にdefx.nvim
なるものが存在している,と言うことを知ったわけです.
既に2017年には在ったらしいって,...お得意の周回遅れです orz
それから
こんな感じでした.:
- よし,
defx.nvim
を導入しよう!
↓ - エラー
[defx] defx requires Vim 8.1+.
↓ - 「...」使っている
[MacVim-Kaoriya][13]
のMacVim
(Vim
)は,8.0
であることを"今更"知る.
↓ - こればかりはどうしようもない,と諦める.*4
↓ - 何時もの,無駄に壮大な回り道を経て,
MacVim-Kaoriya
の《ソースコードからのビルド》で言っている事にやっと,"今更"に気づく.*5
↓ - これキッカケに,何の気なしにMacVim-Kaoriya自身をインストールしているformulaを覗きに行く.
↓ - 目に入った,PythonのVesionにある
3.7
と言う記載に「はぁ?」となる....そしたら,マジでした.*6
↓ - そしてこちらも怖いもの見たさで何の気なしに,formulaで呼んでいるソースがあるリポジトリを覗きに行く.
↓ - そのリポジトリのトップページのリストにあるコミットのメッセージで,幾つかの気になる記載が目に入る...《Vim 8.1 release》だと?
↓ - も,し,か,し,て,?
ということで.
やってみましょうか.
《HomeBrewでビルドする》
ほんと,Homebrewには毎度毎度感謝.
ちなみに
ハッピーエンドではありません.
結果的に,8.0
をそのまま使うことになりました.(溜息)
ですが"初めて"記念日なので(?,この恥ば晒しておきたいと思います.
作業中,つまづいた時どうした,のTL;DR
- 既存の
MacVim-Kaoriya
がいたら,アンインストールしておいた方が良いと思います.
(→後述,Step0) lua@5.1
が無いと言われるので,brew install lua@5.1
しておきます.
(→後述,Step3)- MacVim-Kaoriya本体ソースの
macvim/src/MacVim/MMPreferenceController.h
は,以下のような変更をしておきます.:
--- a/src/MacVim/MMPreferenceController.h +++ b/src/MacVim/MMPreferenceController.h @@ -9,7 +9,7 @@ */ #import <Cocoa/Cocoa.h> -#import <DBPrefsWindowController.h> +#import "DBPrefsWindowController.h" @interface MMPreferenceController : DBPrefsWindowController { IBOutlet NSView *generalPreferences;
(→後述,Step3のもう1回) brew edit macvim-kaoriya
叩いて,MacVim-Kaoriya本体のインストールで使っているformulaの,下記該当箇所を以下の通り更新しておきます.:
--- a/macvim-kaoriya.rb +++ b/macvim-kaoriya.rb @@ -144,7 +144,8 @@ EOL end resource("CMapResources") do - url 'https://raw.githubusercontent.com/adobe-type-tools/cmap-resources/master/Adobe-Japan1-6/CMap/UniJIS-UTF8-H' - sha256 '29dfdbfe5dc6e9bae41dfc6ae2c1cf7b667f5b69b897c8f14eb91da493937673' + url 'https://raw.githubusercontent.com/adobe-type-tools/cmap-resources/master/Adobe-Japan1-7/CMap/UniJIS-UTF8-H' + sha256 'a5181b67d1729e8fb483410df1e2dd02cee018fc2b27ca0bb5149bbcfe503b02' end end
参照先はコチラ,cmap-resources/Adobe-Japan1-7/CMap/UniJIS-UTF8-H
.
(→後述,Step3の3回目)
いずれも,メインであるbrew install --HEAD macvim-kaoriya
のところなのですが,
これらトラップは,"あくまで,エントリ時点で"の話で,次のバージョンアップ時にはすべて解決していると思います.
どれもそんな内容のものです.
以下詳細になります.
Step0: 準備
既存のMacVim-Kaoriya.app
は,たぶん,削除しておいた方が良いと思います.
% brew cask uninstall macvim-kaoriya
確証はないのですが,どうも最後のsymlink生成でパパッとエラー吐かれるかも,なので.:
: (略) Error: The `brew link` step did not complete successfully The formula built, but is not symlinked into /usr/local Could not symlink bin/gview Target /usr/local/bin/gview already exists. You may want to remove it: rm '/usr/local/bin/gview' To force the link and overwrite all conflicting files: brew link --overwrite macvim-kaoriya To list all files that would be deleted: brew link --overwrite --dry-run macvim-kaoriya Possible conflicting files are: /usr/local/bin/gview -> /Applications/MacVim.app/Contents/bin/mvim /usr/local/bin/gvim -> /Applications/MacVim.app/Contents/bin/mvim : (略)
疲れて,説明のために再現する気力ありません.
間違っていたらごめんなさい.
Step1: Universal Ctags
《関数やクラスの定義元にジャンプできるやつ》なのだそうです.
% brew tap universal-ctags/universal-ctags ==> Tapping universal-ctags/universal-ctags : (略) % brew install --HEAD universal-ctags : (略) 🍺 /usr/local/Cellar/universal-ctags/HEAD-89811d9: 325 files, 4.3MB, built in 1 minute 5 seconds
OK.
Step2: migemo
《ローマ字のまま日本語をインクリメンタル検索できるmigemo機能》,だとか.
% brew tap splhack/splhack ==> Tapping splhack/splhack : (略) % brew install --HEAD cmigemo-mk : (略) 🍺 /usr/local/Cellar/cmigemo-mk/HEAD-5c014a8: 24 files, 11.6MB, built in 10 seconds
OK.
Step3: MacVim-Kaoriya
% brew install --HEAD macvim-kaoriya ==> Installing macvim-kaoriya from splhack/splhack : (略) Error: An exception occurred within a child process: RuntimeError: brew install cmigemo-mk gettext lua lua@5.1 luajit python ruby universal-ctags can't find lua@5.1
ですよね.そう簡単に行くわけありませんよね.
`lua@5.1`?
lua@5.1
が無いって言うので.
% brew install lua@5.1 ==> Downloading https://homebrew.bintray.com/bottles/lua@5.1-5.1.5_8.mojave.bottle.tar.gz ######################################################################## 100.0% : (略) 🍺 /usr/local/Cellar/lua@5.1/5.1.5_8: 22 files, 245.6KB
よし.
Step3: MacVim-Kaoriya もう1回
お願いします.
% brew install --HEAD macvim-kaoriya ==> Installing macvim-kaoriya from splhack/splhack : (略) : ==> ./configure --prefix=/usr/local/Cellar/macvim-kaoriya/HEAD-9e81e31 --with-features=huge --enable-multibyte --enable-terminal --enable-netbeans --with-tlib=ncurses --enable-cscope --enable-perlinterp=d ==> PATH=$PATH:/usr/local/Cellar/gettext/0.19.8.1/bin make -C src/po MSGFMT=/usr/local/Cellar/gettext/0.19.8.1/bin/msgfmt ==> make Last 15 lines from ~/Library/Logs/Homebrew/macvim-kaoriya/03.make: 1 error generated. : (略) : ** BUILD FAILED ** The following build commands failed: CompileC /tmp/macvim-kaoriya-20190119-76939-1qladyp/src/MacVim/build/MacVim.build/Release/MacVim.build/Objects-normal/x86_64/MMPreferenceController.o /tmp/macvim-kaoriya-20190119-76939-1qladyp/src/MacVim/MMPreferenceController.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler (1 failure) make[1]: *** [macvim] Error 65 make: *** [first] Error 2 If reporting this issue please do so at (not Homebrew/brew or Homebrew/core): https://github.com/splhack/homebrew-splhack/issues
(溜息)
`MMPreferenceController.o`?
ここがダメ,と指し示されているのが.:
CompileC /tmp/macvim-kaoriya-20190119-76939-1qladyp/src/MacVim/build/MacVim.build/Release/MacVim.build/Objects-normal/x86_64/MMPreferenceController.o /tmp/macvim-kaoriya-20190119-76939-1qladyp/src/MacVim/MMPreferenceController.m normal x86_64 objective-c com.apple.compilers.llvm.clang.1_0.compiler
誰?,って感じなのですが,何となく気になるキーワードを適当に検索窓にぶん投げてみて引っ掛ってきたのがこちら.:
で,これを伝って辿り着いたのがこちら.:
#import <Cocoa/Cocoa.h> - #import <DBPrefsWindowController.h> + #import "DBPrefsWindowController.h"
"っぽい"じゃん🙃
これをターゲットにMacVim-Kaoriyaの方ではどうなっているかしら,と同じ場所を掘ってみましたら,変更前#import <DBPrefsWindowController.h>
の様子.
ですので,上述同様の変更を施しておきましょう.
でも,これが本当に正しいことをやっていのるかについては,全く分かっていません.あは.
どうやら
» MacVim KaoriYaをSnow Leopard + Homebrewでビルドした: 黄昏てなんかいられない
» MacVim-kaoriyaでrubyが認識できないときの対応 - 個人的なまとめ
同じようなケースに遭遇している方は数少ないですが他にもいらっしゃるようで報告があり,読み解くのに勉強になりました.
Step3: MacVim-Kaoriya 3回目
頼むよ.
% brew install --HEAD macvim-kaoriya ==> Installing macvim-kaoriya from splhack/splhack : (略) ==> ./configure --prefix=/usr/local/Cellar/macvim-kaoriya/HEAD-4091dff --with-features=huge --enable-multibyte --enable-terminal --enable-netbeans --with-tlib=ncurses --enable-cscope --enable-perlinterp=d ==> PATH=$PATH:/usr/local/Cellar/gettext/0.19.8.1/bin make -C src/po MSGFMT=/usr/local/Cellar/gettext/0.19.8.1/bin/msgfmt ==> make ==> Downloading https://raw.githubusercontent.com/adobe-type-tools/cmap-resources/master/Adobe-Japan1-6/CMap/UniJIS-UTF8-H curl: (22) The requested URL returned error: 404 Not Found Error: An exception occurred within a child process: DownloadError: Failed to download resource "macvim-kaoriya--CMapResources" Download failed: https://raw.githubusercontent.com/adobe-type-tools/cmap-resources/master/Adobe-Japan1-6/CMap/UniJIS-UTF8-H
んんっだよ!
`Adobe Type tools` の `CMap Resources`?
「ダウンロードに失敗した」言っているので,その取得先のパスから "adobe-type-tools" や "cmap-resources" ってのに目星をつけ,で辿り着いたのがこちら.:
» GitHub - adobe-type-tools/cmap-resources: CMap Resources
取得先のパスをなぞって見てみると,確かにAdobe-Japan1-6
と言うリソースは無く,Adobe-Japan1-7
となっています.
Adobe何チャラとかいうのは,本体のformulaを覗いていた時に何となく目に入ってきていたので.:
% brew edit splhack/splhack/macvim-kaoriya
formulaに,以下のように変更.
resource("CMapResources") do - url 'https://raw.githubusercontent.com/adobe-type-tools/cmap-resources/master/Adobe-Japan1-6/CMap/UniJIS-UTF8-H' - sha256 '29dfdbfe5dc6e9bae41dfc6ae2c1cf7b667f5b69b897c8f14eb91da493937673' + url 'https://raw.githubusercontent.com/adobe-type-tools/cmap-resources/master/Adobe-Japan1-7/CMap/UniJIS-UTF8-H' + sha256 'a5181b67d1729e8fb483410df1e2dd02cee018fc2b27ca0bb5149bbcfe503b02' end
SHA256の値の更新も必要になるかと思ったので,一応書き換えておくことに.
SHA256の取得方法
% shasum -a 256 {値を取りたいファイル名/パス}
{ハッシュ値} {ファイル名}
で返ってきます.
今回のケースですと,こんな感じ.*7:
% shasum -a 256 UniJIS-UTF8-H a5181b67d1729e8fb483410df1e2dd02cee018fc2b27ca0bb5149bbcfe503b02 UniJIS-UTF8-H
Step3: MacVim-Kaoriya 4回目
まだ?
% brew install --HEAD macvim-kaoriya ==> Installing macvim-kaoriya from splhack/splhack : (略) 🍺 /usr/local/Cellar/macvim-kaoriya/HEAD-4091dff: 2,390 files, 47.8MB, built in 1 minute 44 seconds
終わった
お疲れ様です.*8
% mv /usr/local/Cellar/macvim-kaoriya/HEAD-2a4cca8/MacVim.app /Applications/
やりながら書いていた感じでしたので,長くなってしまいました.
お恥ずかしい.
でも
早速!
とばかりに,コマンドラインで:version
を実行すると,...お,落ちる.orz
でもGUIメニュー[MacVim > MacVimについて]を見ると,8.1
にはなっている模様.
と言いますのが,冒頭の画です.
試しに,とりあえず,で:Defx
叩いてみると,起動してくれました.
今回の「defx.nvim
を使うために8.1
にしてみる」と言う作業目的は一応達成されたので,めでたしめでたし,となのでしょうが,...実は結局,8.0
に戻すことにしました.
どうもDropBoxに格納しているテキストファイル*9を開こうとしても堕ちる.
あと,transparency
のオプションも効かなくなっている.
何故っ...やはり何かどっかで良くない事やっているんだろな...もうここまでくると,ついていけません.
と言うことでして
大人しく,黙ってオフィシャルなリリースを待ちたいと思います...
素人は素人らしく.
終わりに
結果,試みは失敗に終わりましたが,
今回の経験を通して,ソースからビルドして使う,というシーンにある文脈を曲がりなりにも感じ取ることができたような気がします.
勿論間違い,勘違い,沢山あるでしょうが.
ちょっと腑に落ちない風景ではあったのですよね.
このMacVim-Kaoriyaもそうですが,
折角,すぐ使えるような形で提供されているその隣,その同列に,「ソース形式のもあるよ」なリンクがあるのは,素人である自分の感覚では,すんなりと飲み込み難いものがあったりしてました*10.
根本的に,"自分には絶対起こり得ないもの",と言う捉え方をしているのもあって,
そういう人と世界がある,と言うことは何となぁ~く理解は出来ても,どうも体験としてイメージできるものがなかったのですが,
今は,「もしかしたら? こんなん?」と勝手に思ってしまっているのですが,どんなもんでしょう.
・
・
・
じ か ん,が え じ で.泣
と言うことで.はいおしまい.
*1:おまえが悪い😜
*2:キーボードはUSにしてもらったので.
*3:ま,AirにRetinaディスプレイ来ないかなぁ,ってずっと長い間伺っていた中でのことなので,その後悔からの立ち直りは早かったですけど.
*4:'Neovim',という選択肢もありますが,一つのプラグインのために移行するというのも,ちょっと情緒的な話ですが,引っ掛かるところがあったので止めてます.
*5:自身,MacVim-Kaoriyaのインストールは,こちら'delphinus/homebrew-macvim-kaoriya'を利用させて頂いており,これ使うやり方と何が違うのだろうと天然でずっ~と思っていたのです...やっと分かりましたよ.つか遅すぎ.orz
*6:と言うことは以前,こんなエントリやこんなエントリで言ってきたようなことに,悩まされなくなると言うこと?...となって,朗々と語っていた自分,かなり恥ずかしい
*7:ファイルは一度ローカルにcloneして確認した.urlで指定してもできるのだろうか...
*8:ほんっと,疲れた.
*9:glidenote/memolist.vimを使わせて頂いていて,全てのデータの格納先をDropBoxにしているのです.
*10:何と申しかすか,...自身の体験としてどうしてもイメージ出来ない感じ?,と言う表現で伝わるかしら.