気が触れて Chromium を ビルドするの巻
こんにちは。ガムを噛んでます。きたけーです。
今日の朝、夏の暑さと月初の忙しさで頭がやられて、突然Chromiumをビルドし始めました。
Chromium is なに
Chrome の基になっているブラウザ。Chrome は Chromium にいくつか機能が足されたものです。
ビルド手順
基本的に https://code.google.com/p/chromium/wiki/MacBuildInstructions の通りに進めます。
コードを取得する
http://dev.chromium.org/developers/how-tos/get-the-code
(XCodeがインストール済みという前提で) チェックアウトの管理とかをしてくれる depot_tools を落とします。
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git export PATH=`pwd`/depot_tools:"$PATH" # パスを通す
ディレクトリを掘って、Chromiumのコードを取得します
mkdir chromium cd $_ fetch --nohooks chromium --nosvn=True # めっちゃ時間かかる cd src git checkout master gclient sync --nohooks gclient runhook --force
ビルドする
https://code.google.com/p/chromium/wiki/NinjaBuild
ビルドには Ninja というビルドツールを使います。
ninja -C out/Debug chrome # ninja は depot_tools に含まれています # 数時間くらいかかる... と思ったら、コケた! FAILED: ./gyp-mac-tool copy-bundle-resource ../../breakpad/src/client/mac/sender/English.lproj/Localizable.strings crash_report_sender.app/Contents/Resources/English.lproj/Localizable.strings Traceback (most recent call last): File "./gyp-mac-tool", line 515, in <module> sys.exit(main(sys.argv[1:])) File "./gyp-mac-tool", line 28, in main exit_code = executor.Dispatch(args) File "./gyp-mac-tool", line 43, in Dispatch return getattr(self, method)(*args[1:]) File "./gyp-mac-tool", line 66, in ExecCopyBundleResource self._CopyStringsFile(source, dest) File "./gyp-mac-tool", line 105, in _CopyStringsFile import CoreFoundation ImportError: No module named CoreFoundation [1344/16603] MACTOOL copy-bundle-resource ../../breakpad/src/client/mac/sender/Breakpad.xib ninja: build stopped: subcommand failed.
CoreFoundation なんていうモジュールはないとのこと。python から CoreFoundation を扱うために pyobjc をいれれば解決するとのこと。
easy_install -U pyobjc # エラー...
https://bitbucket.org/ronaldoussoren/pyobjc/issue/92/failed-to-install-pyobjc-301-with-pip-on#comment-11579083 ということらしいので、
しょうがなく https://pythonhosted.org/pyobjc/install.html から以下の3つのパッケージをひとつずつ落として、python setup.py install
する。
終わったら、再挑戦。
ninja -C out/Debug chrome # また数時間くらいかかる ninja: Entering directory `out/Debug' [15196/15260] SOLINK "Chromium Framework.framework/Versions/A/Chromium Framework", POSTBUILDS ld: warning: could not create compact unwind for _S32A_Opaque_BlitRow32_SSE4_asm: stack subl instruction is too different from dwarf stack size [15260/15260] STAMP Chromium.app
DONE。out/Debug にビルド済みのアプリケーションがあるので、開く。
open out/Debug/Chromium.app
しあわせです。