(2022-10-27)
参考資料 (2022-10-27)
Firefox Source Tree Documentation — Firefox Source Docs documentation
firefox-source-docs.mozilla.org
Firefoxのビルド (2022-10-27)
今回はwsl2(Arch Linux) on Windows11で試す。
bootstrap (2022-10-27)
Building Firefox On Linux — Firefox Source Docs documentation
firefox-source-docs.mozilla.org
mercurialって使ったことないけどmercurialがおすすめと書いてあるので一応そうしとく。gitでも使えるらしいが・・・
Understanding Artifact Builds — Firefox Source Docs documentation
firefox-source-docs.mozilla.org
build (2022-10-27)
(2022-10-27)
せっかくなので次はgitを使ってみる。
git-cinnabarというものが必要らしい。ちなみにi7-12700、メモリ32GBでビルド時間は約18分だった。メモリによって並列実行数か決められてるような表示が一瞬見えたからwslのメモリ割り当て増やしたら速くなるのかな?
あと現時点でのmozilla-unifiedフォルダの容量は約24GBだった。
実行 (2022-10-27)

あと設定が開けない。
about:preferencesは開ける。謎だ。(2022-10-27)
Releaseタグでビルド (2022-10-27)
とりあえず書いてる通りに実行する。
Windowsでビルド (2022-10-27)
Building Firefox On Windows — Firefox Source Docs documentation
firefox-source-docs.mozilla.org
mozilla-build\start-shell.batで専用のシェルを起動しないといけないらしい。~\.mozbuild\git-cinnabarを通す1759544 - ERROR: Cannot find a wasi sysroot. Please give its location with --with-wasi-sysroot. on mozilla-release
bugzilla.mozilla.org
.mozconfigを作成し、今度は成功した。ビルド時間は約22分。やっぱりLinuxより遅いか
(2022-10-27)
Cross compiling Windows binaries from Linux
jake-shadle.github.io
Floorp (2022-10-27)
GitHub - Floorp-Projects/Floorp: All of source code of version 10 or later of Floorp Browser, the most Advanced and Fastest Firefox derivative 🦊
github.com
/floorpディレクトリに集約されていて元のFirefoxのコードにそれを呼び出すものがあるようだ。いろいろ (2022-10-27)
気づいたこと (2022-10-27)
- Firefoxのソースはフロント部分とバックエンド部分に分かれている。フロント部分をいじるだけでけっこういろいろなことができそうだ。
Meta
- Firefoxのソースは最新ソースコード
mozilla-central、リリースのmozilla-releaseなどがある。自動でダウンロードされたリポジトリはmozilla-unifiedだがこれには全部含まれているらしい。mercurialに精通していないのでよくわからない。
フロント
- FirefoxではFirefox自体のUIがhtmlなどのweb技術で書かれている。まあuserChrome.cssなどもあったしこれは驚くことでもない。
- 開発者ツールの設定から有効にするとブラウザーツールボックスというFirefoxのUIを調査できる開発ツールを使える。
- 見たことがない拡張子として
jsmがある。jsmファイルはそのまま使えるがjsとcssはコンパイル作業が必要というようなことが書いてある(https://firefox-source-docs.mozilla.org/browser/components/newtab/docs/index.html#for-jsm-files)。 .xhtml・・・まだ生きてたのか- jsソース内では
Preferencesなどのオブジェクトが使われているがこれはtoolkit/content/で定義されている。が、恐らくここ以外にもある。 - xhtml内では
<browser>など独自要素が使われている。これらの要素についてドキュメントがあるかは不明。 - 残念ながらまともに型はついていないが一応eslintプラグインがある。
mach npm iでインストールできる。これで間違ったことをすると多少教えてくれるようだが…?(https://firefox-source-docs.mozilla.org/code-quality/lint/linters/eslint-plugin-mozilla.html)
ディレクトリ構成 (2022-10-27)
ベンチマーク (2022-10-27)
公式ビルド 106.0.2

手製ビルド 106.0.2

(2022-10-27)
--enable-releaseはほとんど意味なし。どうやら公式ビルドではPGOとLTOが有効になってるのでそれをしないと公式と同じ数値には達しなさそうだがWindowsでのPGOはサポートされてないっぽい?
Linux上のクロスコンパイルビルドだとできるってことかな
1718171 - Windows 10 PGO build fails with undefined symbol: __llvm_profile_instrument_memop
bugzilla.mozilla.org
(2022-10-27)
多分これが公式リリースのciだと思うけどようわからん