ZTE OPEN C FirefoxOS(B2G)をビルドしてアップデートする2

それでは本題のビルド作業になります。
Firefox OSのmsterブランチからNightlyビルド及び日本語化・日本語IMEの導入が目標です。
現時点では、Firefox OS 2.2になります。


ビルド環境の構築

 まず、ビルド環境ですが、現在64bit版LinuxかMac OS Xで動作するとのことです。
私はFedora 20 (64bit版)で行いました。

MDN: Firefox OS ビルドの必要条件

基本的には上記ページを参照して進めていきます。環境に合わせて各種準備を行ってください。

まずは必要なパッケージをインストール

$ sudo yum install autoconf213 bison bzip2 ccache curl flex gawk gcc-c++ git glibc-devel glibc-static libstdc++-static libX11-devel make mesa-libGL-devel ncurses-devel patch zlib-devel ncurses-devel.i686 readline-devel.i686 zlib-devel.i686 libX11-devel.i686 mesa-libGL-devel.i686 glibc-devel.i686 libstdc++.i686 libXrandr.i686 zip perl-Digest-SHA wget

また、Fedora 20のgccはデフォルトで4.8ですが、ビルドには4.6が推奨されるとのことなので、ダウンロードしておきます。

$ curl -O http://people.mozilla.org/~gsvelto/gcc-4.6.4-fc19.tar.xz
$ sudo tar -x -a -C /opt -f gcc-4.6.4-fc19.tar.xz

[追記] Fedora 21の場合はMake 4.0がデフォルトなので、ビルドに必要な3.82をインストール必要があります。(=>MDN Fedora21)

$ curl -O http://people.mozilla.org/~gsvelto/make-3.82-fc21.tar.xz
$ sudo tar Jxv -a -C /opt -f make-3.82-fc21.tar.xz
$ PATH=/opt/make-3.82/bin:$PATH

adbもインストールしてなければ、

sudo yum install android-tools

ccacheもサイズ大き目に一応設定しておきます。

ccache --max-size 10GB

端末のudevルールを設定します。ZTE OPEN Cじゃない場合はUSBベンダーIDが違うので注意。

$ sudo vim /etc/udev/rules.d/android.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="19d2", MODE="0666", GROUP="plugdev"
$ sudo systemctl restart systemd-udevd.service

端末のリモートデバッグを有効にするには、

[Settings]-[Device information]-[More information]-☑Remote debugging

システムパーティションのバックアップは、ビルドを行うbuild.shでやってくれるので、まあやらなくても。


コードの取得

適当な作業ディレクトリに移動しておいてください。
ここでは便宜的に$WORKとしておきます。

$ cd $WORK
$ git clone git://github.com/mozilla-b2g/B2G.git
$ cd B2G

次はconfig.shの実行ですが、ZTE OPEN CはFlameのベースとなっている端末なので、Flameの設定が使えるらしいです。
ただZTE OPEN Cのカスタムマニフェストがあるようなので、そいつを読み込ませます。

$ wget -O openc.xml https://bugzilla.mozilla.org/attachment.cgi?id=8429932
$ ./config.sh flame openc.xml

ネットワークが遅いとかなり時間がかかると思います。待ちましょう。

次に言語ファイルを取得します。

$ cd $WORK
$ hg clone http://hg.mozilla.org/gaia-l10n/ja gaia-l10n/ja
$ hg clone http://hg.mozilla.org/l10n-central/ja gecko-l10n/ja
$ hg clone http://hg.mozilla.org/build/compare-locales

ロケールを指定するjsonファイルを以下のように作成します。

$ cd $WORK/B2G/gaia/
$ cat ./locales/languages-japan.json 
{
  "en-US"     : "English (US)",
  "ja"        : "日本語"
}

日本語IME用の辞書をダウンロード・展開・作成します。

