mozilla
Your Search Results

    .userconfig ファイルをカスタマイズする

    B2Gソースの.userconfigファイルにbashコードを入れる事で、ビルドプロセスのある面をカスタマイズできます。この記事では、どこを変更してどういう効果を得られるか、どうやって変更するかを見て行きます。

    .userconfig ファイルはソースコード管理に入らないので、ソースツリーを更新しても上書きされることはありません。これはB2Gツリーのルートに作成する必要があります。つまり、flash.sh、build.shなどと同一のディレクトリに置きます。configやビルドのステップの前に追加しておく必要があります。

    .userconfig ファイルは(存在する場合)load-config.shスクリプトから実行され、次にこれらのスクリプト(flash.sh、build.sh (setup.sh経由)、run-gdb.shrun-emulator.sh、tools/mach_b2g_bootstrap.pyから実行されますrun-X.shスクリプトはビルドするGeckoの場所を決めるのに .userconfig を使います。mach_b2g_boostrap.py スクリプトは、全てのB2Gに関連するmachコマンドによって使われます。

    重要: .userconfigファイルをホームディレクトリではなく、B2Gソースディレクトリのルートに置いてください。

    Geckoのソースツリーを変更する

    デフォルトではビルドにはgithubのツリーからクローンされたgeckoツリーが使用されます。mozilla-inbound、またはmozilla-centralを使用したい人もいるでしょう。これを行うにはソースの複製を好きな場所に作っておいてから、.userconfig ファイルにGECKO_PATHを設定する行を追加します。例えば:

    export B2G_DIR=${B2G_DIR:-$(cd $(dirname $0); pwd)}
    echo "B2G_DIR = ${B2G_DIR}"
    
    export GECKO_PATH=${B2G_DIR}/mozilla-inbound
    echo "GECKO_PATH = ${GECKO_PATH}"
    

    : Mac OS XでカスタムされたGeckoをビルドする場合、mozilla-central のディレクトリは大文字小文字を区別するファイルシステムである必要があり、そうでないとGECKO_PATHが無視されます。ファイルシステムが大文字小文字を区別するかどうかをチェックするにはターミナルウィンドウでこう実行します:

    echo -n This file system is case->tmp; echo -n in>>TMP; echo sensitive>>tmp; cat tmp

    B2G_DIR を上記のように取得しておくと、 .userconfig でハードコードされたパスを扱わなくて済みます。

    Gaiaの設定を変更する

    時々Gaiaの設定を変更したくなるでしょう。例えばユーザービルドでadbを有効化など。gaiaのMakefileは --override build/custom-settings.json のパラメータを build/settings.py の呼び出し時に渡します。すると {"devtools.debugger.remote-enabled": true} custom-settings.json ファイル内に書き込むbashを書くことができます。custom-settings.json の変更は、必要なければ、避けるべきです。custom-settings.json.new に書き込み、内容が custom-settings.json と異なる場合に置き換えます。

    export GAIA_PATH=${GAIA_PATH:-$(cd gaia; pwd)}
    export CUSTOM_SETTINGS="${GAIA_PATH}/build/config/custom-settings.json"
    cat > "${CUSTOM_SETTINGS}.new" <<EOF
    {"devtools.debugger.remote-enabled": true}
    EOF
    if [ -f ${CUSTOM_SETTINGS} ] && cmp "${CUSTOM_SETTINGS}" "${CUSTOM_SETTINGS}.new" >& /dev/null; then
      rm "${CUSTOM_SETTINGS}.new"
    else
      mv "${CUSTOM_SETTINGS}.new" "${CUSTOM_SETTINGS}"
    fi
    

    他の簡単な手はGaiaワーキングディレクトリ内の build/config/custom-prefs.js ファイルを設定することです。そうするとB2Gディレクトリ内にいる場合、gaia/build/config/custom-prefs.js となります。 Gaia Build System Primer, Customizing the preferencesを見て下さい。

    記:  現在のビルドはGAIA_PATH内の異なるディレクトリを見るほどスマートではありませんGECKO_PATH の動作とは異なっています。Gaiaの別々のクローンを望むなら、そのフォルダから手動でmakeを実行する こともできます。

    異なる種類のビルドを作成する

    .userconfig に様々なオプションをセットすることで、makeコマンドを実行しながら、自動的に異なる種類のGaiaビルドを作成できます。 — この章には多数のオプションがあります。

    記: makeコマンドに異なるオプションを付けることで、ビルド時に動的に多数の異なるビルドオプションをセットできます。完全なリファレンスは、make オプションのリファレンスの記事を見て下さい。

    プロダクションビルドやエンジニアリングビルドを作成する

    別のプロダクションビルド(ユーザーに見てもらう最終アプリのビルド)や、エンジニアリングビルド(付加的なテストアプリやその他のエンジニアリング機能のビルド)を作成するため、下記の行を .userconfig に追加します:

    PRODUCTION=1

    これで勝手にプロダクションビルドが作成されます。これはproduction makeオプションをセットすることで、オンザフライに実現することもできます。

    あるいは、エンジニアリング性能のレベルを設定するvariant(異型)もあります。

    VARIANT=user
    
    VARIANT=userdebug
    
    VARIANT=eng

    このvariant(異型)の違いは下記の通り:

    • engのvariantはデフォルトアプリを/dataに置き、その他多数のアプリをuser/userdebugに入れます、これはテスト目的のため。またデフォルトでMarionetteが有効になってテストが実行できるようになっています。これはvariantが指定されない場合のデフォルト値です。
    • userdebugのvariantはアプリを /system に置き、デフォルトでMarionetteが有効になってテストが実行できるようになっており、アップデータが有効になって無線経由の(OTA/FOTA)更新ができます。
    • userのvariantはデフォルトアプリを /system に置き、アップデータが有効になって無線経由の(OTA/FOTA)更新ができます。

    : user と userdebug の両方は、ローカルに実機/エミュレータ用にビルドする時は、暗黙的に PRODUCTION=1 となります。

    : make production は、本当にユーザー版のGaiaをビルドして端末に焼く方法です。VARIANT の指定は、ナイトリーのGaiaやB2Gデスクトップ用のビルド時にこれを行う方法です。

    debugビルドを作成する

    debugビルドを作るには、.userconfig ファイルに下記行を置きます。:

    export B2G_DEBUG=1

    これはビルド時にDEBUG=1 makeオプションを含めることで、オンザフライに実現できます。

    プロファイルビルドを作成する

    プロファイルを有効にするには(ビルトインの (SPS)プラットフォームプロファイラで最良の結果を得るため)、あなたの.userconfig ファイルに下記を追加して再ビルドします:

    export MOZ_PROFILING=1

    B2G_NOOPTと一緒にしないでください。これは意味のない結果になります。

    最適化を無効にする

    最適化を無効にするには(デバッグが容易なビルドを作るかもしれません)、あなたの .userconfig ファイルに下記を追加して再ビルドします。:

    export B2G_NOOPT=1

    初回ユーザー体験を無効にする

    ビルドと焼き込みを何度も行う時、初回ユーザー体験を常に経験するのは鬱陶しいかもしれません。.userconfig に下記の行を追加することで、これを無効にできます:

    export NOFTU=1

    これはビルド時にNOFTU=1 makeオプションを含めることで、オンザフライに実現できます。

    Gaia開発者モードを有効にする

    もしアプリを開発するか、gaiaをハックする予定がある場合、端末と協調させるために様々な便利なセッティングと設定を行うことができます。例えば、自動的にリモートデバッグ機能を有効にし、デバッグ接続開始時にプロンプトを無効にすることができます。

    そうするには .userconfig に下記のexport文を追加するだけです:

    export DEVICE_DEBUG=1

    Valgrindを有効にする

    Valgrindはアプリのスレッドやメモリの問題をデバッグするのに便利です。valgrindを実行するための詳細情報は、Debugging B2G using valgrindを見よ。

    B2Gでvalgrindを有効にするには .userconfig に下記のexport文を追加します:

    export B2G_VALGRIND=1

    デフォルトホストコンパイラの変更方法

    最近のディストリビューションでGCC 4.7以降をデフォルトコンパイラに使うものでは、ビルドするために古いバージョンを指定する必要があります。そうするには .userconfig ファイルに2行を追加して CCCXX 変数を、別のCとC++コンパイラをそれぞれ使う様に設定します。例えば Ubuntu 12.10でGCC 4.6を使うには:

    export CC=gcc-4.6
    export CXX=g++-4.6
    

    とし、またはソースからビルドしたバージョンを使っている場合、実行ファイルへのフルパスを記載します:

    export CC=/opt/gcc-4.6.4/bin/gcc
    export CXX=/opt/gcc-4.6.4/bin/g++
    

    カスタムしたGeckoオブジェクトツリーの場所を指定する

    geckoソースツリーとその他のビルドオプションをいったん変更した場合、オブジェクトが格納される場所も変更したくなるでしょう(つまり、例えば全てのデバッグ用オブジェクトを非デバッグ用オブジェクトのツリーと別にするなど)。こんな風にします:

    export GECKO_OBJDIR=${GECKO_PATH}/objdir-gonk-debug
    

    ${GECKO_PATH}を使うと、異なるgeckoツリー(例: central, beta, aurora, など)を切り替えるのに楽です。

    デバッグ用オブジェクトと非デバッグオブジェクトの両方を保持する

    .userconfig ファイルを使用して、デバッグビルドとリリースビルドを、毎回全部ビルドすることなく切り替えることができます。

    export B2G_DIR=${B2G_DIR:-$(cd $(dirname $0); pwd)}
    echo "B2G_DIR = ${B2G_DIR}"
    
    export GECKO_PATH=${B2G_DIR}/mozilla-inbound
    echo "GECKO_PATH = ${GECKO_PATH}"
    
    export B2G_DEBUG=1
    echo "B2G_DEBUG = ${B2G_DEBUG}"
    
    export GECKO_OBJDIR=${GECKO_PATH}/objdir-gonk
    if [ "${B2G_DEBUG}" != "0" ]; then
      export GECKO_OBJDIR=${GECKO_OBJDIR}-debug
    fi
    if [ "${GECKO_PATH/*mozilla-inbound*/mozilla-inbound}" = "mozilla-inbound" ]; then
      export GECKO_OBJDIR=${GECKO_OBJDIR}-m-i
    fi
    echo "GECKO_OBJDIR = ${GECKO_OBJDIR}"

    echo コマンドは今の設定が何かを思い出させてくれます。デバッグビルドとリリースビルドを切り替えるには、単に7行目の B2G_DEBUG の値を変更します。

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

    Contributors to this page: Uemmra3
    最終更新者: Uemmra3,
    サイドバーを隠す