Chapter 15. debmake options

Table of Contents

15.1. Shortcut options (-a, -i)
15.2. debmake -b
15.3. debmake -cc
15.4. Snapshot upstream tarball (-d, -t)
15.5. debmake -j
15.6. debmake -k
15.7. debmake -P
15.8. debmake -T
15.9. debmake -x

Here are some additional explantion for debmake options.

O comando debmake oferece 2 opções de atalho.

  • -a : abre o tarball do autor
  • -i : executa script para compilar o pacote binário

O exemplo em cima Chapter 5, Simple packaging” pode ser feito simplesmente como se segue.

 $ debmake -a package-1.0.tar.gz -i debuild
[Tip]Tip

A URL such as https://www.example.org/DL/package-1.0.tar.gz may be used for the -a option.

[Tip]Tip

A URL such as https://arm.koji.fedoraproject.org/packages/ibus/1.5.7/3.fc21/src/ibus-1.5.7-3.fc21.src.rpm may be used for the -a option, too.

O comando debmake com a opção -b fornece um método intuitivo e flexível de criar o ficheiro modelo inicial debian/control definindo a divisão dos pacotes binário Debian com as seguintes estrofes:

O comando debmake também define um conjunto apropriado de substvars usado em cada estrofe de dependência pertinente.

Vamos citar a parte pertinente do manual do debmake aqui.

-b "binarypackage[:type],…​", --binaryspec "binarypackage[:type],…​"

set the binary package specs by a comma separated list of binarypackage:type pairs. Here, binarypackage is the binary package name, and the optional type is chosen from the following type values:

  • bin: C/C++ compiled ELF binary code package (any, foreign) (default, alias: "", i.e., null-string)
  • data: Data (fonts, graphics, …​) package (all, foreign) (alias: da)
  • dev: Pacote de desenvolvimento de biblioteca (any, same) (nome alternativo: de)
  • doc: Pacote de documentação (all, foreign) (nome alternativo: do)
  • lib: Pacote biblioteca (any, same) (nome alternativo: l)
  • perl: Pacote script Perl (all, foreign) (nome alternativo: pl)
  • python3: Python (version 3) script package (all, foreign) (alias: py3, python, py)
  • ruby: Pacote script Ruby (all, foreign) (nome alternativo: rb)
  • nodejs: Pacote JavaScript baseado em Node.js (all, foreign) (nome alternativo: js)
  • script: Shell and other interpretted language script package (all, foreign) (alias: sh)

The pair values in the parentheses, such as (any, foreign), are the Architecture and Multi-Arch stanza values set in the debian/control file. In many cases, the debmake command makes good guesses for type from binarypackage. If type is not obvious, type is set to bin.

Here are examples for typical binary package split scenarios where the upstream Debian source package name is foo:

  • Generating an executable binary package foo:

    • -b’foo:bin', or its short form `-b'-'`", or no -b option
  • Generating an executable (python3) binary package python3-foo:

    • -b’python3-foo:py', or its short form -b’python3-foo'
  • Generating a data package foo:

    • -b’foo:data', or its short form -b'-:data'
  • Generating a executable binary package foo and a documentation one foo-doc:

    • -b’foo:bin,foo-doc:doc', or its short form -b'-:-doc'
  • Generating a executable binary package foo, a library package libfoo1, and a library development package libfoo-dev:

    • -b’foo:bin,libfoo1:lib,libfoo-dev:dev' or its short form -b'-,libfoo1,libfoo-dev'

Se o conteúdo da árvore fonte não corresponder à definição para tipo, o comando debmake avisa-o.

O comando debmake com a opção -cc pode fazer um resumo do copyright e licença para a árvore fonte inteira para a saída standard.

 $ tar -xvzf package-1.0.tar.gz
 $ cd package-1.0
 $ debmake -cc | less

Com a opção -c, isto fornece um relatório curto.

Este esquema de compilação de teste é bom para o repositório git organizado como descrito em gbp-buildpackage(7) o qual usa os ramos master, upstream, e pristine-tar.

The upstream snapshot from the upstream source tree in the upstream VCS can be made with the -d option if the upstream supports the make dist equivalence.

 $ cd /path/to/upstream-vcs
 $ debmake -d -i debuild

Em alternativa, o mesmo pode ser feito coma opção -t se o tarball do autor puder ser feito com o comando tar.

 $ cd /path/to/upstream-vcs
 $ debmake -p package -t -i debuild

