dynamis edited this page Mar 16, 2013 · 22 revisions

主に Mac/Ubuntu でのビルドについてメモです。あまり綺麗にまとまってない&更新が遅れる時があるので [MDN のドキュメント]((https://developer.mozilla.org/ja/docs/Mozilla/Boot_to_Gecko/B2G_build_prerequisites) に目を通してビルドされることを推奨します。このページは補足、参考としてご利用ください。

ビルド準備

XCode (Mac)

  • Command Line Tools をインストール
  • XCode 4.3.x の MacOSX10.6.sdk を最新の XCode 配下にコピー
  • /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.6.sdk
  • XCode 更新時に消えるので注意

MacPorts (Mac)

いろいろ苦労するので正直推奨しない。HomeBrew 推奨。

  • git
  • gpg
  • ccache
  • yasm
  • autoconf-213
  • gcc-4.6
    • システムの gcc 切り替え
    • sudo port select --list gcc
    • sudo port select --set gcc mp-gcc46
    • デフォルトに戻す
    • sudo port select --set gcc none

HomeBrew (Mac)

一通りセットアップするスクリプトが用意されているのでそれを利用する:

# http://mxcl.github.com/homebrew/
ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"
# 
curl -fsSL https://raw.github.com/mozilla-b2g/B2G/master/scripts/bootstrap-mac.sh | bash

HomeBrew でインストールしようとしてもサーバダウンしててできない時などは個別のリポジトリからインストールすることもできる。例えば yasm がインストールできなかった時には次のようにして乗り切った:

# install yasm from github when the server is down:
brew install --HEAD yasm

依存ライブラリ (Linux)

Linux は 64bit 版 Ubuntu 12.04 を推奨。Ubuntu 12.10 以降の gcc 4.7 などだとビルドできません。クリーンな Ubuntu 12.04 以外で頑張りたい人は MDN のドキュメント を参照して頑張ってください。

次のコマンドでインストール。

sudo apt-get install autoconf2.13 bison bzip2 ccache curl flex gawk gcc g++ g++-multilib git ia32-libs lib32ncurses5-dev lib32z1-dev libgl1-mesa-dev libx11-dev make

Java

Heimdall

Samsung Galaxy S2 への書き込みには必要。

ビルド (初回ビルド)

環境ができたら B2G のリポジトリを Clone してビルド対象を設定

git clone git://github.com/mozilla-b2g/B2G.git
cd B2G
# デバイス名のリストを出力
./config.sh
# デバイス名を指定して設定 (エミュレータ向けの場合)
./config.sh emulator
  • Galaxy S2 だけは gaia のインストールパスが異なるため、gaia のビルド前に gaia/Makefile の修正が必要。これをしないと Galaxy S2 は起動時に Gecko エンジンだけ読み込んだ黒画面で停止する。他の端末では何もしなくて大丈夫。
-GAIA_INSTALL_PARENT?=/data/local
+GAIA_INSTALL_PARENT?=/system/b2g

それではビルドスタート!上手くいくようにお祈り。実機向けにビルドする場合は Android 4.0 の入った実機を USB に繋いだ状態でビルド開始する必要があるので注意(ドライバなどを抜き出すため)。

# すべてビルド (並列数を -j オプションで指定)
./build.sh -j2
# ログを残してビルド
./build.sh -j2 2>&1 | tee build.log
# gecko だけビルド
./build.sh -j2 gecko
# gaia の特定アプリだけビルド
BUILD_APP_NAME=calendar ./build.sh gaia

out/target/product/galaxys2 に *.img ファイル群が生成される。

ソースを最新にしてビルド (2 回目以降)

最新のソースコードを repo スクリプトで取得

./repo sync

リポジトリ管理スクリプト repo 自体が更新された場合は次のようなメッセージが出るので言われたとおり repo スクリプトを更新する:

... A new repo command ( 1.19) is available.
... You should upgrade soon:

    cp /Users/dynamis/build/B2G-unagi/.repo/repo/repo /Users/dynamis/build/B2G-unagi/repo

無事リポジトリの更新ができたら ./build.sh でビルドする。

端末にインストール

ビルドが無事完了したら ./build.sh の最後に ./flash.sh しろという指示が出るはず。そしたら次の通り gonk/gecko と gaia を順に書き込む。

# gonk/gecko を書き込み
./flash.sh
# gaia を書き込み
./flash.sh gaia
## 以下のコマンドでもよいか?
#make -C gaia install-gaia
#make -C gaia install-media-samples

無事書き込まれると Firefox OS が起動するハズです。(・・).

Trouble Shooting

Desktop Build

プロファイルを作成:

DEBUG=1 make profile
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.