人にはそれぞれ役割ってのがあって,やっていいことと,いけないこと,ってのがあるってこと -- MacVim-Kaoriyaのソースからビルド(失敗)

この度,Applenが2019年向けに仕掛けた"初売り"とか言う戯れにまんまと引っ掛かり🤣*1,マシンを新調しました.
Macbook Air

煩悩百八つ全てを,ガッツリ抱きかかえたまま年を越したその翌日,24,000円に目がくらみ,1月2日当日にサイトから注文.
後日,ヘラヘラと受け取りに伺ったApple Store*2清算の時になって始めて,ソイツは初売りの対象外であることを知る,という痴態を晒すことから始めました,2019年.*3

折角なので作業環境見直そうか,と言う流れの中で,とうとう「Vimソースコードからビルドとか?,ってが?!」と,トチ狂った妄想を始めるようになったのですよ,と言うのが今回のお話です.

f:id:wooweezoowee:20190130213132p:plain

きっかけ

"今更" なのですが,defx.nvimの存在を知ったこと,になるでしょうか.

改めて自身の vimrc を眺めていた中,「unite.vimって何で入れていたんだっけ?」となり,躊躇なく,その定義をごっそり落としました.

その結果知ったことが,unitevimfiler.vimだけのために入れていた,ということ.

何だか悲しい気持ちになったのを切っ掛けに代替を探すことに.

そんな中,この世には既にdefx.nvimなるものが存在している,と言うことを知ったわけです.

既に2017年には在ったらしいって,...お得意の周回遅れです orz

それから

こんな感じでした.:

ということで.

やってみましょうか.

HomeBrewでビルドする



ほんと,Homebrewには毎度毎度感謝.

ちなみに

ハッピーエンドではありません.

結果的に,8.0をそのまま使うことになりました.(溜息)

ですが"初めて"記念日なので(?,この恥ば晒しておきたいと思います.

作業中,つまづいた時どうした,のTL;DR

  1. 既存のMacVim-Kaoriyaがいたら,アンインストールしておいた方が良いと思います.
    (→後述,Step0)
  2. lua@5.1が無いと言われるので,brew install lua@5.1しておきます.
    (→後述,Step3)
  3. 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回)
  4. 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

誰?,って感じなのですが,何となく気になるキーワードを適当に検索窓にぶん投げてみて引っ掛ってきたのがこちら.:

» homebrew macvim build failed on macOS 10.14 with Xcode 10 beta · Issue #690 · macvim-dev/macvim · GitHub

で,これを伝って辿り着いたのがこちら.:

  #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
f:id:wooweezoowee:20190130213503p:plain
でもGUIメニュー[MacVim > MacVimについて]を見ると,8.1にはなっている模様.

と言いますのが,冒頭の画です.

試しに,とりあえず,で:Defx叩いてみると,起動してくれました.
今回の「defx.nvimを使うために8.1にしてみる」と言う作業目的は一応達成されたので,めでたしめでたし,となのでしょうが,...実は結局,8.0に戻すことにしました.

どうもDropBoxに格納しているテキストファイル*9を開こうとしても堕ちる.

あと,transparencyのオプションも効かなくなっている.

何故っ...やはり何かどっかで良くない事やっているんだろな...もうここまでくると,ついていけません.

と言うことでして

大人しく,黙ってオフィシャルなリリースを待ちたいと思います...

素人は素人らしく.

終わりに

結果,試みは失敗に終わりましたが,
今回の経験を通して,ソースからビルドして使う,というシーンにある文脈を曲がりなりにも感じ取ることができたような気がします.

勿論間違い,勘違い,沢山あるでしょうが.

ちょっと腑に落ちない風景ではあったのですよね.
このMacVim-Kaoriyaもそうですが,
折角,すぐ使えるような形で提供されているその隣,その同列に,「ソース形式のもあるよ」なリンクがあるのは,素人である自分の感覚では,すんなりと飲み込み難いものがあったりしてました*10

根本的に,"自分には絶対起こり得ないもの",と言う捉え方をしているのもあって,
そういう人と世界がある,と言うことは何となぁ~く理解は出来ても,どうも体験としてイメージできるものがなかったのですが,
今は,「もしかしたら? こんなん?」と勝手に思ってしまっているのですが,どんなもんでしょう.



じ か ん,が え じ で.泣

と言うことで.はいおしまい.

*1:おまえが悪い😜

*2:キーボードはUSにしてもらったので.

*3:ま,AirRetinaディスプレイ来ないかなぁ,ってずっと長い間伺っていた中でのことなので,その後悔からの立ち直りは早かったですけど.

*4:'Neovim',という選択肢もありますが,一つのプラグインのために移行するというのも,ちょっと情緒的な話ですが,引っ掛かるところがあったので止めてます.

*5:自身,MacVim-Kaoriyaのインストールは,こちら'delphinus/homebrew-macvim-kaoriya'を利用させて頂いており,これ使うやり方と何が違うのだろうと天然でずっ~と思っていたのです...やっと分かりましたよ.つか遅すぎ.orz

*6:と言うことは以前,こんなエントリこんなエントリで言ってきたようなことに,悩まされなくなると言うこと?...となって,朗々と語っていた自分,かなり恥ずかしい

*7:ファイルは一度ローカルにcloneして確認した.urlで指定してもできるのだろうか...

*8:ほんっと,疲れた.

*9:glidenote/memolist.vimを使わせて頂いていて,全てのデータの格納先をDropBoxにしているのです.

*10:何と申しかすか,...自身の体験としてどうしてもイメージ出来ない感じ?,と言う表現で伝わるかしら.