Antes de você compilar o B2G, você precisa criar um clone do repositório e configurar sua árvore de compilação. Esse artigo explica como fazer isso.
Dependendo da sua conexão de internet, a etapa de configuração leva uma boa quantidade de horas para baixar os arquivos necessários para compilar o Firefox OS (com uma conexão medíocre de 150 kBps, baixar gigabytes de repositórios Android pode levar dezenas de horas). Uma vez que esperar não é uma tarefa muito divertida, depois de ler essa página e iniciar o script de configuração considere usar seu tempo para configurar e utilizar o Simulador do Firefox OS, familiarizar-se com a Documentação para desenvolvedores de aplicativos incluindo Projeto e Compilação de Aplicativos ou até mesmo ler sobre os próximos passos.
Você precisará ter uma outra tarefa para fazer, ou um amigo disponível para um café enquanto são executadas as tarefas de configurar e compilar o B2G. Elas podem levar um bom tempo.
Clonar o repositório B2G
O primeiro passo, antes de iniciar sua primeira compilação, é clonar o repositório B2G. Não será baixado tudo! Ao invés disso, somente o sistema de compilação e utilitários de configuração. A maioria do código real do B2G está no repositório principal da Mozilla: Mercurial.
Para clonar o repositório use o git:
git clone git://github.com/mozilla-b2g/B2G.git
Após clonar (o que somente levará um minuto numa conexão rápida), vá para o diretório B2G:
cd B2G
Configurando o B2G para seu dispositivo
Uma vez que você tenha baixado o núcelo do sistema de compilação do B2G, você precisa configurá-lo para o dispositivo que você deseja instalar. Para conseguir uma lista dos dispositivos suportados, você pode usar o utilitário config.sh
— execute o seguinte comando no diretório B2G:
./config.sh
Vai ser apresentada uma lista dos dispositivos suportados, como essa:
Usage: ./config.sh [-cdflnq] (device name) Flags are passed through to |./repo sync|. Valid devices to configure are: - galaxy-s2 - galaxy-nexus - nexus-4 - nexus-4-kk - nexus-5 - nexus-5-l - nexus-s - nexus-s-4g - flo (Nexus 7 2013) - otoro - unagi - inari - keon - peak - hamachi - helix - tarako - dolphin - dolphin-512 - pandaboard - vixen - flatfish - flame - flame-kk - flame-l - rpi (Revision B) - emulator - emulator-jb - emulator-kk - emulator-l - emulator-x86 - emulator-x86-jb - emulator-x86-kk - emulator-x86-l > Sony Xperia devices - aries (Z3 Compact KK) - aries-l (Z3 Compact L) - leo-kk (Z3 KK) - leo-l (Z3 L) - scorpion-l (Z3 Tablet Compact L) - sirius-l (Z2 L) - tianchi-l (T2U L) - flamingo-l (E3 L)
Se o seu dispositivo não estiver na lista, você deve parar agora ou ajudar a portar o B2G para o seu dispositivo, ou ainda esperar que alguém o faça. Nós preferimos que você ajude!
do Gecko, veja Compilando um Gecko customizado antes de
prosseguir. Se você desejar compilar um branch que não seja o padrão para o
seu dispositivo (por exemplo, para compilar uma versão específica do B2G),
veja Compilando um branch. Nota: o branch padrão varia conforme o
dispositivo e não é necessariamente o trunk
Agora pode ser um ótimo momento para um café, já que a partir desse ponto você começará a baixar o código necessário para compilar o Boot to Gecko. Executar as etapas de configuração como indicado abaixo tomará um longo tempo. Você poderá parar a execução com Ctrl-C e reiniciar um tempo depois. Se você achar que alguma parte do processo terminou sem ter todas as tarefas completadas, execute ./repo sync
para reparar possíveis problemas.
Configurando a compilação do B2G para um dispositivo móvel
Neste ponto, conecte seu dispositivo caso ele ainda não esteja conectado, uma vez que o processo de configuração vai precisar acessá-lo.
Se o seu dispositivo estava listado nos resultados mostrados acima, você pode iniciar o processo de configuração executando novamente config.sh
, mas dessa vez especificando o nome do seu dispositivo. Por exemplo, para compilar para o aparelho Samsung Google Nexus S, você vai executar:
./config.sh nexus-s
fatal: manifest 'nexus-s.xml' not available
, possivelmente basta especificar o branch que você quer usar. Veja o artigo Compilando um branch para mais detalhes.error: manifest required for this command -- please run init
, indica que as alterações realizadas no arquivo manifesto para o repo (localizado em B2G/.repo/manifest.xml
) não foi criado corretamente. Você deve tentar executar config.sh
novamente indicando explicitamente o arquivo manifesto dessa forma: ./config.sh <device> -m path/to/manifest.
Próximo de iniciar a configuracão você precisa configurar a opção para o uso da cor, após isso o processo continua. Você pode apenas selecionar 'y' aqui, já que você provavelmente vai querer a compilação com essa opção.
Configurando uma compilação usando uma cópia de segurança do sistema
Se o seu telefone não possui mais o Android, e a árvore B2G não tem os BLOBs binários, mas você sabiamente fez uma cópia de segurança da partição /system
, você pode executar a compilação no sistema dessa forma:
ANDROIDFS_DIR=<absolute path to parent dir of system dir> ./config.sh <target>
A compilação por padrão procurará em algum lugar como backup-inari/system
(dependendo da configuração do dispositivo); se você colocar os arquivos no local esperado não será necessário especificar o diretório.
Observe que se seu telefone sempre teve o Firefox OS e nunca rodou o Android, mesmo assim é bom copiar a partição /system
conforme as instruções acima — isso trará os arquivos corretos.
Configurando a compilação do B2G para um emulador
Se você quiser compilar para um emulador no lugar de um telefone real, você pode especificar emulator*
para um emulador de dispositivo ARM, ou emulator-x86
* para um emulador x86. Esse último é mais rápido, mas não tão preciso na representação de um dispositivo móvel real e também não é suportado. Assim, não é aconselhável sua utilização.
Por exemplo, para compilar o emulador ARM Jellybean, você pode usar o seguinte comando:
./config.sh emulator-jb
A partir desse ponto você está pronto para iniciar a compilação, a menos que você precisa informações mais detalhadas como as descritas abaixo.
Importante: A compilação para emulador no Linux 64-bit pode não funcionar.
Compilando um Gecko customizado
Pode haver momentos que você queira ou precisa compilar o B2G baseado numa versão do Gecko diferente da padrão atualmente utilizada (como especificado no manifesto). Você pode fazer isso editando o arquivo .userconfig
. Por exemplo, se você quiser compilar o mozilla-central:
export GECKO_PATH=/path/to/mozilla-central export GECKO_OBJDIR=/path/to/mozilla-central/objdir-gonk
Nota: se você for compilar um Gecko customizado no Mac OS X, o diretório mozilla-centra deve estar num sistema de arquivos case sensitive.
Observe que você pode fazer isso antes de você baixar o repositório (ou seja, antes da etapa config.sh
descrita acima) ou em qualquer momento mais tarde. Você também pode manter múltiplas compilações (com modo de depuração ligado ou não, etc)
Note that you can do this either before you pull the repository (i.e. before the config.sh
step above) or at any later point. You can also keep multiple builds (with debugging on or not, etc) tendo vários arquivos userconfig
(obviamente com diferentes configurações cada um necessita um diferente OBJDIR) e fazer um link simbólico do .userconfig
que aponta para qual configuração você deseja compilar naquele momento.
Para maiores informações, leia o artigo Alterando a árvore fonte do Gecko.
Compilando um branch
Se você quiser compilar para um outro branch que não o branch padrão (atenção: o branch padrão pode não ser o "master"!), você precisa inserir um prefixo na chamada do script config.sh
com o nome do branch:
BRANCH=branch-name ./config.sh <device>
Os nomes dos branches seguem uma lógica e em grande parte seguem os nomes dos produtos/versões, por exemplo, v1-train
, v1.0.0
, v1.0.1
, v1.1
, v1.1.0hd
, v1.2, v1.3, v1.4, v2.0
e assim será no futuro. Como exemplo, para compilar o B2G Firefox 1.2 para o emulador ARM você deve usar o comando:
BRANCH=v1.2 ./config.sh emulator
Se você já executou o config.sh
, você pode ver os nomes dos branches, indo ao diretório B2G/.repo/manifests
e executando "git branch -a
" (esse não é preenchido até então). O nome do branch pode ser visto no final da linha:
remotes/origin/master remotes/origin/v1-train remotes/origin/v1.0.0 remotes/origin/v1.0.1
Veja o artigo Customização com o arquivo .userconfig para customizações adicionais que você pode fazeror additional customizations you can do.
Copiando a árvore B2G para uma nova máquina
Se você já configurou uma árvore B2G e tem um novo computador (sorte para você!) sua vida será bem mais fácil se você simplestmente migrar a árvore B2G inteira do seu computador antigo para o novo, ao invés de configurar tudo novamente. Para fazer isso, monte o disco do seu computador antigo no novo computador e execute o seguinte comando:
rsync -a source/ dest/
Onde source
é o caminho completo (incluindo a barra final) da árvore origem e dest
é o local onde para onde você quer copiar o conteúdo. (a barra final também é importante!).
Se você fizer isso, pode pular todo o resto desse artigo e ir direto para o artigo building.
Alterando a árvore B2G
Quando o repositório é alterado com uma nova versão do B2G, você pode querer alterar sua árvore B2G. Para fazer isso, execute os seguintes comandos:
git fetch origin git checkout origin/master
Você pode verificar se tudo funcionou corretamente executando:
git show HEAD
e verificando que o commit mostrado corresponde ao mais recente em: https://github.com/mozilla-b2g/B2G/commits/master
Próximo passo
Agora, você está pronto para compilar o Firefox OS.