Closed22

chromiumをM1チップのMacBookでビルドしたときのメモ

canaluncanalun

がんばってchromiumを手元でビルドしてみるぞ👶

環境

  • MacBook Pro, M1 MAX, 32GB
  • OSX 13.5.2
  • Pythonはpyenvもcondaも入れていない
canaluncanalun

読んでいると、mac特有のrequirementがあるとのこと("Development Machine"セクションに記載されたリンク)なので、それを確認してみる。下記。
https://chromium.googlesource.com/chromium/src/+/master/docs/mac_build_instructions.md#system-requirements

A Mac, Intel or Arm. (More details about Arm Macs.)
Xcode. Xcode comes with...
The macOS SDK. Run...
An APFS-formatted volume (this is the default format for macOS volumes).

macOS SDKが必要なのか。
$ ls `xcode-select -p`/Platforms/MacOSX.platform/Developer/SDKsで確認できるらしいのでやってみる。
MacOSX.sdk MacOSX14.0.sdk MacOSX14.sdkと表示され、確認先としてリンクが貼られているファイルでも保証されているっぽいバージョンなので良しとする。

ディスクもAPFSだったのでオッケーそう。

canaluncanalun

If you are on an Arm Mac, your build will by default be an Arm build, though please see the section below about building on Arm Macs for specific things to keep in mind.

Arm Macなので、"building on Arm Macs"というセクションを読みに行く

canaluncanalun

It's possible to build on an arm Mac, without Rosetta. This configuration is covered by a main waterfall bot.

とある。main waterfall botってなんだろう。
アクセスするとこんな画面が出てくる。
main waterfall botのトップページ画像

canaluncanalun

ビルドできるかを定期的に確認してくれているbotなのかな?
とりあえずさっきの続きを読む限り、

Checking out and building (with goma too) should just work. You should be able to run fetch chromium normally, and then build, using gn, ninja etc like normal.

とあるので、あまり気にせずにm1 macでもビルドできるんだろうと思って進めていってみる

gomaはchromiumのビルドツールでgoogle社員じゃない人が使うにはなんかいろいろ手続きがいるはずだから、一旦スルーしてみる。

canaluncanalun

というわけでm1 macだから、、、という心配事は一旦なしっぽい。

コードをゲトってビルドしていく。
コードを取得するには下記のようにするらしい。

Install Depot Tools (a collection of dev utilities)
Run fetch chromium to get all the code and generate the build files

canaluncanalun

まずはDepot Toolsとやらをインストールする。書いてある手順通りにやる。
linuxだと下記のようにするとのこと。

$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
$ export PATH=`pwd`/depot_tools:"$PATH"

でもやることはmacでも同じでいいっぽい。実際、contributingドキュメントからリンクされてる"Mac Build Instructions"にも同じような事が書いてある。安牌?的にこっちに従ってみよう
https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/mac_build_instructions.md

ということで下記を実施。

$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git

PATHは自分でzshrcをいじって登録した。

canaluncanalun

ダメだった。謎のエラー。調べてみると奇跡的にstackoverflowからchromium issueへたどり着く。
最初からchromium issueでcategory=Buildにして検索すべきだった。
https://bugs.chromium.org/p/chromium/issues/detail?id=1467374#c19

pythonで下記を実行して

> import platform
> print(platform.machine())

arm64って出ればいいけど、x86_64って出る場合はrosetta(macのintel互換性担保システム)が作動しててダメらしい。自分は後者だった。

canaluncanalun

python3.11.6 for macをダウンロードしてとりあえずインストールする(こんなんでいいの??)。
自分はpyenvもcondaも入れていないので、なんかこれで3.11にもどった(いいの??)。

で、例のscriptも今度はarm64と出る!!!

いくぞ、再ビルドや!

canaluncanalun

頼むからなんとかなってほしい。ビルドは成功するにも失敗するにも時間がかかるので一旦休憩。

canaluncanalun

ビルドおわった!!!!!!
src/out/XXXXにできあがっているchromiumを起動して動かせた!

ビルド所要時間は、M1 MAX, 32GBのMacBook Proで4.5時間でした。
長き旅。chromiumはドキュメントが充実していてすごいねえ😭

このスクラップは2023/11/25にクローズされました