memo‎ > ‎

Chrome

Chromiumソースコードのダウンロード
インストールする時にわからなくなると思うのでメモする。
1.ここの Build environment を見て環境を確認し、必要な更新プログラムをインストールする。
 Windows 7 SDK のノートは更新プログラムがインストールされていればよいので気にしないこと
 Windows SDK Configuration Tool を実行することでVSのディレクトリ設定ができるのでやっておく(手動でもできる)
2.ここから depot_tools.zip をダウンロードし解凍する。さらに、ここから svn_vin.zip もダウンロードし解凍する。
3.depot_tools フォルダとコードをダウンロードするフォルダを準備する。フォルダパスにスペースは入れない
 例:C:\Users\yuui\ChromeCode を作成し、ここに depot_tools フォルダを入れておく。
4.depot_tools フォルダに解凍した svn_bin を移動する。
5.環境変数 Path に depot_tools のパスを書きこむ。セミコロン区切りで最後にもセミコロンを書きこむ
 編集画面の表示手順は[コンピュータ]を右クリックしプロパティ>[システムの詳細設定]>[詳細設定]タブの[環境変数]をクリック
6.コマンドプロンプトでコードをダウンロードするフォルダに移動し、gclient を実行する
 Python の準備を行う
7.次に gclient config http://src.chromium.org/svn/trunk/src を実行する
 フォルダに .gclient ファイルを作成する。URLを間違った場合は.gclient ファイルをメモ帳で開き編集することもできる
8.次に gclient sync を実行する。
 これで最新コードを src フォルダにダウンロードを開始する。更新することもできる
更新したいときは コマンドプロンプトでダウンロードフォルダに移動し gclient sync を実行すればよい。

VS2010の場合はset GYP_MSVS_VERSION=2010、gclient runhooks も実行しておく。
さらに、VS2010でプロパティマネージャを表示し、いずれかのプロジェクトを展開し Debug | Win32(もしくはRelease | Win32) 内の Microsoft.Cpp.Win32.user を右クリックしプロパティを表示、VC++ ディレクトリのインクルードディレクトリ先頭に $(DXSDK_DIR)\include を追加、ライブラリディレクトリの先頭に $(DXSDK_DIR)\lib\x86 を追加する。

いろいろメモ
・ログファイルの出力方法
 ショートカットリンクでオプションに --enable-logging --log-level=0 を追加する
 出力場所はVistaの場合 C:\Users\(ユーザ名)\AppData\Local\Google\Chrome\User Data\chrome_debug.log
・lkgr とは Last Known Good Revision の略で、オートテストをすべてクリアした最新バージョンのこと。
・LGTM とは Looks good to me の略。
・src\chrome\Release\obj\global_intermediate\build 内の LASTCHANGE には BuildBot のバージョン番号が記述されている。
・src\chrome\Release\obj\global_intermediate\webkit\HTMLEntityTable.cpp はHTML特殊文字の定数文字列を自動生成されている。
・.glient ファイルは以下のようにするとユニットテストをパスし、さらにテストを除いたサイズを小さくしたものをダウンロードできる。
 solutions = [
  { "name"        : "src",
    "url"         : "http://src.chromium.org/svn/trunk/src",
    "deps_file"   : "DEPS",
    "custom_deps" : {     
    "src/third_party/WebKit/LayoutTests": None,
    "src/chrome/tools/test/reference_build/chrome": None,
    "src/chrome_frame/tools/test/reference_build/chrome": None,
    "src/chrome/tools/test/reference_build/chrome_linux": None,
    "src/chrome/tools/test/reference_build/chrome_mac": None,
    "src/third_party/hunspell_dictionaries": None,
    },
    "safesync_url" : "http://chromium-status.appspot.com/lkgr",
  },
]


Chromium をビルドしたときのエラーについて
Chromeをビルドしたときに同期ミスと思われるエラーがでた。
エラーは以下のように表示された。

  エラー 16 error C2065: 'CSSPropertyBoxShadow' : 定義されていない識別子です。 CSSPropertyNames.gperf

これは src\chrome\Debug\obj\webcore\CSSPropertyNames.cpp (更新日時:09/08/29)が原因のようだ。
sec\chrome\Debug\obj\global_intermediate\webkit\CSSPropertyNames.cpp (更新日時:09/11/24)と内容が似ていたので
これをコピーしてビルドしたところビルドが成功した。

これとは別に、新しくリリースビルドした場合は何もしなくてもビルドが成功した。(CSSPropertyNames.cpp というファイルは作成されない)
おそらく、場合によってはリビルドするだけでは古いファイルが完全になくなるわけではなく、Debug フォルダを削除する必要があるものと思われる。

マニュアルではTroubleshooting > Compilation failures の 2.4.Manually erase the output directory のことだろう。

トラブルシューティング
「dxdiag.h ファイルが開けない」とエラーが出た。
 DirectXがインストールされていること(C:\Program Files\Microsoft DirectX SDK (June 2010)フォルダがあるか)を確認し、インクルードパスに $(DXSDK_DIR)include、ライブラリパスに$(DXSDK_DIR)libを加える。

gclient sync を行ったとき、「同じ名前のディレクトリがある」というようなエラーが出た。
 そのディレクトリを削除し、バージョン更新された後再度 gclient sync を行う。

gclient sync を行ったとき、Your python version is unsupported, please upgrade. と表示された。
 depot_tools>python_binフォルダ内の pythonw.exe を実行する。

intrin.h の宣言関連で「error C2733: オーバーロードされた関数 '_interlockedbittestandset' の C リンケージの 2 回以上の宣言は許されません。」などのエラーが出た。
 intrin.h の以下の2行(944,955行目)をコメントアウトする。
  __MACHINEI(unsigned char _interlockedbittestandset(long *a, long b))
  __MACHINEI(unsigned char _interlockedbittestandreset(long *a, long b))

chrome_dll のリンク時、「error LNK1210: 内部 ILK サイズ゙の制限を超えています。/INCREMENTAL:NO オプションで再リンクしてください。」というエラーが出た。
 chrome_dll プロジェクトのプロパティ>構成プロパティ>リンカで「インクリメンタル処理を行わない」にする

その他、ビルドエラー
Debug(Release) フォルダフォルダを削除し、リビルドする。
BuildBot を見て、ビルドしたバージョンが Failed になっていないか確認する。

1011/9/21 に久しぶりにコードを更新しようとしたら gclient などのコマンドが全滅した。(Paythonのインストールが原因か?)
 srcフォルダを削除し、再度 depot_tools をダウンロードし解凍、解凍先と環境変数パスを新しいフォルダに変更し、コマンドプロンプトでフォルダに移動し
 gclient、gclient config http://src.chromium.org/svn/trunk/srcを実行し、.gclientを修正(ここや「上記ユニットテストをパスし」とか書いている部分)、gclient syncを実行した。

gl.lib が見つからないというコンパイルエラーが出た。
 インクルードディレクトリに$(DXSDK_DIR)\includeがあるか、ライブラリディレクトリに$(DXSDK_DIR)\lib\x86があるか確認する。

リンク