Windows 上での Firefox ビルド

世界で最も有名な OS 上で動作し、世界で最も良いブラウザのビルドを作るお手伝いをしていただき、ありがとうございます。このドキュメントはローカルマシン上で自身のハックをしたり、ビルドのセットアップの手助けとなります。

セットアップは難しいことではありません。しかし、多くのファイルをダウンロードする必要があるため多少時間がかかります。これは 10 〜 15 分かかり、1 〜 2時間になる場合があります。

詳細はこのページの最後に記載しています。しかし、このクイックスタートガイドではあなたは以下のことをする必要があります。

始めるために

Windows 版の Firefox をビルドするためには、64 ビット版の Windows 7 以上、40 GB の空きスペースがあるマシンが必要です。Windows 7 では、「スタート」メニュー内の「コンピュータ」を右クリックし、「プロパティ」をクリックして「システム」から Windows のバージョンを確認することができます。Windows 8.1 と Windows 10 の場合は、「ウィンドウズ」メニューボタンを右クリックし、「システム」を選択することで確認できます。もしくは、すべての Windows において、「ウィンドウズ」キーと「Pause Break」キーを同時に押すことで確認することができます。

次に、確実な基盤作りから始めたいと思います。Windows アップデートで最新の状態にして次の準備を始めてください。

Visual Studio 2017

公式のビルドでは Visual Studio 2017 を利用しています。これを使うためにコミュニティ版をダウンロードしインストールしてください。インストール中以下のものは必ずチェックを入れてください。

  • "Desktop development with C++" (at the top)
  • "Game development with C++" (in the second to last group)

これに加え、デスクトップ開発環境も忘れずに入れるため、以下のコンポーネントをチェックしてインストールします。

  • VC++ 2017 v<version> toolset (x86,x64)
  • Windows 10 SDK (<version>) for Desktop C++ x86 and x64
  • Visual C++ ATL support

インストール後に  GUI を起動してください。初回起動の処理と自身のアカウントを使った関連インストールを終わらすためです。

Visual Studio 2015

