MSYS2でのvimprocのビルドエラーとPull Requestを送るまでの経緯

MSYS2のVimでNeoBundleでvimprocを自動ビルドがうまくいかなかった。これがうまくいくようにvimprocの本家にPull Requestを送ってマージされた。 https://github.com/Shougo/vimproc.vim/pull/230 それに至る経緯をまとめた。
0
. @senopen

msys2にtarが標準で入ってなくてtarをソースからインストールしようとした。paxというPOSIX準拠の解凍ソフトがmsys2にはあった。けどUbuntuにはない…。逆にUbuntuにはcpioがある。cpioはgunzipとパイプでつながないといけないから面倒だな…

2015-11-01 18:47:21
. @senopen

@senopen makeをmakeなしでソースからインストールするのは激ムズか…。

2015-11-01 20:21:42
Takuan @K4095

@senopen msys2は標準ではbsdtarが入ってます makepkg/pacmanもbsdtarを使用します

2015-11-02 02:35:09
. @senopen

@K4095 ご指摘ありがとうございます。微妙に名前違うのですね。cpioもbsdcpioになってました。勉強になりました。

2015-11-02 07:04:22
. @senopen

NeoBundleでVimprocをインストール・ビルドするのがやっかいだった。msys2に対応していないし,makeの有無とか判定できないし。ということで自分で書いてみた。 MSYS2, MSYS, Cygwinにも対応 pic.twitter.com/PTZMMYBIJT

2015-11-03 03:36:09
拡大
. @senopen

@senopen 難点がひとつ。Neobundleで自動ビルドするときのbuildオプションに変数を渡すときはg:でグローバル変数にしないと渡せないみたい…。s:のスクリプト変数だとダメだった。ほかで使わないし我慢するか。

2015-11-03 03:39:49
. @senopen

@senopen ああ,うまくできてない。MSYS2でビルドしたのになんでvim起動中に,vimproc_cygwin.dll is not foundとか出るのだろう?よくわからないな。

2015-11-03 03:45:44
. @senopen

@senopen 試しにCygwinでやるとうまくVimprocが動作してquickrunできる。 VimprocはMSYS2に未対応なのかな。MSYS2自体がここ2-3年の最近でてきたからな…。

2015-11-03 04:17:51
. @senopen

@senopen MSYSでもvimproc.vimのソースを修正してるのか。ああ,vimprocのソースに修正かけないとダメか。 WindowsでLinux Likeなプログラミング環境を構築する : J-Linuxer jlinuxer.dip.jp/?p=628

2015-11-03 04:29:19
. @senopen

@senopen システムの判定のところでis_cygwin()でやっている。 この関数はutil.vimでhas('win32unix')と定義しているのが原因。これだけだとmsysとcygwinの区別できない。 github.com/Shougo/vimproc…

2015-11-03 04:38:23
. @senopen

@senopen MSYS2だとmake -f make_unix.makで$MSYSTEMがMSYSでもMINGW32でもMiNGW64でも動作。けど,元々のMSYSだとコンパイルしてもquikcrun実行時に指定されたモジュールが見つかりません…forkして自分用にしようかな

2015-11-03 16:06:24
. @senopen

@senopen MSYS2でvimprocって需要ないのかな。うまくできそうならPull Request送ってみようかなと思ったのだけど,どうしたらよいかよくわからんからな…

2015-11-03 16:08:08
Takuan @K4095

@senopen vimproc普通に使えますよ

2015-11-03 16:35:40
. @senopen

@K4095 本当ですか?僕はうまくいかなかったのですけど…。詳しく教えて欲しいです。 vimprocビルド時のmakefileとコンパイラは何ですか?

2015-11-03 16:38:35
Takuan @K4095

@senopen まず確認ですがmsys-vimを使っていますか?

2015-11-03 16:39:07
. @senopen

@K4095 pacman -S vimでインストールしたmsys-vimを使っています。

2015-11-03 16:40:17
Takuan @K4095

@senopen それでは普通にvimprocをCygwin用にビルドして使って下さい MSYS2がどのようにしてできているかを知っていればすぐわかることなのですがMSYS2はCygwinそのものですから

2015-11-03 16:43:35
Takuan @K4095

@senopen いい忘れましたがもちろんmsys-gccを使って下さい

2015-11-03 16:44:43
. @senopen

@K4095 なるほど。そういうことでしたか。普段MinGW-w64 Win64 shellからMSYS2起動してるのでmake_cygwin.makのgccがMinGW-w64のgccと認識されビルド失敗してました。make_cygwin.makのgccをccに変えたから解決。

2015-11-03 16:48:28
. @senopen

@K4095 問題はmake_cygwin.makで"gcc"が使われていること。gccをインストールしたら一緒にccもインストールされるので,gccではなくccと書いてあればCygwinでもMSYS2でもいけます。 直してもらいたいですね…。

2015-11-03 16:50:57
. @senopen

@K4095 それともこちらが悪かったかな…。vimprocビルドするときだけMinGW-w64でなく,MSYSの方で起動するようにしてやるべきだったか。

2015-11-03 16:53:59
Takuan @K4095

@senopen いや,それはあなたのmsys2の使い方の問題でしょう msys2なアプリをビルドする際はmsys2 shellを使う それだけです batをいちいち切り替えるのめんどくさいというのであれば環境変数切り替えるシェルスクリプト使えばいいだけです

2015-11-03 16:54:05
. @senopen

@K4095 まあ,そうですよね…。 でもあそこのgccをccに変えてくれるだけでデメリット無しでどちらでもうまく動作できるのですけどね。 解決しました。ありがとうございます。

2015-11-03 16:56:11
Takuan @K4095

@senopen それではmingw-gccにccのシンボリックリンク貼ってる環境で動かなくなるでしょ? ビルドする人が適切に自身の環境を把握しておけばいいだけの話

2015-11-03 16:58:20
. @senopen

@K4095 それをいうとx86_64-w64-mingw32-gccにgccのシンボリックリンクを貼ってる環境でも動かないと思うのですけど…。 Cygwinの場合はccはgccへのリンクとなっているので問題ないと思うのですけどね。もともとcygwin用のmakefileですし

2015-11-03 17:02:40