non vorrei lavorare

昔はおもにプログラミングやガジェット系、今は?

Cygwinでh2oが動いた日

おはようございます。先日は家族で京王レールランドへ行き、長男、次男と自分の3人で プラレールのレイアウトを作って来ました。最近は、次男が兄のレイアウトの邪魔をして兄弟喧嘩が しばしば起こりますが、当日はいい感じに3人それぞれ、レイアウトを作っていました。@kjunichiです。
 

h2o作者のkazuhoさんからの驚きのツイートいただきました!

なぜcygwin

Windows環境でもHTTP2関連をいじるにはnghttp2のツールも動かせた方がよいだろう。

ということで、cygwin環境一択で作業を進めた

最大の難関

mruby-onig-regexpのビルド

mruby-onig-regexpが無条件でOSがWindowsだとMSVCを選択してしまう。 さらにOnigumoもcygwin環境でもLib.exeをarの代わりに使用する。しかもLib.exeのオプションが 誤っている。

Onigumoではlibonig.libが作られるが、mruby-onig-regexpではlibonig.aを期待している。

 対応方法

  • /usr/include/sysに/usr/include/endian.hのシンボリックリンクを作成
  • mruby-onig-regexpのmrbgem.rakeファイルの修正
    • OSがWindowsだと無条件にVC++なので、これを無効化
    • 作成されたlibonig.libをコピーしてlibonig.aを作成
  • libtool.m4の修正
    • lib.exeではなく、cygwinのarを使うように修正

これらの具体的な対応内容はhttps://gist.github.com/kjunichi/81d876fe0c7307ba3978参照。

対応完了までの軌跡

まとめ

関連記事

 

cygwinつながり

4年前の記事