Você pode customizar alguns aspectos do processo de compilação colocando códigos bash no arquivo .userconfig
presente no fonte do B2G. Esse artigo mostra como você pode fazer alterações nesse arquivo.
O arquivo .userconfig
não é marcado no controle do código fonte, assim suas alterações não irão ser sobrescritas quando você atualizar sua árvore dos fontes. Deve ser criado na raiz da sua árvore B2G, ou seja, no mesmo diretório que se encontram os arquivos flash.sh
, build.sh
, etc. Você deve adicioná-lo antes de executar a configuração e as demais etapas de compilação.
Se o arquivo .userconfig
existir, foi originado pelo script load-config.sh
, que por sua vez foi originado pelos scripts: flash.sh
, build.sh
(através do setup.sh
), run-gdb.sh
, e run-emulator.sh
e tools/mach_b2g_bootstrap.ph
. O script run-*.sh
usa-o para determinar onde está o Gecko para sua compilação. O script mach_b2g_boostrap.py
é usado por todos os comandos mach relacionados com o B2G.
Importante: Seu arquivo .userconfig deve estar no diretório raiz do fonte do B2G e não no seu diretório home!
Alterando a árvore fonte do Gecko
Por padrão, o processo de compilação usa a árvore do Gecko, que é clonada de uma árvore no Github. Algumas pessoas gostam de usar mozilla-inbound, ou mozilla-central. Para fazer isso, crie seu clone onde quer que você queira e adicione uma linha ao seu .userconfig
indicando o GECKO_PATH
, por exemplo:
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}"
Nota: Caso você esteja compilando em um Mac OS X, o diretório mozilla-central
deve estar em um sistema case sensitive file system ou o conteúdo de GECKO_PATH
será ignorado. Você pode verificar se o sistema de arquivos é case sensitive rodando o seguinte comando no seu terminal\:
echo -n This file system is case->tmp; echo -n in>>TMP; echo sensitive>>tmp; cat tmp
Obtendo o B2G_DIR
da forma descrita acima permite o seu .userconfig
trabalhar sem a necessidade de descrever caminhos de diretório diretamente no arquivo (hard-coded).
Alterando as configurações Gaia
Algumas vezes é interessante alterar as configurações Gaia. Por exemplo, habilitar o adb
em uma imagem do usuário. O Gaia Makefile
passa em --override build/custom-settings.json
quando chamar build/settings.py
, assim nós podemos escrever algum bash que escreve {"devtools.debugger.remote-enabled": true}
no arquivo custom-settings.json
. Nós tentamos evitar alterar custom-settings.json
se não for preciso, então nós realmente geramos o arquivo custom-settings.json.new
e se os conteúdos forem diferentes de custom-settings.json
então nós o substituímos.
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
Uma outra forma mais fácil é configurar o arquivo build/config/custom-prefs.js
no diretório de trabalho Gaia, ou seja, gaia/build/config/custom-prefs.js
se você estiver no diretório B2G. Veja o artigo Sistema de Compilação Primária.
Nota: Atualmente o processo de compilação não é automatizado o suficiente para procurar em um diretório diferente baseado em GAIA_PATH
. Isso é diferente de como GECKO_PATH
se comporta. Se você deseja usar um clone separado do Gaia você pode executar o make manualmente daquele diretório.
Criar uma imagem de depuração
Para fazer isso, coloque a seguinte linha no seu arquivo .userconfig
:
export B2G_DEBUG=1
Construção de perfis
Para habilitar os perfis (para melhores resultados com a plataforma de perfis SPS), inclua o seguinte trecho no arquivo .userconfig
e depois recompile:
export MOZ_PROFILING=1
NÃO emparelhe com B2G_NOOPT. Os resultados não farão sentido!
Desabilitar o otimizador
Para desabilitar o otimizador (que pode criar imagens mais fáceis para depurar), inclua o seguinte trecho no arquivo .userconfig
e depois recompile:
export B2G_NOOPT=1
Desabiltar a Experência de Primeiro Uso
Se você compila e copiar para o dispositivo muitas vezes, passar várias vezes pela rotina de primeiro uso pode ser irritante. Você pode desabilitar isso incluindo o seguinte trecho no arquvio .userconfig
:
export NOFTU=1
Habilitar o modo desenvolvedor do Gaia
Se você planeja desenvolver aplicativos ou modificar o Gaia, você pode configurar automaticamente várias opções úteis para trabalhar mais facilmente com o seu dispositivo. Por exemplo, habilitar a depuração remota e desabilitar o prompt automaticamente quando uma conexão com o computador for iniciada.
Inclua isso no seu arquivo .userconfig
:
export DEVICE_DEBUG=1
Habilitar o valgrind
Valgrind é útil para depurar memória ou problemas relacionados com threads na sua aplicação. Para mais informação de como executar o valgrind, veja o artigo Depurando o B2G usando valgrind.
Para usar o valgrind com B2G, inclua o trecho no seu arquivo .userconfig
:
export B2G_VALGRIND=1
Alterando o compilador padrão
Em algumas distribuições recentes que usam o GCC 4.7 como compilador padrão você necessitará especificar uma versão anterior para poder compilar corretamente, para fazer isso inclua duas linhas ao arquivo.userconfig
para configurar as variáveis CC
e CXX
alterando os compiladores C e C++ respectivamente. Por exemplo, para configurar o compilador GCC 4.6 no Ubuntu 12.10 use:
export CC=gcc-4.6 export CXX=g++-4.6
Ou se você esetiver usando uma versão compilada a partir dos fontes forneça o caminho completo para os executáveis:
export CC=/opt/gcc-4.6.4/bin/gcc export CXX=/opt/gcc-4.6.4/bin/g++
Especificar um local específico para a árvore de objetos do Gecko
Uma vez que você altere a árvore dos fontes do Gecko e outras opções de compilação, você pode querer alterar o local onde esses objetos são armazendos (assim seus objetos para depuração ficarão em uma árvore diferente dos objetos da imagem sem depuração, por exemplo). Isso deve ser feito dessa forma:
export GECKO_OBJDIR=${GECKO_PATH}/objdir-gonk-debug
Usando ${GECKO_PATH}
torna mais fácil alternar entre as diferentes árvores do Gecko (por exemplo: central, beta, aurora, etc).
Mantendo os objetos com e sem depuração
Você pode usar o arquivo .userconfig
para alternar entre imagens com e sem depuracão sem a necessidade de recompilar tudo a cada vez que quiser trocar.
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}"
O comando echo
ajuda a lembrá-lo de suas configurações atuais. Para alterar entre imagens de depuração e release, basta alterar no valor de B2G_DEBUG
na linha 7.