(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だと思うけどようわからん