Unless you provide the upstream version with the -u option or with the debian/changelog file, a snapshot upstream version is generated in the 0~%y%m%d%H%M format, e.g., 0~1403012359, from the UTC date and time.

If the upstream VCS is hosted in the package/ directory instead of the upstream-vcs/ directory, the -p package can be skipped.

Se a árvore fonte do autor no VCS conter os ficheiros debian/*, o comando debmake seja com a opção -d ou a opção -t combinada com a opção -i automatiza a criação de pacote Debian não-nativo a partir do instantâneo do VCS enquanto usa estes ficheiros debian/*.

 $ cp -r /path/to/package-0~1403012359/debian/. /path/to/upstream-vcs/debian
 $ dch
   ... update debian/changelog
 $ git add -A .; git commit -m "vcs with debian/*"
 $ debmake -t -p package -i debuild

This non-native Debian binary package building scheme without the real upstream tarball is considered as the quasi-native Debian package. See Section 10.13, “Quasi-native Debian packaging””.

This is an experimental feature.

A geração de um pacote multi-binário funcional requer sempre mais trabalho manual que aquele que dá um pacote binário singular funcional. A compilação de teste da árvore fonte é a parte essencial disso.

Por exemplo, vamos empacotar o mesmo package-1.0.tar.gz (veja Chapter 5, Simple packaging”) num pacote multi binário.

  • Invoque o comando debmake com a opção -j para a compilação de teste e a geração do relatório.

     $ debmake -j -a package-1.0.tar.gz
  • Verifique as últimas linhas do ficheiro pacote.build-dep.log para julgar as dependências de compilação para Build-Depends. (Você não precisa de listar os pacotes usados pelo debhelper, perl, ou fakeroot explicitamente em Build-Depends. Esta técnica também é útil para a geração de um pacote binário singular.
  • Verifique o conteúdo do ficheiro package.install.log para identificar os caminhos de instalação para ficheiros para decidir como os dividir em múltiplos pacotes.
  • Inicie o empacotamento com o comando debmake.

     $ rm -rf package-1.0
     $ tar -xvzf package-1.0.tar.gz
     $ cd package-1.0
     $ debmake -b"package1:type1, ..."
  • Atualize os ficheiro debian/control e debian/pacote-binário.install usando a informação de cima.
  • Atualize os outros ficheiros debian/* como necessário.
  • Compile o pacote Debian com o comando debuild ou seu equivalente.

     $ debuild
  • Todas as entradas de pacote binário especificadas no ficheiro debian/pacote-binário.install são geradas como pacote-binário_versão-revisão_arch.deb.
[Note]Note

The -j option for the debmake command invokes dpkg-depcheck(1) to run debian/rules under strace(1) to obtain library dependencies. Unfortunately, this is very slow. If you know the library package dependencies from other sources such as the SPEC file in the source, you may just run the "debmake …​" command without the -j option and run the debian/rules install command to check the install paths of the generated files.

This is an experimental feature.

Quando se actualiza um pacote para o novo lançamento do autor, o comando debmake pode verificar o conteúdo do ficheiro debian/copyright existente contra a situação de copyright e licença da inteira árvore fonte actualizada.

 $ cd package-vcs
 $ gbp import-orig --uscan --pristine-tar
 ... update source with the new upstream release
 $ debmake -k | less

The debmake -k command parses the debian/copyright file from the top to the bottom and compares the license of all the non-binary files in the current package with the license described in the last matching file pattern entry of the debian/copyright file.

Quando editar o ficheiro debian/copyright auto gerado, por favor certifique-se de manter os padrões de ficheiro genérico no topo da lista.

[Tip]Tip

For all new upstream releases, run the debmake -k command to ensure that the debian/copyright file is current.

O comando debmake invocado com a opção -P verifica pedantemente ficheiros auto-gerados para texto copyright+licença mesmo que eles estejam com licença permissiva.

Esta opção não afecta apenas o conteúdo do ficheiro debian/copyright gerado por execução normal, mas também os resultados pela execução com as opções -k, -c, -cc, e -ccc.

O comando debmake invocado com a opção -T escreve adicionalmente linhas de comentários tutoriais detalhados. As linhas marcadas com ### nos ficheiros modelo fazem parte das linhas de comentários tutoriais detalhados.

A quantidade de ficheiros modelo gerados pelo comando debmake depende da opção -x[01234].

[Note]Note

Nenhum dos ficheiros de configuração existentes são modificados pelo comando debmake.