build
主に Mac/Ubuntu でのビルドについてメモ
- 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 更新時に消えるので注意
いろいろ苦労するので正直推奨しない。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
一通りセットアップするスクリプトが用意されているのでそれを利用する:
# 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
- Mac: デフォルトで入っているもので問題なし。
- Ubuntu: https://help.ubuntu.com/community/Java
Samsung Galaxy S2 への書き込みには必要。ただし最新版ではエラーが出るので注意。
- Mac: https://github.com/downloads/Benjamin-Dobell/Heimdall/heimdall-suite-1.3.0-mac.dmg
- Ubuntu: sudo apt-get install libusb-1.0-0 libusb-1.0-0-dev
# すべてビルド (並列数を -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 ファイル群が生成される。
低スペックマシンでビルドすると 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
デフォルトキャッシュサイズが 1GB しかないので大きくする。以前は 2GB 以上を推奨だったが今は 3GB 以上を推奨。
ccache --max-size 3GB
gcc 4.6 をインストールしてないと警告が表示される。正しく動作するビルドができないので gcc 4.6 をインストールすること。homebrew であれば mozilla の用意している bootstrap-mac.sh スクリプトでパッチ入り gcc がインストールされる。
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.
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.
パッチをあてて書き換えているファイルがあると git pull できずに ./repo sync の途中で停止する。書き換えてるファイルを戻してから sync し再度パッチをあてること。
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
- 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
}
- 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
- B2G デスクトップクライアントを使用する - 原文
- builds: http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/
- gaia repo: https://github.com/mozilla-b2g/gaia
プロファイルを作成:
DEBUG=1 make profile
- Gaia を Hack する手順については別ページに記載。
- by masap
- by adamrocker
- by mkato
- by nao
- by naokani2002