Primeiros passos
JHBuild exige algumas etapas de configurações para ser executado antes de compilar softwares. JHBuild tem como pré-requisito alguns softwares e também algumas ferramenta, para obter e compilar os módulos de softwares.
- 2.1. Instalando JHBuild
- 2.2. Configurando JHBuild
- 2.3. Pré-requisitos de compilação
- 2.4. Usando JHBuild
2.1. Instalando JHBuild
JHBuild requer um Python. Verifique se >= 2.3 está instalado.
Uma forma recomendada para baixar JHBuild é por meio do sistema de controle de versão, git. Isso pode ser alcançado com o seguinte comando. É recomendado executar o comando de um novo diretório onde todo código fonte será instalado, por exemplo, ~/checkout/gnome.
$ git clone git://git.gnome.org/jhbuild ... $
Isso vai baixar o JHBuild em uma pasta chamada jhbuild dentro do diretório atual. Agora, para compilar e instalar o JHBuild:
$ cd jhbuild $ ./autogen.sh ... $ make ... $ make install ... $
Se gnome-common, yelp-tools e autotools estiverem disponíveis, autogen.sh vai configurar o JHBuild para instalar via autotools. Se gnome-common, yelp-tools e autotools não estiverem disponíveis, autogen.sh vai configurar JHBuild para instalar por meio de um Makefile simples. Para sempre usar o método Makefile simples passe --simple-install para o autogen.sh.
Se os passos acima concluírem com sucesso, um pequeno script de shell será instalado em ~/.local/bin para executar JHBuild. Adicione ~/.local/bin no PATH:
$ PATH=$PATH:~/.local/bin $
Para adicionar permanentemente ~/.local/bin à variável PATH, execute o seguinte comando:
$ echo PATH=$PATH:~/.local/bin >> ~/.bashrc $
2.2. Configurando JHBuild
JHBuild pode ser configurado por um arquivo de configuração. A localização padrão é ~/.config/jhbuildrc. Se um arquivo de configuração não existir, o padrão. O arquivo de configuração usa uma sintaxe Python. Um exemplo é fornecido em examples/sample.jhbuildrc. Copie examples/sample.jhbuildrc para ~/.config/jhbuildrc e personalize da forma que precisar.
A amostra de configuração fará com que o JHBuild compile os módulos de meta-gnome-core e meta-gnome-apps-tested e as dependências da coleção de módulos gnome-apps. JHBuild vai descompactar as árvores de fontes para ~/checkout/gnome e instalar todos os arquivos em subdiretórios de /opt/gnome. Os dois diretórios devem ser poder ser escritos.
Variáveis de configuração estão documentadas em Section 6 ― Referência de arquivo de configuração. A maioria das variáveis normalmente usadas são:
- repos
-
Um dicionário que pode ser usado para especificar uma localização alternativa de repositório para um repositório particular. Esta variável de configuração é útil para desenvolvedores de módulos. Por padrão, JHBuild vai baixar o código de repositórios usando uma localização anônima de repositório. As chaves de dicionário são nomes curtos de repositórios e os nomes são textos com a localização alternativa do repositório. Por exemplo:
repos['git.gnome.org'] = 'ssh://usuário@git.gnome.org/git/'
- moduleset
-
Um texto ou uma lista de textos especificando os nomes das coleções de módulos a serem usados. Pode ser o nome do arquivo de uma coleção de módulos inclusa no JHBuild (excluindo o caminho e extensão) ou uma URL de HTTP completa para uma coleção de módulos gerenciada externamente. Coleções de módulos de URL de HTTP são mantidas no cache localmente. Se um módulo com o mesmo nome estiver presente em mais de uma coleção de módulos, a última coleção listada terá prioridade. As coleções de módulos fornecidas com o JHBuild são atualizadas para corresponder à versão de desenvolvimento atual do GNOME.
- modules
-
Uma lista de textos especificando módulos para compilar. A lista de módulos realmente compilada será expandida recursivamente para incluir todas as dependências, a menos que o comando buildone seja usado. Padrão é ['meta-gnome-desktop'].
- checkoutroot
-
Um texto especificando o diretório para o qual serão desempacotadas as árvores de fontes. A menos que buildroot esteja definido, as compilações vão ocorrer neste diretório também. Padrão é ~/checkout/gnome.
- prefix
-
Um texto especificando o prefixo no qual serão instalados os módulos. prefix deve ser um caminho absoluto. Deve haver permissão de escrita para este diretório. Padrão é "/opt/gnome".
- autogenargs
-
Um texto contendo argumentos passados para o script autogen.sh de todos os módulos. Pode ser sobrescrito por módulos em particular usando o dicionário module_autogenargs.
- makeargs
-
Um texto listando argumentos adicionais a serem passados para o make. JHBuild vai anexar automaticamente a opção de execução paralela (-j) baseada nos núcleos de CPU disponíveis. Padrão é "".
2.3. Pré-requisitos de compilação
Antes que qualquer módulo possa ser compilado, é necessário ter certas ferramentas de compilação instaladas. Ferramentas de compilação comuns incluem o GNU Autotools (autoconf, automake, libtool e gettext), o conjunto de ferramentas GNU (binutils, gcc, g++), make, pkg-config e Python, dependendo de quais módulos serão compilados.
JHBuild pode verificar se as ferramentas estão instaladas usando o sanitycheck command:
$ jhbuild sanitycheck
Se este comando exibir quaisquer mensagens, por favor instale o pacote necessário do repositório de sua distribuição. Uma lista de nomes de pacotes para diferentes distribuições é mantida no wiki do GNOME. Execute o comando sanitycheck novamente após a instalação dos pacotes da distribuição para certificar de que as ferramentas necessárias estão presentes.
2.4. Usando JHBuild
Após a configuração ter sido concluída, JHBuild poderá ser usado para compilar softwares. Para compilar todos os módulos selecionados no arquivo ~/.config/jhbuildrc, execute o seguinte comando:
$ jhbuild build
JHBuild vai baixar, configurar, compilar e instalar cada um dos módulos. Se um erro ocorrer em qualquer estágio, o JHBuild vai apresentar um menu perguntando o que deve ser feito. As escolhas incluem entrar em um shell para corrigir o erro, executar novamente a compilação de vários estágios, desistir do módulo ou ignorar o erro e continuar.
Desistir do módulo vai levar qualquer módulo que dependa dele a falhar.
Logo abaixo está um exemplo do menu exibido:
[1] Re-executar fase build
[2] Ignorar erro e continuar para install
[3] Desistir do módulo
[4] Iniciar shell
[5] Recarregar configuração
[6] Ir para fase "limpar diretório e iniciar novamente"
[7] Ir para fase "configure"
[8] Ir para fase "clean"
[9] Ir para fase "distclean"
escolha:
Também é possível compilar uma coleção diferente de módulos e suas dependências passando os nomes de módulos para o comando build. Por exemplo, para compilar gtk+:
$ jhbuild build gtk+
Se JHBuild for cancelado no meio de uma compilação, é possível resumi-la em um módulo em particular usando a opção --start-at:
$ jhbuild build --start-at=pango
Para compilar um ou mais módulos, ignorando suas dependências, JHBuild tem o comando buildone. Para o comando buildone concluir com sucesso, todas as dependências devem estar previamente compiladas e instaladas ou fornecidas por pacotes de distribuição.
$ jhbuild buildone gtk+
Quando desenvolvendo ativamente um módulo, você provavelmente o faz no diretório de trabalho dos fontes. O make vai chamar o sistema de compilação e instalar o módulo. Isso será uma parte chave do ciclo de editar-compilar-instalar-testar.
$ jhbuild make
Se JHBuild for cancelado no meio de uma compilação, é possível resumi-la em um módulo em particular usando a opção --start-at:
Para obter uma lista de módulos e dependências que o JHBuild vai compilar e a ordem na qual eles serão compilados, use o comando list:
$ jhbuild list
Para obter informações sobre um módulo em particular, use o comando info:
$ jhbuild info gtk+
Para baixar ou atualizar os fontes de softwares sem compilá-los, use o comando update. O comando update fornece uma oportunidade para modificar os fontes antes de compilar e pode ser útil se a conexão com a Internet ficar variando.
$ jhbuild update
Posteriomente, JHBuild pode compilar tudo sem baixar ou atualizar os fontes:
$ jhbuild build --no-network
Para executar um comando em particular com o mesmo ambiente usado pelo JHBuild, use o comando run:
$ jhbuild run program
Para iniciar um shell com o mesmo ambiente usado pelo JHBuild, use o comando shell:
$ jhbuild shell