coding, photo, plant and demo

*ChromiumのWindowsビルドがいつの間にか超絶簡単になっていた件

webkit tech 20130518 235136
やり方は
http://www.chromium.org/developers/how-tos/build-instructions-windows
に書いてあるのだけど、その中のAutomatic simplified toolchain setupがそれ。

今まではWindowsの場合、Visual Studioでビルドをしていたと思うのだけど、これはSDKやらのインストールやらパッチ当てが面倒くさい上にビルド自体が激重い。けど最近は、Windows上でもセットアップの自動化を行う神スクリプトが出て来て、それとninjaビルドを組み合わせるとお手軽にビルドができるようになったらしい。試してみる。

まずは
https://src.chromium.org/svn/trunk/tools/depot_tools.zip
を落として、適当なところに展開してコマンドラインから叩けるようにPATHを通す。gitが既に入っているなら、
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
として取ってきてもよし。

あとはそのスクリプト
http://src.chromium.org/viewvc/chrome?revision=175004&view=revision
の説明の通り。cygwin上じゃなくてcmd.exe上で動かすことに注意。 *0

# gitとかsvnとかpythonを入れてくれる
gclient

# ソースを引っ張ってくる。1時間くらい掛かる?
# 明示的にgitかつblink版が欲しいなら fetch blink --nosvn=True とか。
gclient sync  

# 各種SDKをローカルにインストール
python src\tools\win\toolchain\toolchain.py 

# 環境変数を設定
# 次回以降、最新版を取得してビルドしたいならここからスタート。
win_toolchain\env.bat 
cd src

# build.ninja等を作るのが目的だと思うので、もう一度syncせずにrunhooks でも良いかも?
gclient sync 

# ビルド。昼寝でもしましょう
ninja -C out\Debug chrome 

ただ、gclient syncがどうにも安定せず途中で失敗する。Linuxだと失敗したことないのに。何度かgclient sync --forceでリトライしてようやくソースの取得が完了。lockがどうの言われたら、該当の.git/index.lockをrmしたり、それでもダメなら該当レポジトリを丸ごと消してgclient syncして続行。

env.batの時点でGYP_GENERATORS等も設定済みなので、gclient syncの直後にninjaが叩ける。ninjaってのはChromium用に開発されたメチャクチャ高速なmakeみたいなもの。ninjaを使うか否かで驚くほどビルド速度が変わってくる。そしてtoolchain.pyが凄いね。各種msiやらisoを落としてきて、各個展開してwin_toolchain以下に配置する。インストールするわけじゃなくてローカルに置いてそこにenv.batで環境変数を向けるのがポイント。マシン全体には影響を与えない。isoの展開はどうやるんだろうと思ったら、7zでできるんですね。msiの展開はmsiexecでいける。

にしてもWindowsのビルド環境もかなり改善されたなあ。昔は手順通りやっても地雷だらけで全然うまく行かなくて苦労した記憶があるだけに感動。

とはいえやっぱりLinuxの方が楽。そして簡単さで言えばFirefoxのLinuxビルドの方が断然上だったりする。hgで取ってきてmach buildとかやるだけで地雷が全然無い(Simple Firefox build)。しかも、Firefoxの方がChromiumと比べてソースの取得もビルドもだいたい半分の時間で済む。ブラウザをいじりたいならFirefoxから初めるのも良さそう。僕はGeckoのソースを少ししか読んだことがないけど、ぱっとの見た目はChromium/WebKitの入り組んだディレクトリ構成よりも取っ付き易い気がする(Blinkに変わった部分は大分スッキリした様子)。ただ、ブラウザ(主にJavaScript)の速度となるとChromiumに軍配が上がってしまうから、そうなるとどうせいじるならやっぱChromiumかなあ、という気もする。
*0 : Windows nativeのpythonはgclientで自動でインストールされるけど、プロクシな環境では手動で新し目のを入れたほうが地雷が少ないかもという噂あり(古いとpythonだとネットワーク周りにバグがあったりするらしい)
http://www.python.org/download/releases/2.7.5