Capítulo 8. Sanitização da fonte

# Capítulo 8. Sanitização da fonte

Existem alguns casos que requerem o sanitizar da fonte para prevenir a contaminação do pacote fonte Debian gerado.

- Non- DFSG compliant content in the upstream source.

  - Debian leva a sério a liberdade do software e adere a DFSG.

- Conteúdos estranhos auto-gerados na fonte do autor.

  - Pacotes Debian devem recompilar estes sob o sistema mais recente.

- Conteúdo VCS estranho na fonte do autor.

  - As opções -i e -I definidas em “Secção 4.6, “Configuração do devscripts”” para o comando dpkg-source(1) devem evitar isto.

    - A opção -i destina-se a pacotes Debian não nativos.
    - A opção -I destina-se a pacotes Debian nativos.

Existem vários métodos de evitar a inclusão de conteúdos indesejáveis.

## 8.1. Corrige com Files-Excluded

Este método é apropriado para evitar conteúdos não compatíveis com https://www.debian.org/social_contract.html#guidelines[DFSG] no tarball fonte do autor.

- Lista os ficheiros a serem removidos na estrofe Files-Excluded do ficheiro debian/copyright.
- Lista o URL para descarregar o tarball do autor no ficheiro debian/watch.

- Corre o comando uscan para descarregar o novo tarball de autor.

  - Em alternativa, use o comando “gbp import-orig --uscan --pristine-tar”.
- mk-origtargz invocado de uscan remove ficheiros excluídos do tarball do autor e re-empacota-o como um tarball limpo.
- O tarball resultante tem o número de versão com um sufixo adicional +dfsg.

Veja “EXEMPLOS DE FICHEIROS COPYRIGHT” em mk-origtargz(1).

## 8.2. Corrigir com “debian/rules clean”

Este método é apropriado para evitar ficheiros auto-gerados ao remove-los no alvo "debian/rules clean".

| Nota
O alvo "debian/rules clean" é chamado antes do comando "dpkg-source --build" pelo comando dpkg-buildpackage. O comando "dpkg-source --build" ignora os ficheiros removidos.

## 8.3. Corrigir com extend-diff-ignore

Isto é para o pacote não-nativo Debian.

O problema dos diffs estranhos pode ser resolvido ao ignorar as alterações feitas a partes específicas da árvore fonte. Isto é feito ao adicionar a linha "extend-diff-ignore=…" no ficheiro debian/source/options.

debian/source/options para excluir os ficheiros config.sub, config.guess e Makefile:

    # Don't store changes on autogenerated files
    extend-diff-ignore = "(^|/)(config\.sub|config\.guess|Makefile)$"

| Nota
Esta abordagem funciona sempre, mesmo quando você não consegue remover o ficheiro. Isto poupa-o de ter de fazer uma salvaguarda do ficheiro não-modificado apenas para o restaurar antes da próxima compilação.

| Dica
Se você usar o ficheiro debian/source/ local-options, você pode esconder esta definição do pacote fonte gerado. Isto pode ser útil quando ficheiros VCS locais não-standard interferem com o seu empacotamento.

## 8.4. Corrigir com tar-ignore

Isto é para o pacote nativo Debian.

Você pode excluir certos ficheiros na árvore fonte do tarball gerado ao ajustar o globo de ficheiros. Adicione as linhas "tar-ignore=…" nos ficheiros debian/source/options ou debian/source/local-options.

| Nota

Por exemplo, se o pacote fonte de um pacote nativo precisar de ficheiros com a extensão .o como uma parte dos dados de teste, a definição em “Secção 4.6, “Configuração do devscripts”” pode ser demasiado agressiva. Você pode contornar isto ao largar a opção -I para DEBUILD_DPKG_BUILDPACKAGE_OPTS em “Secção 4.6, “Configuração do devscripts”” e adicionar as linhas "tar-ignore=…" no ficheiro debian/source/local-options para cada pacote.

## 8.5. Corrigir com “git clean -dfx”

O problema do conteúdo estranho na segunda compilação pode ser evitado ao restaurar a árvore fonte. Isto é feito ao cometer a árvore fonte para o repositório Git antes da primeira compilação.

Você pode restaurar a árvore fonte antes da segunda compilação de pacote. Por exemplo:

    [debhello] $ git reset --hard
    [debhello] $ git clean -dfx

Isto funciona porque o comando dpkg-source ignora os conteúdos dos ficheiros VCS típicos na árvore fonte, como especificado pela definição DEBUILD_DPKG_BUILDPACKAGE_OPTS em “Secção 4.6, “Configuração do devscripts””.

| Dica
Se a árvore fonte não for gerida por um VCS, corra "git init; git add -A .; git commit" antes da primeira compilação.

Capítulo 7. Qualidade de empacotamento |  | Capítulo 9. Mais sobre empacotamento