Customização com o arquivo .userconfig

by 1 colaborador:

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.

Etiquetas do documento e colaboradores

Contributors to this page: rbrandao
Última atualização por: rbrandao,
Esconder painel