OCaml package guidelines (Português)

Escrita de PKGBUILDs para softwares escritos em OCaml.

Status de tradução: Esse artigo é uma tradução de OCaml package guidelines. Data da última tradução: 2020-02-23. 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.jsNonfreeOCamlPerlPHPPythonRRubyRustShellVCSWebWine

Nomenclatura de pacote

Para bibliotecas, use ocaml-nomemodulo. Para aplicativos, use o nome do programa. Em ambos casos, o nome deve ser totalmente minúsculo.

Colocação de arquivos

Bibliotecas

As bibliotecas OCaml devem ser instaladas sob /usr/lib/ocaml. A instalação em /usr/lib/ocaml/site-lib está obsoleto.

As bibliotecas OCaml devem ser instaladas usando ocaml-findlib. ocaml-findlib inclui metadados de biblioteca no pacote que facilita a gerência fr bibliotecas. Esse é um padrão de fato e muitos softwares OCaml agora precisam dele.

ocaml-findlib extrai dados necessários de um arquivo chamado META que deve ser incluído no arquivo de origem. Se este arquivo não estiver incluído, um deve ser obtido do pacote Debian, Ubuntu ou Fedora correspondente, ou criado para o pacote pelo mantenedor. Uma solicitação para incluir o arquivo também deve ser feita para os desenvolvedores upstream do pacote.

A variável OCAMLFIND_DESTDIR deve ser usada ao instalar pacotes com ocaml-findlib. Veja o exemplo de PKGBUILD abaixo para detalhes.

OASIS

Os pacotes OCaml que instalam executáveis usando OASIS ignoram DESTDIR. Essa é uma limitação conhecida do OASIS (issue #493). Uma forma de habilitar funcionalidade do DESTDIR é executar o script configure com o argumento , dessa forma:

Níveis e bytecode OCaml

O OCaml pode executar código em múltiplos "níveis", o nível superior interpreta o Código OCaml sem compilar, o nível de bytecode cria bytecode independente de máquina e o nível nativo cria binários de código de máquina (assim como C/C++).

Ao compilar Pacotes OCaml, você precisa estar ciente de que o processo de compilação está compilando código de máquina nativo, bytecode ou, como em muitos casos, ambos. Isso cria várias situações que podem causar problemas com as opções de pacote e as dependências corretas.

Se o bytecode for produzido, o PKGBUILD deverá conter o seguinte para proteger o bytecode:

options=('!strip')

Se o pacote não contiver bytecode e apenas distribuir um binário, então não é necessário como uma dependência, mas é claro que é necessário como um makedepends desde que o pacote fornece o OCaml compilador. Se o pacote contiver código nativo e bytecode, deve ser uma dependência e um makedepends.

O código OCaml é raramente (ou nunca) distribuído apenas como bytecode e quase sempre incluirá código nativo: o único caso em que usar any como o arch é aconselhável é quando apenas código-fonte não compilado é distribuído, geralmente com uma biblioteca, embora muitas bibliotecas ainda distribuam código nativo.

A moral da história aqui é estar ciente do que você está distribuindo, as chances são de que o seu pacote contenha código nativo de máquina e bytecode.

Exemplo de PKGBUILD usando Dune

Dune é um novo sistema de compilação que está se tornando cada vez mais usado por projetos de OCaml.

Uma coisa a estar ciente é que um único projeto pode criar vários "pacotes" no sentido do OPAM/findlib, cada um com seu próprio diretório em /usr/lib/ocaml/. Veja ocaml-cairo para um exemplo. Para compilações de versão, todos os "pacotes" precisam ser listados explicitamente.

Exemplo de PKGBUILD usando findlib simples

Tenha em mente que muitos pacotes OCaml frequentemente precisarão de parâmetros extras para o e . Lembre-se também de remover a opção e alterar a arquitetura se o pacote não produzir bytecode.

gollark: This will simplify your job.
gollark: You should offload all complex design decisions to me.
gollark: It's important to put all relevant information in a reminder to avoid inefficient old message lookups.
gollark: It's also a year before the regular GPS navigation messages' week numbers roll over.
gollark: Well, it's about 100 years before the GPS CNAV week number rollover.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.