OCaml package guidelines (Italiano)

From ArchWiki
Revision as of 14:26, 19 March 2011 by Kynikos (Talk | contribs) (translation completed, still needs verification)

Jump to: navigation, search

This template has only maintenance purposes. For linking to local translations please use interlanguage links, see Help:i18n#Interlanguage links.


Local languages: Català – Dansk – English – Español – Esperanto – Hrvatski – Indonesia – Italiano – Lietuviškai – Magyar – Nederlands – Norsk Bokmål – Polski – Português – Slovenský – Česky – Ελληνικά – Български – Русский – Српски – Українська – עברית – العربية – ไทย – 日本語 – 正體中文 – 简体中文 – 한국어


External languages (all articles in these languages should be moved to the external wiki): Deutsch – Français – Română – Suomi – Svenska – Tiếng Việt – Türkçe – فارسی

Tango-preferences-desktop-locale.pngThis article or section needs to be translated.Tango-preferences-desktop-locale.png

Notes: please use the first argument of the template to provide more detailed indications. (Discuss in Talk:OCaml package guidelines (Italiano)#)

Nominazione dei pacchetti

Per le librerie, si usi Template:Filename. Per le applicazioni, si usi il nome del programma. In entrambi i casi, il nome del pacchetto dev'essere interamente in caratteri minuscoli.

Ubicazione delle librerie OCaml

Le librerie OCaml devono essere installate sotto Template:Filename. Precedentemente, le librerie venivano installate sia sotto Template:Filename che sotto Template:Filename, a seconda del pacchetto. Questa confusione impediva ad alcuni pacchetti di funzionare con altri, ed inoltre frammentava lo sviluppo in OCaml su Arch Linux. Per questo l'uso di Template:Filename è stato interrotto.

Le librerie OCaml devono essere installate utilizzando Template:Package Official. Template:Codeline include dei metadata nel pacchetto che facilitano la gestione delle librerie. È uno standard de-facto ed un requisito di gran parte dell'attuale software in OCaml.

Template:Codeline estrae i dati necessari da un file chiamato Template:Filename che deve essere incluso nell'archivio dei sorgenti. Se questo file non è incluso, è possibile ottenerne uno dal corrispondente pacchetto per Debian, Ubuntu o Fedora, altrimenti deve esserne creato uno apposito dal maintainer del pacchetto. La richiesta di includere tale file potrebbe anche essere fatta direttamente agli sviluppatori originali del pacchetto.

Quando si installano pacchetti con Template:Codeline è necessario usare la variabile Template:Codeline. Vedere il PKGBUILD di esempio riportato sotto per i dettagli.

Bytecode e Livelli di OCaml

OCaml può eseguire il codice su vari "livelli": il livello principale ("top level") interpreta il codice OCaml senza compilarlo, il livello bytecode crea appunto un bytecode indipendente dalla macchina, e il livello nativo crea dei binari con codice macchina (proprio come C/C++).

Quando si compilano pacchetti OCaml è necessario sapere se il processo di build compila codice macchina nativo, bytecode, o, come in molti casi, entrambi. Questo genera svariate situazioni che possono creare problemi con le opzioni dei pacchetti e le corrette dipendenze.

Se viene creato del bytecode, il PKGBUILD deve contenere la seguente linea per proteggerlo:

options=('!strip')

Se il pacchetto non contiene bytecode ma distribuisce solamente un file binario, Template:Codeline non è richiesto come dipendenza, ma è invece ovviamente necessario come makedepends, dato che il pacchetto Template:Codeline fornisce il compilatore di OCaml. Se il pacchetto contiene sia codice nativo che bytecode, Template:Codeline deve essere sia una dipendenza che un makedepends.

Il codice OCaml è raramente (o addirittura mai) distribuito solamente come bytecode, e quasi sempre include del codice nativo: l'unico caso in cui è consigliabile usare any come arch è quando viene distribuito solamente codice sorgente non compilato, di solito con una libreria, benché molte librerie distribuiscano codice nativo.

In conclusione è bene essere sempre coscienti di ciò che si va a distribuire, le probabilità maggiori sono che il proprio pacchetto contenga sia codice macchina nativo che bytecode.

Esempio di PKGBUILD OCaml

# Contributor: Your Name <youremail@domain.com>

pkgname=ocaml-<package name>
pkgver=4.2
pkgrel=1
license=('')
arch=('i686' 'x86_64')
pkgdesc="An OCaml Package"
url=""
depends=('ocaml')
makedepends=('ocaml-findlib')
source=()
options=('!strip')
md5sums=()

OCAMLFIND_DESTDIR="${pkgdir}$(ocamlfind printconf destdir)"

build() {
  cd "${srcdir}/${pkgname}-${pkgver}"
  mkdir -p "$OCAMLFIND_DESTDIR"
  ./configure --prefix=/usr
  make
}

package() {
  cd "${srcdir}/${pkgname}-${pkgver}"
  env DESTDIR="${pkgdir}" \
    OCAMLFIND_DESTDIR="$OCAMLFIND_DESTDIR" \
    make install
}

Tenere a mente che molti pacchetti OCaml avranno spesso bisogno che siano passati ulteriori parametri a make e make install. Ricordarsi anche di rimuovere l'opzione "!strip" e cambiare l'architettura se il pacchetto non fornisce bytecode.