Meson package guidelines (Português)

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Status de tradução: Esse artigo é uma tradução de Meson package guidelines. Data da última tradução: 2020-09-03. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.
Diretrizes de pacotes do Arch

32-bitCLRCMakeCrossDKMSEclipseElectronFonteFree PascalGNOMEGoHaskellJavaKDEKernelLispMesonMinGWNode.jsNonfreeOCamlPerlPHPPythonRRubyRustVCSWebWine

Do site oficial do Meson:

O Meson é um sistema de compilação, de código aberto, destinado a ser extremamente rápido e, ainda mais importante, o mais amigável possível.

Escrito em Python, o Meson oferece suporte a várias plataformas, suporta várias linguagens de programação, compilação cruzada e muito mais.

Meson não compila softwares diretamente, mas configura um sistema de compilação de back-end. Embora seja comumente usado com o ninja, outros sistemas de compilação podem ser usados. É comumente usado para substituir Sistema de Compilação do GNU.

Este documento cobre padrões e diretrizes para escrever PKGBUILDs para softwares eu usam Meson.

Uso

Requisitos

meson deve ser incluído ao vetor makedepends do PKGBUILD.

build()

A configuração e compilação é normalmente feita usando o binário meson, mas também pode ser feita usando o script wrapper arch-meson do Arch Linux.

Os comandos meson e arch-meson incluem na sintaxe de uso, nesta ordem, opções, diretório de fontes e diretório de compilação:

  • opções: deve incluir pelo menos --prefix /usr, mas certifique-se de verificar outras opções com meson configure --help; também verifique opções de compilação específicas do software.
  • diretório de fontes: onde o código-fonte do projeto está armazenado como, por exemplo, em $pkgname ou $pkgname-$pkgver.
  • diretório de compilação: onde os arquivos de compilação serão armazenados pelo Meson; comumente chamado de build ou _build, mas é discricionário.

Usando o binário meson diretamente

Observe que --prefix=/usr sempre precisa ser passado para o binário meson porque os pacotes do Arch Linux não devem instalar arquivos em /usr/local, de acordo com Diretrizes de pacotes do Arch#Etiqueta de pacotes. A opção embutida --buildtype=plain pode ser definida com outro valor, se você sabe o que está fazendo.

Exemplo:

build() {
  meson --prefix=/usr --buildtype=plain source build
  meson compile -C build
}

meson compile é um wrapper para os sistemas de compilação de back-end suportados, o que geralmente tem como padrão o ninja[1]

Dica: ninja -C build poderia ser usado no lugar do comando acima.

Usando o script wrapper arch-meson

arch-meson é um script wrapper incluído no pacote meson que fornece a vantagem de definir algumas as opções embutidas do Meson que provavelmente seriam usadas em um pacote do Arch, economizando em código no PKGBUILD e tempo de empacotamento. Parafraseando a descrição escrita no arch-meson, ele é um "Wrapper altamente opinativo para empacotamento do Arch Linux" (traduzido).

Exemplo:

build() {
  arch-meson source build
  meson compile -C build
}

Definindo opções de compilação específicas do software

Enquanto o Meson tem algumas opções de compilação embutidas (por exemplo, --prefix), o software sendo empacotado pode ter outras opções de compilação que o empacotador deve considerar. As opções de compilação válidas para o software são normalmente encontradas em um arquivo chamado meson_options.txt (se houver) e no meson.build. Procure por option(configurações) nestes arquivos, e leia as configurações.

Para usar uma opção de compilação específica do software, use a notação -D chave=valor, sendo chave o nome da opção de compilação definida no projeto e valor um valor válido, como, por exemplo, true.

Por exemplo, o gtranslator tem as seguintes opções de compilação:

meson_options.txt
option('gtk_doc', type: 'boolean', value: false, description: 'use gtk-doc to build documentation')

Então, para compilar sua documentação, deve-se executar o Meson anexando a opção de compilação -D gtk_doc=true, resultando em uma linha de comando como, por exemplo:

arch-meson $pkgname-$pkgver build -Dgtk_doc=true

check()

Se o software que está sendo empacotado possui conjunto de testes, considere executá-lo na função check() do PKGBUILD. Isso pode ser realizado com o comando meson test.

Exemplo:

check() {
  meson test -C build
}

sendo build o mesmo nome de diretório de compilação usado na etapa #build() acima.

Dica: ninja test -C build poderia ser usado diretamente.

Consulte meson test --help e "Unit tests" na documentação do Meson para mais informações.

package()

O empacotamento normalmente requer a execução apenas de meson install, mas verifique se é necessário outro comando de instalação (por exemplo, uma licença incomum). Use o mesmo diretório de compilação acima e configure a variável de ambiente DESTDIR:

package() {
  DESTDIR="$pkgdir" meson install -C build
}
Dica: ninja install -C build poderia ser usado diretamente.

Modelo

Para resumir as instruções acima e fornecer um único ponto de "copiar e colar", consulte o modelo abaixo:

makedepends=(meson)

build() {
  arch-meson $pkgname-$pkgver build
  meson compile -C build
}

check() {
  meson test -C build
}

package() {
  DESTDIR="$pkgdir" meson install -C build
}

Exemplos de pacotes

Esta é uma pequena lista de pacotes que usam o Meson. Veja outros pacotes na lista "Required by" no meson.

Veja também