LoginSignup
12
12

More than 5 years have passed since last update.

WindowsでChromiumをビルドしてみる

Last updated at Posted at 2015-02-11

背景

Chromeのバグを踏んだので、デバッガで見てみたくなった。
具体的には、marqueeタグのDOMのパースに失敗する不具合があり、Railsでturbolink経由でmarqueeタグを含むページに遷移すると表示が停止した。今日(2015/02/11)時点でChromiumでも発生するのでChromiumをビルドしてみた。

環境構築

基本的には公式サイトの手順をなぞるだけ。追加でWDKを入れる等の作業は不要。
http://www.chromium.org/developers/how-tos/build-instructions-windows
https://code.google.com/p/chromium/wiki/NinjaBuild
https://code.google.com/p/chromium/wiki/CommonBuildTasks

  1. Visual Studio 2013 Community Update 4をインストールする(MFCありにすること)
  2. depot_toolsを展開する(エクスプローラで展開する場合は右クリックメニューの「全て展開」を使うこと)
  3. depot_toolsのパスをPATHに追加する
  4. コマンドプロンプトを開く
  5. 環境変数を設定する(以下参照。set DEPOT_TOOLS_WIN_TOOLCHAIN=0 ...)
  6. 作業ディレクトリに移動
  7. fetch chromium
  8. (Still working onが表示されるので1時間くらい待つ)

(途中「git.batは内部コマンド〜」みたいなのが表示される)
以上でsrcディレクトリができているはず。

環境変数

日本語環境だとVC++(cl.exe)のcodepageが932固定で、BOMのないUTF-8のファイルをCP932としてコンパイルしようとしてwarningになるが、warningをエラーにするオプション(/WX)が指定されているためビルドに失敗する。そのため/WX-を追加した。

  • DEPOT_TOOLS_WIN_TOOLCHAIN=0
  • GYP_DEFINES=component=shared_library
  • CPPFLAGS=/WX-
  • GYP_GENERATORS=ninja,msvs-ninja

追加

Pythonが正しく動作しないので、以下のファイルを追加する。

depot_tools\python276_bin\Lib\site-packages\sitecustomize.py
import sys
sys.setdefaultencoding("cp437")

修正

一カ所、UTF-8文字でコメントが終わっている部分を削除する。
src\third_party\pdfium\fpdfsdk\include\fxedit\fxet_list.hの177行目から3行。

ビルド

  • cd src
  • ninja -C out\Debug chrome.exe

成功するとsrc/out/Debug/chrome.exeが生成される。
ビルドエラーが出るときはninja -v -C out\Debug chrome.exeで実行しているコマンドを見る。

実行

以下参照。
http://www.chromium.org/developers/how-tos/debugging-on-windows
chromeは複数のプロセスを起動するが、どこで止めるかわからないので、
chrome.exe --single-process
で起動する。現在は非推奨のオプションらしいが、これにより単体のプロセスで起動する。
適当なプロジェクト、または、src/chrome/chrome.slnを開く。
デバッグメニューからプロセスへアタッチを選び、x86のchrome.exeにアタッチする。
chrome.slnを開いたときには5分くらい待たされるので注意。

以下のページを開き、リンクを踏むとv8の中のASSERTで停止する(かもしれない)
https://hello-marquee.herokuapp.com/debug

参考

12
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12