Visual Studio 2015 を利用したビルドも可能です。Visual Studio Community 2015 Update 3 をマイクロソフトのページからダウンロードし、インストールしてください。(注意:現行のバージョンは Visual Studio 2017 のため、上記リンクから正しい 2015 update 3 を入手するためには、「ダウンロード」セクションに行き、「Visual Studio Community 2015 with Update 3」を選択しダウンロードしてください。しかし、Visual Studio 2017 をお勧めします(以下のセクションを参照してください)。もし Visual Studio の以前のバージョンを持って入れば、アップグレードをしてください。Firefox は古いバージョンの Visual Studio でサポートされていない C++ の機能に依存しています。

初期設定を許可していないので、以下の選択をしてください。

  • Programming Languages > Visual C++ > Common Tools for Visual C++ 2015. このオプションは Rust で必要になります。
  • Windows and Web Development > Universal Windows App Development Tools > Tools (1.4.1) and Windows 10 SDK (10.0.14393). これは現在 Firefox をビルドする最小限のものになります。

インストール後、Visual Studio 2015 を GUI から起動し、アカウントに紐づくインストールを行う初回実行を行なってください。これを行わないと、バージョンの評価が実行され、Windows アップデート経由で正しいアップデートを行うことができなくなります。

次に、Cumulative Servicing Release for Microsoft Visual Studio 2015 Update3(KB3165756) をダウンロードしインストールしてください。

必須ツール

Rust

Rust をインストールしてください。Rust Platform Support ページを参照し、インストールに必要となる triple を見つけてください。もし Rust をインストールしてなければ、./mach bootstrap を実行することで、自身のチェックアウトしたソースで使用可能なインストールとアップデートを行ってくれます。

MAPI ヘッダーファイル (Thunderbird または SeaMonkey ビルド)

もし Thunderbird または SeaMonkey のビルドをしようとしているのであれば、C:\Program Files (x86)\Windows Kits\8.1\Include\shared\MAPIX.h が存在するか確認してください。もし見つからない場合、Outlook 2010: MAPI Header Filesをインストールしてください。そして、C:\Office 2010 Developer Resources\Outlook 2010 MAPI Headers にある以下の2つのヘッダーファイルをコピーしてください。

  • C:\Program Files (x86)\Windows Kits\8.1\Include\shared
  • C:\Program Files (x86)\Windows Kits\10\Include\10.0.nnnnn.0\shared, nnnn はシステム上に存在する最大の番号です。

MozillaBuild

最後に、MozillaBuild パッケージを Mozilla からダウンロードします。初期設定のままインストールしてください。特にインストールディレクトリは c:\mozilla-build\ にしてください。いくつかの Windows のバージョンでは ‘reinstall with the correct settings’ という選択を警告するダイアログが表示されます。その場合は、同意して先に進んでください。

一度この処理が終わると、デスクトップに c:\mozilla-build\start-shell.bat へのショートカットが作成され、より快適に環境を実行できます。

接続する

最後のステップは多少時間がかかります。処理が終了する間、Bugzilla アカウントを作成を行なってください。

Bugzilla.mozilla.org は Mozilla のバグ管理システムです。バグにコメントしたり、パッチを提出するためにはアカウントを作成する必要があります。もし Github アカウントを持って入れば、Github アカウントからログインできます。または Bugzilla アカウントを直接作成してください。

Bugzilla 同様に、多くの Mozilla のインターナルなコミュニティ手段として Internet Relay Chat (IRC) があります。ここから Limechat をダウンロードできます。そして、ここからIRC 経由で Mozilla に接続する方法を学ぶことができます。もしセットアップを開始しようとして質問があれば、"#introduction channel" に参加することができ、そこでは新しい貢献者に対して回答をしてくれるコミュニティメンバーが接続しています。

ソースコードを取得する

最後の大きな手順です。c:\mozilla-buildstart-shell.bat をダブルクリくしてターミナルウィンドウを開きます。(もしくは上述したショートカットから起動します)

次のコマンドを実行します。

export PATH=$PATH:~/.cargo/bin

~/.bash_profile の 1 つを~/.bash_login もしくは ~/.profile に変更します。

注意:もしファイルが存在していなければ作成する必要があります。

注意2 : もし~ が示す場所がわからない場合は、コンソール上で echo ~ と入力することで確認することができます。

以下のように C:/ 直下に "mozilla-source" ディレクトリを作成し、そこにディレクトリへ移動してください。

cd c:/

mkdir mozilla-source

cd mozilla-source

次に、以下のコマンドのように、Mozilla のバージョン管理システムとして使っている Mercurial を用いて Firefox のソースコードを Pull します。

hg clone https://hg.mozilla.org/mozilla-central

hg は水銀の化学式です。

この処理が終了するまでの間、Mozilla の Mercurial ドキュメントを読んでください。そこに Mozilla がソースコードをどのように管理して変更点をどのようにソースツリーに反映するかが説明されています。

Firefox のビルド!

ここまでの作業の集大成です。ターミナルウィンドウで先ほど取得したソースディレクトリにcd して、以下のコマンドを実行します。

cd mozilla-central

./mach bootstrap

./mach build

./mach bootstrap はすべての依存するものを取得するものですが、このドキュメントでは説明は省略します。

これで完成します。もし時間がかかったとしても落胆しないでください。どんなに最新の最速のマシンでも少し時間がかかります。古いマシンとなると2時間以上かかることもあります。Firefox は膨大なものです。なぜなら Web が大きいからです。

Mozillans.org に参加しよう!

待ってる間に、自身のためにもう1つやってほしいことがあります。それは Mozillians のアカウントを作成することです。Mozillans はあなたの興味・プロジェクト・国を共有した人と繋がることができる Mozilla のコミュニティディレクトリです。このステップはオプションですが、登録する価値はあると思います。

実行

mach build が終了したら、ハードドライブ上にソースコードからビルドしたあなた自身のバージョンの Firefox が作成され、実行する準備は整いました。それを以下のコマンドで実行できます。

./mach run

これで、ホーム メイド ビルドバージョンのFirefox ができました。

もしここでエラーが表示された場合、このドキュメントの下にある "トラブルシューティング" セクションをみてください。(いくつかのアンチウイルスソフトは我々のいくつかのテストを隔離するので、"mozilla-source" や "mozilla-build" は例外にする必要があります。アンチウイルスソフトを無効にするのではなく、単に例外を追加するだけです!!

はじめの一歩

ソースコードを入手して、Firefox のビルドが終わり、./mach run でそれを実行することができたので、ハッキング開始の準備はできました。次のステップは IRC の "#introduction channel"に参加したり、Twitter の StartMozilla をフォローしたり、最初のバグを探したりすることです。

Firefox 製品作成や、全ての人々にオープンな Web をより良いものにする協力をしていただき、ありがとうございます。

詳細・トラブルシューティング

ハードウェア・ソフトウェア推奨環境

Firefox のビルドプロセスは I/O と CPU を多く使います。そして、最新のマシンでも多くの時間が必要になります。Mozilla 開発で必要となる最小限のスペックは次の通りです。

  • 少なくとも 4GB の RAM 。8 GB 以上を推奨します。それ以上あれば良いです。
  • 35 GB の空きスペース。これは Visual Studio 2015 コミュニティエディション、必要な SDK 群、MozillaBuild パッケージ、Mercurial ソースコードレポジトリ、コンパイルに必要となるディスクスペースです。Firefox のビルドプロセスは I/O に負荷がかかるため、SSD を推奨します。
  • 64 ビット版 Windows 7 (Service Pack 1) またはそれ以上。64 ビット Windows 上で 32 ビット版 Firefox のビルドを行うことができます。

概要

Mozilla ビルドプロセスは多くの Windows システムに標準でインストールされていない多くのツール群を必要とします。Visual Studio に加えて、必要なバージョンの bash / GNU make / autoconf / Mercurial などのツールをバンドルした MozillaBuild をインストールする必要があります。

公式のビルドは、Firefox 48 以降 VIsual Studio 2015 を使用しています。現行バージョンの Firefox をビルドするためには Visual Studio 2015 を使用するべきです。

Firefox 37 〜 47 は Visual Studio 2013 (VC12) でビルドし、Visual Studio 2015 でもビルド可能です。(Visual Studio 2015 は全てのリビジョンをビルドできない可能性があります。)

それ以前の Firefox はそれ以前の古い Visual Studio でビルドします。

ビルドに必要なインストール

これらの手順のそれぞれを完了しないと、正常にビルドできないことがあります。以下のソフトウェア要件に関する注意事項があります。

  1. Windows アップデートを利用してシステムがアップデートされていること
  2. Visual Studio コミュニティ 2015 をインストールします(無償版)。Visual Stuiod 2015 のインストールで「Common Tools for Visual C++ 2015」をカスタマイズインストールする必要があります。または、有償版の Visual Studio を使うこともできます。VS2015コミュニティインストールのオプション部分(C ++ 用の Microsoft Foundation Classes を含む)は、Firefox をビルドするためには必要ありません。以前のバージョンの Visual Studio はサポートされていません。 Firefox のコードベースは、VS2012 以前ではサポートされていない C ++ の機能に依存しています。
  3. オプションで、ビルドシステムで使用されるいくつかの Python 拡張をコンパイルするために、Visual C ++ 2008 Express(無料)をインストールすることもできます。これは、Python 2.7.x for Windows がデフォルトでそのコンパイラで構築されるためです。 「mach resource-usage」、「mach doctor」、「mach android-emulator」、またはtalosテストをローカルで実行する場合は、psutilをビルドするためにインストールする必要があります。
  4. 追加のビルドツールを含む MozillaBuild パッケージをダウンロードしてインストールします。 Cygwin がインストールされている場合は、ヒントのセクションの注意を読んでください。 「正しい設定」で再インストールするオプションを与える Windows のエラーダイアログが表示された場合は、MozillaBuild のインストーラが終了した後、オプションを選択してください。 MozillaBuild の詳細と新しいバージョンへのリンクはhttps://wiki.mozilla.org/MozillaBuildで入手できます。

トラブルシューティング

場合によっては、次の問題が発生する可能性があります。

いくつかのアンチウイルスソフトとシステム保護ソフトは劇的に遅くしたり、ビルドプロセスを壊すかもしれません。

  • Windows Defenderおよび一部のウイルス対策製品のスキャンは、ビルド時間に大きな影響を与えることが知られています。たとえば、mozilla-centralを正常にクローン化しても、./mach buildがファイルの欠落を報告できない場合は、この問題が発生している可能性があります。よく知られているセキュリティバグの回帰テストには、ウイルス対策ソフトウェアによって脅威と認識されるコードサンプルが含まれており、関連するファイルを隔離したり破損したりすることがあります。これを解決するには、Windows Defenderまたはウイルス対策ソフトウェアでソースとオブジェクトのディレクトリ(mozilla-sourceとmozilla-buildディレクトリ)をホワイトリストに登録し、ファイルが見つからない場合は、ソースツリーを "hg update -C "コマンド。これが済むと、次の./machビルドが正常に完了するはずです。

システムと異なる言語で Visual Studio をインストールすると問題を引き起こす可能性があります。

  • 例えば、英語環境にフランス語の Visual Studio をインストールするとインクルードエラーが発生し、リンクエラーとともに終了します。

注意:ツール群のインストールフォルダに空白やプラスやクゥオートマーク / メタ文字などの改行文字などを含めると Mozilla はビルドできません。Visual Studio ツールと SDK 群は例外を出した時は、空白などを含むディレクトリにインストールされている可能性があります。全てのインストール場所は初期値のままであることを推奨します。

 

MozillaBuild

MozillaBuild パッケージは Mozilla のビルドに必要となる MSYS ビルド環境 / Mercurial / autoconf-2.13 / CVS / Python / YASM / NSIS / UPX や wget や emacs のように使いやすいツールなども含まれています。

現行の MozillaBuild パッケージのインストールはここ

初期値として、パッケージは c:\mozilla-build にインストールされ、そのまま利用することを推奨します。空白を含むパスにインストールしないでください。インストーラーは Windows のレジストリを変更しません。いくつかのバイナリは実行するために Visual C++ Redistributable package を必要とすることに注意してください。

MozillaBuild コマンドプロンプトの期待する設定:  MozillaBuild によって提供される「UNIX ライク」環境は Mozilla ソースコードをビルドしたり、コミットしやすくするために最適です。最新の Linux コントリビューションに含まれているような多くのコマンドツールは含まれていません。そして提供されているいくつかのツールはとても古いです(特に MSYS によって提供されているものなど)。これらの古いツールはしばしば正しい動作をしなかったり、バグが混在したり、数年間の間に追加した新しいコマンドラインの引数をサポートしていなかったりします。例えば、ソースツリーをコピーするために使う cp -rf src1 src2は動作しません。古いバージョンの cp ("cp: will not create hard link エラーをいくつかのファイルでは発生させます) のためです。短期間の間、 MozillaBuild は Mozilla ソースコードと開発者間でやりとりをしてきましたが、予想しない結果になったとしても驚かないでください。

MozillaBuild コマンドプロンプトを開く

事前準備に必要なソフトをインストールしたら、Windows コマンドプロンプトを MozillaBuild をインストールしたディレクトリへ移動 (初期値では c:\mozilla-build)し、start-shell.bat を実行してください。これは Firefox を正しい設定でビルドするための MSYS/BASH コマンドプロンプトを起動させませう。その後のコマンドは全てこのコマンドプロンプトウィンドウから実行します。(Windows の CMD.exe シェルとは異なることに注意してください。)

Windows の CMD.exe シェルとは異なることに注意してください。

ソースコードディレクトリを作成する

注意:もしディレクトリを「Documents and Settings」のような空白を含むディレクトリに作成した場合、Firefox をビルドすることはできません。新規作成した「c:/mozilla-source」や「thunderbird-src」のような任意のフォルダを選択することができます。ビルドコマンドプロンプトは「c:/」と「/c/」を区別しませんが、後者は Windows コマンドプロンプトからは認識しません。またいくつかのツール(多くは MOZ_OBJDIR )は後者を誤認識します「C:/」構文は MozillaBuild コマンドプロンプトで設定された環境とツールを提供しているので、ここから引き継がれていることに注意を引くことに役たちます。

「c:/mzilla-source」や「c:/thunderbird-src」のような深くない階層の新しいディレクトリを作成することは懸命なアイデアです。

cd c:/; mkdir mozilla-source; cd mozilla-source

以下のヒントは問題が発生した時に約立つかもしれません。ここでは Firefox ソースコードをを入手し、ビルドしています。

コマンドプロンプト TIPS と 注意

  • このウィンドウに貼り付けする場合、ウィンドウのタイトルバーを右クリックし、「Edit」メニューの中から「貼り付け」を選択する必要があります。「Properties」で「Quick Edit Mode」を設定している場合、ウィンドウを右クリックすることで、選択した場所に貼り付けすることができます。
  • If you have Cygwin installed, make sure that the MozillaBuild directories come before any Cygwin directories in the search path enhanced by start-shell-msvc2015.bat (use echo $PATH to see your search path).
  • Cygwin がインストールされている場合は、MozillaBuild ディレクトリが、検索パスの Cygwin ディレクトリよりも start-shell-msvc2015.bat で拡張される前に来ていることを確認してください。(echo $PATH を使って検索パスを確認することができます) UNIXスタイルのスラッシュ(/)は、Windowsスタイルのバックスラッシュ(\)の代わりにパス区切り文字として使用されます。したがって、c:\mydirc:/mydir の両方をサポートしていますが、明快さを向上させるためにMSYSシェルのディレクトリ c:\mydir に変更する場合は、cd /c/mydir を使用します。
  • The MSYS root directory is located in /c/mozilla-build/msys if you used the default installation directory. It's a good idea not to build anything under this directory. Instead use something like /c/mydir.

共通の問題 / ヒント / 制約

  • Windows での Mozilla のデバッグ FAQ : Windows 上で Mozilla をデバッグするための Tips。
  • もし Visual Studio 2015 / 2017 両方インストールされている場合、ビルドシステムは 2017 をデフォルトとして使用します。mozconfig ファイルに以下の行を追加することで上書きすることができます。
    ac_add_options --with-visual-studio-version=2015
  • もし間違ったアーキテクチャの設定がされた場合ビルドは失敗します。もし 64 ビットの Firefox をビルドしたい場合、以下の2行を mozconfig ファイルに追加します。
    ac_add_options --target=x86_64-pc-mingw32
    ac_add_options --host=x86_64-pc-mingw32
  • もし PATH 環境変数にクゥオートマーク(")が含まれている場合、ビルドは失敗します。クゥオートマークは Mozilla ビルドのサブシェルに正しく変換して渡されず、通常不要なものが削除されません。
  • もし PYTHON 環境変数が設定されていると、ビルドが失敗することがあります。 「The system cannot find the file specified.」というエラーをすぐに表示します。 同じコマンドシェルでMozillaビルドツールを実行する前に "unset PYTHON"とタイプすると、これを修正する必要があります。 PYTHON が空の値に設定されるのではなく、設定されていないことを確認してください。
  • Cygwinがインストールされていると、ビルドが失敗することがあります。 MozillaBuild ディレクトリ(/c/mozilla-build とサブディレクトリ)がPATH 環境変数の Cygwin ディレクトリの前に来るようにしてください。 これで問題が解決しない場合は、PATH から Cygwin ディレクトリを削除するか、Cygwin を使用しないクリーンな PC でビルドを試してみてください。

  • サポートされている最新バージョンの MozillaBuild に付属するバージョン以外の NSIS のバージョンでのビルドはサポートされておらず、失敗する可能性があります
  • ビルドを他の人に配布する場合は、mozconfigに WIN32_REDIST_DIR=$VCINSTALLDIR\redist\x86\Microsoft.VC80.CRT を設定して、アプリケーションと共にパッケージ化されたMicrosoft CRT DLLを入手してください。
  • Microsoft Antimalware サービスはコンパイルを妨害する可能性があり、ビルド時に conftest.exe に関連するエラーとして表示されることがよくあります。 この問題を解決するには、少なくとも除外設定にオブジェクトディレクトリを追加します。
  • intrin.h と windows.h が一緒にインクルードされていると、「second C linkage of overloaded function '_interlockedbittestandset' not allowed」のようなエラーが発生します。 関数の名前の1つのインスタンスを再定義するには、#define を使用します。
  • 並列ビルド(-jN)は、Windows で GNU make で動作しません。 現在のバージョンの MozillaBuild に含まれている mozmake コマンドを使うべきです。 mach コマンドでビルドすると、常に利用可能な最良 のmakeコマンドが使用されます。
  • 「ERROR:Can not find makecab.exe」のようなビルドエラーが発生した場合は、バグ1383578のパッチを適用してください:SET PATH="%PATH%;!LLVMDIR!\bin"SET "PATH=%PATH%;!LLVMDIR!\bin" に変更します。

ビルドドキュメントに戻る

ドキュメントのタグと貢献者

 このページの貢献者: mantaroh, mkato, WhiteHawk-taka, hashedhyphen, teoli, lv7777, Marsf
 最終更新者: mantaroh,