ChromiumをMacでビルドしようとしたら、色々と詰まったので備忘録として書いてみる。
##Get the Code
ソースコードの入手方法は以下に書いてある。
http://dev.chromium.org/developers/how-tos/get-the-code
空き容量が少ないと、失敗したというログ(保存し忘れた)を吐きつつも何度もやり直すので無限ループになる。特にWebKitは容量が大きいので4~5時間経っても終わらない場合は、空き容量を増やした方が良いかもしれない。
##Ninja Build
Buildの方法については、以下のページにプラットフォームごとへのリンクが張られている。
OSXの場合は以下となる。
NinjaとClangを使う方法しかサポートされていない。
Ninjaを使った方法は以下のページで説明されている。
よく分からないエラーで止まったときは
ninja -v -C out/Debug chrome
これで、コマンドを全部見てみる。
##pythonのversion
Ninjaでビルドしていたら、以下のようなエラーが出てきた。
Failed at tvcm: </script> expected but get </h2>
エラーを保存し忘れたので文自体は違うかもしれないが、tvcmをparseしている最中にscriptの閉じタグがこなきゃいけないのに、h2がきているといった内容。
chromium/src/third_party/trace-viewer/third_party/tvcm/src/tvcm.html (chromiumはsrcまでのpath)
を見てみるとしっかりscriptタグで閉じられているが、途中で
panicMessageEl.innerHTML =
'<h2 id="message"></h2>' +
'<pre id="details"></pre>';
という式を発見。h2タグを消してみるとpreタグでエラーになった。
パーサが怪しそうなので、使用しているHTMLパーサを調べてみると標準ライブラリを使用していた。このタイミングでPythonのversionが怪しいと思って調べてみると、2.7.3だった。最新のversion(2.7.8)にしてみたら、エラーが出なくなった。
##ImportError: No module named CoreFoundation
今度は、以下のエラーが出てきた。
[7/15257] MACTOOL copy-bundle-resource ../../breakpad/src/client/mac/sender/English.lproj/Localizable.strings
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
CoreFoundationなんてmodule無いよという内容。
CoreFoundationとはAppleが提供しているframeworkのこと。
これをpythonから呼び出せるようにするため、pyobjcが必要となる。install方法は以下に載ってる。
pipとeasy_installのどちらでinstallしようとしても失敗する。調べてみると以下のようなissueがあった。
まだ、issueが解決していないので手動でinstallすることにする。
-
pyobjc-core
-
pyobjc-framework-Cocoa
-
pyobjc-framework-Quartz
の順にinstallする。
pyobjc-framework-Cocoaをinstallしようとすると以下のエラーが出た。
ImportError: No module named pkg_resources
調べてみると、stackoverflowに解決方法があった。
pyobjcをinstallし終えた後にbuildしてみるとエラーを吐かなくなった。