SVN-BUILDPACKAGE(1) | Referência de comando | SVN-BUILDPACKAGE(1) |
svn-buildpackage - constrói pacotes Debian a partir de repositório SVN
svn-buildpackage [[ OPÇÕES... ] [ OPÇÕES para o dpkg-buildpackage ]]
Constrói um pacote Debian a partir de um repositório Subversion. O repositório de código fonte tem de estar no formato criado pelo svn-inject, e este script tem de ser executado no directório de trabalho (trunk/pacote).
Por predefinição, o directório de trabalho é usado como o directório de fonte principal (assumindo que toda a fonte original está armazenada no repositório). A alternativa é o chamado "modo merge". Com este método, apenas o directório debian (e talvez outros ficheiros modificados) são armazenados no repositório. Durante a construção, o conteúdo do trunk svn é copiado para o conteúdo do tarball extraído (e pode sobrescrever partes dele). Para escolher este modelo de trabalho, defina a propriedade mergeWithUpstream do svn no directório debian.
$ svn propset mergeWithUpstream 1 debian
mergeWithUpstream requer que o sistema possa preparar um tarball, usando tipicamente make dist e autotools. Todos os pacotes da origem irão ter alguma forma de suporte a criação de tarball e os pacotes nativos que usam autotools ou têm suporte de tarball interno podem usar mergeWithUpstream para lidar com os ficheiros gerados que são necessários para construir o pacote mas não estão presentes no SVN. Veja o guia HOWTO para exemplos de como isto pode ser feito. Os pacotes nativos que não usam autotools e não têm suporte de tarball interno podem ainda adicionar os ficheiros gerados ao tarball do pacote fonte usando o useNativeDist ao alvo do Makefile de nível de topo. Este alvo personalizado tem de ser idempotente e apenas modificar / gerar os ficheiros desejados usando apenas a fonte SVN exportada e as dependências de construção. Para permitir ao svn-buildpackage usar um alvo make native-dist no seu Makefile de nível de topo, regule a propriedade useNativeDist no directório ./debian/:
$ svn propset useNativeDist 1 debian
O comportamento predefinido do svn-buildpackage é o seguinte:
Verifica o directório de trabalho, queixa-se de ficheiros não submetidos (veja também --svn-ignore-new)
Copia o tarball de origem para a área de construção se necessário (veja também --svn-no-links)
Extrai o tarball (em modo de fusão) ou exporta o directório de trabalho do svn para o directório de construção (veja também em baixo e --svn-no-links)
Constrói com o dpkg-buildpackage (veja também --svn-builder, --svn-lintian, etc.)
Cria um entrada no registo de alterações para a versão futura
svn-buildpackage aceita as seguintes opções na linha de comandos:
--svn-builder=COMANDO
AVISO: as regras de cotação da shell não se aplicam completamente aqui, é melhor usar wrappers para construções complexas. Usar esta opção pode quebrar a funcionalidade de --svn-lintian e --svn-move. Algumas funções podem ser desactivadas quando é usado um comando de construção personalizado porque a localização do ficheiro resultante não é previsível.
Predefinição: usa dpkg-buildpackage.
--svn-ignore-new | --svn-ignore
Predefinição: Pára em conflitos ou ficheiros novos/alterados.
--svn-dont-clean
Predefinição: primeiro limpa.
--svn-no-links
Predefinição: usa os links onde possível.
--svn-dont-purge
Predefinição: remove após construção com sucesso.
--svn-reuse
Predefinição: o directório de construção é removido.
--svn-rm-prev-dir
Predefinição: renomeia os directórios antigos com o sufixo 'obsolete'.
--svn-export
Predefinição: Desligado.
--svn-tag
Predefinição: Desligado.
--svn-tag-only | --svn-only-tag
Predefinição: Desligado.
--svn-retag
Predefinição: Desligado.
--svn-noautodch
Predefinição: Uma nova entrada no registo de alterações UNRELEASED é definida via dch.
--svn-lintian
Predefinição: Desligado.
--svn-move
Predefinição: Desligado.
--svn-move-to=...
Predefinição: Desligado. (Os ficheiros são deixados onde o comando de construção os colocou.)
--svn-pkg=nome_de_pacote
Predefinição: Desligado.
--svn-arch=ARQUITECTURA
Predefinição: Desligado.
--svn-override=var=valor,anothervar=valor
Predefinição: Desligado.
--svn-prebuild | --svn-postbuild | --svn-pretag | --svn-posttag
Por favor note que os hooks prebuild e postbuild substituem as acções prebuild e postbuild normais do svn-buildpackage. Para prebuild, isto significa que as dependências de construção não serão verificadas. Para postbuild, isto significa que os ficheiros resultantes não serão movidos, e o lintian não será executado.
Predefinição: Desligado.
--svn-noninteractive
Predefinição: Desligado.
--svn-savecfg
Com este parâmetro o svn-buildpackage irá (parcialmente) replicar o comportamento antigo. Em contraste com o comportamento descontinuado, o .svn/deb-layout é reconhecido como uma sobreposição local; o comportamento antigo simplesmente ignorava qualquer informação de disposição com versão se encontrasse .svn/deb-layout.
Esta opção foi disponibilizada porque pode ser útil quando se cria um ficheiro de sobreposição local.
Predefinição: Desligado.
--svn-download-orig
Predefinição: Desligado.
--svn-verbose
Predefinição: Desligado.
-h | --help
Para informação mais detalhada de como usar o svn-buildpackage, veja o HOWTO. http://svn-bp.alioth.debian.org/[1].
Para começar a trabalhar com um pacote Debian nativo existente a partir de um ficheiro *.dsc, importe-o para o repositório com o comando:
svn-inject package_0.1.dsc svn://host/debian/devel/packages
Para começar a trabalhar com um pacote da origem existente em Debian a partir de um ficheiro *.dsc, importe-o para o repositório com o comando:
svn-inject -o package_0.1-2.dsc svn://host/debian/devel/packages
Antes de construir um pacote da origem, certifique-se que a fonte original está disponível, ex. se o uscan está a funcionar:
svn mkdir ../tarballs svn propset svn:ignore "*" ../tarballs uscan --force-download --destdir ../tarballs
Para uma construção teste do pacote a partir de repositório SVN, use o comando abaixo. Use referências do manual do dpkg-buildpackage(1) para as opções -us etc.
svn-buildpackage --svn-lintian -us -uc -rfakeroot
Para verificar que o pacote constrói num estado limpo, teste-o com pbuilder(1):
svn mkdir ../build-area # Para armazenar resultados svn propset svn:ignore "*" ../build-area svn-buildpackage --svn-ignore-new --svn-builder=pdebuild
Quando um novo lançamento da origem está disponível, submete todas as alterações e tem a árvore de trabalho num estado limpo. Depois usa o svn-upgrade(1) para importar o novo lançamento.
svn status # Verifica que não há alterações não submetidas svn-upgrade --verbose ../package-2.0.tar.gz
O comportamento do svn-buildpackage pode ser modificado usando o ficheiro ~/.svn-buildpackage.conf. Podem ser adicionadas partes adicionais em cada directório de trabalho de pacote usando o ficheiro .svn/svn-buildpackage.conf. É essencialmente uma lista de opções longas de linha de comandos (sem os sinais menos iniciais), um argumento por linha (sem citações envolvendo os argumentos de múltiplas palavras). As variáveis são expandidas com a shell do sistema se lá existirem variáveis de shell. Evite o sinal ~ porque não é expansão de confiança: É melhor usar antes $HOME. Exemplo:
svn-builder=debuild -EPATH svn-no-links svn-override=origDir=$HOME/debian/upstream/$PACOTE # svn-ignore-new #svn-lintian
Por predefinição, o svn-buildpackage espera um ficheiro de configuração com declaração de caminho/url, .svn/deb-layout. Os valores de lá podem ser sobrepostos com a opção --svn-override, veja em cima. Se um ficheiro de configuração não pode ser encontrado, as definições são auto-detectadas seguindo as deduções normais acerca de directórios locais e disposição do repositório. Adicionalmente, o conteúdo de um ficheiro personalizado debian/svn-deblayout será importado durante a configuração inicial. Os responsáveis pelo pacote podem armazenar este ficheiro no repositório para passar predefinições correctas aos novos utilizadores do svn-buildpackage. O formato é o mesmo que no ficheiro .svn/deb-layout. Como uma alternativa ao ficheiro debian/svn-deblayout, os responsáveis podem definir as propriedades do Subversion para o directório debian/, quaisquer propriedades de debian/ que tenham um nome no formato svn-bp:PROP serão a fonte da definição PROP a qual tem o valor indicado pela primeira linha do valor da propriedade. Se não for fornecido um URL de svn completo, o repositório raiz irá ser precedido para este valor.
As seguintes variáveis de ambiente são exportadas pelo svn-buildpackage e podem ser usadas em hook a comandos ou ao sistema de construção de pacotes.
PACOTE, pacote
SVN_BUILDPACKAGE
TAG_VERSION, debian_version
non_epoch_version
upstream_version
guess_loc
DIFFSRC
Todas as propriedades de disposição são também exportadas para o ambiente. As seguintes têm significado para o svn-buildpackage.
buildArea
trunkUrl
tagsUrl
origDir
origUrl
As seguintes variáveis são compreendidas pelo svn-buildpackage:
FORCETAG
FORCEEXPORT
DEBIAN_FRONTEND
Usa nomes alternativos de shell. Aqui estão alguns exemplos para Bash:
alias svn-b="svn-buildpackage -us -uc -rfakeroot --svn-ignore" alias svn-br="svn-b --svn-dont-purge --svn-reuse" alias svn-bt="svn-buildpackage --svn-tag -rfakeroot"
Esses comandos têm significados respectivos: construir independentemente de ficheiros novos ou alterados; construir independentemente de ficheiros novos ou alterados e reutiliza o directório de construção; construir e etiquetar (para upload).
SSH é o modo mais fácil de aceder a repositórios remotos, apesar de geralmente requerer a entrada da palavra passe com mais frequência com o svn-buildpackage. Meios de contornar incluem usar uma chave ssh com uma frase passe (apesar de isto ser inseguro e mesmo assim relativamente lento), ou a funcionalidade de cache da ligação SSH presente nas versões recentes do SSH. Para mais detalhes, veja o manual do svn-buildpackage.
Outro modo de obter uma ligação remota é usar o módulo DAV do Subversion (com SSL e autenticação do utilizador do Apache), veja o manual HOWTO do svn-buildpackage para mais detalhes.
/usr/share/doc/svn-buildpackage/()
Eduard Bloch
Goneri Le Bouder
Neil Williams
Copyright © 2009 Eduard Bloch
Maio 2009 | Lançamento: 0.8.2 |