Skip to content
dynamis edited this page Dec 11, 2012 · 22 revisions

主に Mac/Ubuntu でのビルドについてメモ

ビルド準備

XCode (Mac Only)

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

MacPorts (Mac Only)

いろいろ苦労するので正直推奨しない。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 Only)

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

# 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
# install yasm from github when the server is down:
brew install --HEAD yasm

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

git clone git://github.com/mozilla-b2g/B2G.git
cd B2G
./config.sh
./config.sh emulator

Java

Heimdall

Samsung Galaxy S2 への書き込みには必要。ただし最新版ではエラーが出るので注意。

ビルド

# すべてビルド (並列数を -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 ファイル群が生成される。

Trouble Shooting

ビルド中にクラッシュする

低スペックマシンでビルドすると 16 スレッド平行ビルドする時に OS クラッシュしたりする。 gonk-misc/Android.mk の GECKO_MAKE_FLAGS ?= -j16 とされているオプションを自分のマシンの CPU コア数に修正

$ grep -r _MAKE_FLAGS gecko gonk-misc
# 以下のファイルで -j12 以上になっている
gecko/b2g/config/mozconfigs/macosx64_gecko/nightly:mk_add_options MOZ_MAKE_FLAGS="-j12"
gecko/browser/config/mozconfigs/macosx-universal/nightly:mk_add_options MOZ_MAKE_FLAGS="-j12"
gecko/browser/config/mozconfigs/macosx-universal/shark:mk_add_options MOZ_MAKE_FLAGS="-j12"
gecko/browser/config/mozconfigs/macosx32/debug:mk_add_options MOZ_MAKE_FLAGS="-j12"
gecko/browser/config/mozconfigs/macosx64/debug:mk_add_options MOZ_MAKE_FLAGS="-j12"
gecko/browser/config/mozconfigs/macosx64/debug-asan:mk_add_options MOZ_MAKE_FLAGS="-j12"
gonk-misc/Android.mk:GECKO_MAKE_FLAGS ?= -j16

ccache で止まる

デフォルトキャッシュサイズが 1GB しかないので大きくする。以前は 2GB 以上を推奨だったが今は 3GB 以上を推奨。

ccache --max-size 3GB

gcc version

gcc 4.6 をインストールしてないと警告が表示される。正しく動作するビルドができないので gcc 4.6 をインストールすること。homebrew であれば mozilla の用意している bootstrap-mac.sh スクリプトでパッチ入り gcc がインストールされる。

'M_PI' undeclared

Mac で Emulator ビルド時に external/qemu/Makefile.android ファイルで次のエラーが出る。gcc が標準以外のヘッダを含んでいないからで、次のパッチで修正すればよい

diff --git a/Makefile.android b/Makefile.android
index 195c061..61fd889 100644
--- a/Makefile.android
+++ b/Makefile.android
@@ -75,6 +75,7 @@ endif
 
 ifeq ($(HOST_OS),darwin)
     MY_CFLAGS += -mdynamic-no-pic -D_DARWIN_C_SOURCE=1
+    MY_CFLAGS += -DM_PI=3.14159265358979323846264338327950288   #/* B2G_fix: not finding M_PI constant */
 
     # When building on Leopard or above, we need to use the 10.4 SDK
     # or the generated binary will not run on Tiger.

Fake Java Warning

Mac 標準の Java だと次のようなメッセージが出るが問題ない。
see: https://github.com/mozilla-b2g/B2G/issues/61

You are attempting to build with the incorrect version
of java.
 
Your version is: Fake java 1.6.0 revisiion.
The correct version is: Java SE 1.6.

./repo sync できない

パッチをあてて書き換えているファイルがあると git pull できずに ./repo sync の途中で停止する。書き換えてるファイルを戻してから sync し再度パッチをあてること。

Heimdall flashing failed

Heimdall のバージョンによっては flash.sh 実行時に次のエラーが出ることがある。書き込みはできているのだが、スクリプトがそこで止まって気持ち悪いので古いバージョンをインストールする。

Heimdall flashing failed.
Restart your system if you've just installed heimdall.

起動ロゴ画面で止まる

  • Gecko は起動しているが homescreen が正しく読み込めてない状態
  • Galaxy S2 の場合は GAIA_INSTALL_PARENT の変更が必要。
  • flash.sh gaia して起動しなくなった場合、gaia のリセットも必要なことがある。
cd gaia
make reset-gaia

Nexus S

  • WiFi の設定ができない場合は設定ファイルを直接編集する
  • /etc/wifi/wpa_supplicant.conf (/data/wifi/wpa_supplicant.conf かも?)
  • ファイルが存在しない場合に作ると root 所有で読めないことがある。その場合 adb shell で接続して chmod する。
update_config=1
ctrl_interface=wlan0
eapol_version=1
ap_scan=1
fast_reauth=1

network={
	ssid="<SSID>"
	psk="<PASSWORD>"
	key_mgmt=WPA-PSK
	priority=1
}

Galaxy S2

  • gaia/Makefile の修正
-GAIA_INSTALL_PARENT?=/data/local
+GAIA_INSTALL_PARENT?=/system/b2g

端末にインストール

# すべて書き換え
./flash.sh
# gaia だけを書き換え
./flash.sh gaia
# 以下のコマンドでもよいか?
make -C gaia install-gaia
make -C gaia install-media-samples

Desktop Build

プロファイルを作成:

DEBUG=1 make profile

Hacking Gaia

see also

Clone this wiki locally