# Meson package guidelines (Português)

From ArchWiki
Jump to navigation Jump to search
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.

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.

- gstreamer
- gnome-desktop
- switchboard
- cinnamon-desktop
- networkmanager
- xorg-server

## Veja também

- Site oficial do Meson
- Lista de opções embutidas do Meson
- Repositório de código-fonte do Meson no GitHub
- Artigo do Meson no Wikipedia
- meson(1)

Category:

- Arch package guidelines (Português)