$ wget http://iij.dl.sourceforge.jp/naist-jdic/31880/naist-jdic-0.4.3.tar.gz
$ tar zxvf naist-jdic-0.4.3.tar.gz
$ cd ./apps/keyboard/js/imes/jskanji/dict
$ mkdir src
$ cp $B2G_WORK/naist-jdic-0.4.3/*.dic src/
$ make

ビルド

早速ビルドに移りたいところですが、少し修正が必要です。
そのままbuild.shを実行すると、最初に端末の/systemをpullしてくるときにいくつかのファイルが無いと怒られてしまいます。
“./device/t2m/flame/extract-files.sh"を以下のように修正したら大丈夫でした。
(内容的にWifiが使えなくなるんじゃないかと心配しましたが、結果的にそんなことはなかったので)

$ cd $WORK/B2G/device/t2m/flame/
$ git diff
diff --git a/extract-files.sh b/extract-files.sh
index 1b46ef1..0554d98 100755
--- a/extract-files.sh
+++ b/extract-files.sh
@@ -180,14 +180,9 @@ COMMON_WIFI="
        "
 copy_files "$COMMON_WIFI" "system/lib/modules" "wifi"

-COMMON_WIFI_VOLANS="
-       ath6kl_sdio.ko
-       "
-copy_files "$COMMON_WIFI_VOLANS" "system/lib/modules/ath6kl-3.5" "wifi"

 COMMON_WLAN="
        WCNSS_cfg.dat
-       WCNSS_qcom_cfg.ini
        WCNSS_qcom_wlan_nv.bin
        "
 copy_files "$COMMON_WLAN" "system/etc/firmware/wlan/prima" "wifi"

次に各種環境変数を以下のように.userconfigに記述しておきます。

$ cd $WORK/B2G
$ cat .userconfig
export CC=/opt/gcc-4.6.4/bin/gcc
export CXX=/opt/gcc-4.6.4/bin/g++
export WORK=[任意のパス]

export L10NBASEDIR=$WORK/gecko-l10n
export MOZ_CHROME_MULTILOCALE="ja"
export PATH="$PATH:$WORK/compare-locales/scripts"
export PYTHONPATH="$WORK/compare-locales/lib"
export MOZILLA_OFFICIAL=1

そしたらやっとビルドです。端末を接続しておくことを忘れずに。エラーが出ないことを祈りましょう…

$ ./build.sh gecko -j1

-jパラメータはビルドの並列数の設定で、デフォルトではCPUコア数+2ですが、エラー出力が見にくくなるので-j1を指定しています。
スペックにもよりますが、-j1だと一時間強かかりました。コア数と同じ-j4だと30分ちょい。

無事に終わりましたら、端末に書き込みます。

$ ./flash.sh gecko

次はgaiaのビルドです。また環境変数など設定が面倒なので、以下のようなスクリプトを書いとくといいかもです。

$ cat gaia_build.sh 
export CC=/opt/gcc-4.6.4/bin/gcc
export CXX=/opt/gcc-4.6.4/bin/g++
export WORK=[任意のパス]

export LOCALE_BASEDIR=$WORK/gaia-l10n
export LOCALES_FILE=$WORK/B2G/gaia/locales/languages-japan.json
export GAIA_DEFAULT_LOCALE=ja
export GAIA_KEYBOARD_LAYOUTS=en,jp-kanji

export B2G_SYSTEM_APPS=1
export PRODUCTION=1
export GAIA_DEVICE_TYPE=phone

cd $WORK/B2G/gaia
pwd
make reset-gaia
$ ./gaia_build.sh

さて、これで無事に起動すれば成功です!

言語選択ホーム画面日本語IME端末情報

日本語化・日本語IMEについてはMDNと共に以下のサイトを参考にいただきました。

きょうのかんぱぱ: 日本語IMEを組み込んだFirefox OS 2.1をFlameに書き込んでみた
sola: Peak 向けに Firefox OS をビルドしてみる
GCG研究所: [Firefox OS][FxOS][Gaia] 日本語キーボードの出し方と日本語IME用の辞書の作り方
水城珠洲の日記4th final: コンパイルバッチ修正

他にビルドの設定など、

dynamis / make-reset-gaia.sh: Firefox OS で日本語+英語の gaia をビルドして端末に焼き込むスクリプト
dynamis / .userconfig: Firefox OS ビルド用のユーザ設定ファイル
mozilla.dev.b2g ›ZTE Open C

comments powered by Disqus