この記事では、最新の開発版として Firefox をビルドする際の基本的な手順について説明します。より詳しくは ビルド手順の解説 を参照してください。
ビルドに必要な要件
ハードウェアの要件
- 古いハードウェアでも Firefox をビルドすることは可能ですが、マシンの動作速度が遅いとコンパイルに長い時間がかかってしまいます。また、最低でも 8GB の RAM を搭載することを推奨しています。
- 開発環境とソースコードのリポジトリが巨大なため 、高速なブロードバンド通信が行える環境を用意しておくことも強く推奨します。
- 2015 年の初めより 32 ビットのマシンで Firefox をビルドできなくなったため、OS には 64 ビットのものが必要です。
準備
以下ではマシンの準備手順を説明しますが、使用する OS によっては手順が異なります。そのため、OS に合わせたビルド手順を以下から選んで実行してください。
ソースコードのダウンロード
Mozilla の Mercurial リポジトリから最新のソースコードをダウンロードします。コードの量が多いため、終わるまでに時間がかかるかもしれません。
hg clone https://hg.mozilla.org/mozilla-central
インターネット環境の接続速度が遅かったり、接続の信頼性に欠けている場合、"hg clone" の実行が中断されて失敗することがあります。その場合は、"hg clone" の代わりに Mercurial bundle をダウンロードすることを強くお勧めします。
ビルド設定(省略可)
デフォルト設定のビルドシステムでは、公式のリリース版とほぼ同じ Firefox のビルドが出力されます。出力形式はビルドオプションを設定すれば変更できますが、設定項目の内容を完全に理解したうえで変更することを強くお勧めします。
ビルドオプションは通常、Mozilla ソースツリーのルート(hg clone
コマンドで作成された mozilla-central
ディレクトリの直下)に置いた mozconfig
ファイルで設定します。Windows の場合、mozconfig
ファイルは MozillaBuild コマンドラインで次のように作成できます。
cd /path/to/mozilla-central
touch mozconfig
例として C/C++ のコードをハックしたい場合、 リリースビルドの代わりにデバッグビルドを出力したいと思うでしょう。以下の行を mozconfig
に加えます。
ac_add_options --enable-debug
ac_add_options --disable-optimize
設定できるビルドオプションの詳細については ビルドオプションの設定 を参照してください。
ビルド
mercurial を mach
用に設定するため、次のコマンドを実行します。
./mach mercurial-setup
ここでツールの確認を無効化したい場合(ただ単に Firefox をビルドしたい場合など)、以下のように環境変数 NO_MERCURIAL_SETUP_CHECK の値を 1 に設定します。
export NO_MERCURIAL_SETUP_CHECK=1
アンチウイルスソフトがインストールされている場合は、その除外リストにオブジェクトディレクトリを追加する必要があるかもしれません。デフォルト設定の場合、このディレクトリは mozilla-central/
配下で obj- の接頭辞が付きます(obj-i686-pc-mingw32 など)。Norton Security Suite (Windows) を使用している場合、ビルド過程で生成されたファイルにセキュリティの脅威があると判断されることがあります。その結果、誤検知されたファイルが削除され、ビルドが失敗することがあります。失敗しなかった場合でも、ビルド結果の検証作業によって時間が長くなることがあります。
ビルドを始めるには、 (hg clone コマンドで自動的に作成された) mozilla-central
サブディレクトリに移動し、次のコマンドを実行します。
./mach build
mach は Mozilla のビルドツールであり、開発のタスクを効率よく処理することができます。詳細は mach の記事を参照してください。
"./mach build" の初回実行時は、ホームディレクトリに ".mozbuild" ディレクトリを作るかどうか、ユーザに返答を 20 秒間待ちます。このディレクトリは作成したほうが良いため、許可するべきでしょう。
ビルドには長い時間がかかりますが、その時間の長さはシステムや OS 、設定したビルドオプションによって異なります(例えば、処理速度の速い Linux でのビルドには 15 分かからないかもしれませんが、速度の遅い Windows でのビルドには数時間かかるかもしれません)。詳しくは ビルドを速くするための tips を参照してください。
実行
接頭辞に obj-
が付いたオブジェクトディレクトリ(mozilla-central/
配下)には、様々な一時ファイルやライブラリ、Firefox の実行ファイルなどが入っています。オブジェクトディレクトリの名前はシステムや OS によって異なり、例えば Mac ユーザであれば obj-x86_64-apple-darwin10.7.3/
というディレクトリ名になります。
新しく作成された Firefox インスタンスを実行するには、次の mach コマンドを実行します。
./mach run
Firefox の実行ファイルとその依存ファイルは、オブジェクトディレクトリ内の dist/bin
フォルダの中にあります。特に、Firefox 自身は以下の場所にあります。
- Windows:
obj-.../dist/bin/firefox.exe
- Linux:
obj-.../dist/bin/firefox
- OS X:
obj-.../dist/Nightly.app/Contents/MacOS/firefox
リビルド
変更を加えた後にビルドするには、次のコマンドをもう一度実行します。
./mach build
ここでは変更が必要な箇所だけリビルドされます。他にも、ツリーの一部をビルドしたい場合は、次のコマンドが利用できます。
./mach build path/to/dir
とはいえ、この方法で正しい結果が得られるとは限らないため推奨されません。
更新
Mozilla 側のリポジトリにおける最新の変更を取り込み、手元のワーキングディレクトリである mozilla-central
を更新するには、次のコマンドを実行します。
hg pull -u
続いて ./mach build
を実行します。Firefox には頻繁に変更が加えられるため、この手順には長い時間がかかるかもしれません。