Difference between revisions of "Haskell package guidelines (Italiano)"

From ArchWiki
Jump to: navigation, search
m (Pacchetti Haskell)
(Linee guida)
Line 45: Line 45:
 
* Installandolo direttamente da hackage usando "cabal install cabal2arch".
 
* Installandolo direttamente da hackage usando "cabal install cabal2arch".
  
====cabal2arch: un esempio====
+
===cabal2arch: un esempio===
 
Questo esempio spiega come creare un nuovo pacchetto usando cabal2arch. Nello specifico, si creerà un pacchetto per la libreria CC-delcont:
 
Questo esempio spiega come creare un nuovo pacchetto usando cabal2arch. Nello specifico, si creerà un pacchetto per la libreria CC-delcont:
  
Line 135: Line 135:
 
Tutte le librerie Haskel dovrebbero segure queste convenzioni, e l'uso dell'ultima versione di cabal2arch, assicura che vengano rispettate.
 
Tutte le librerie Haskel dovrebbero segure queste convenzioni, e l'uso dell'ultima versione di cabal2arch, assicura che vengano rispettate.
  
====Linee guida per librerie====
+
===Linee guida per librerie===
 
Solitamente, ad ogni file .cabal dovrebbe corrispondere un PKGBUILD. Rimangono le seguenti convenzioni:
 
Solitamente, ad ogni file .cabal dovrebbe corrispondere un PKGBUILD. Rimangono le seguenti convenzioni:
  

Revision as of 12:48, 3 April 2011


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 – فارسی

Haskell in Arch Linux

Haskell è ben supportato su Arch Linux, poichè GHC ed altri tools fondamentali sono disponibili via pacman; inoltre, un numero sempre maggiore di pacchetti vengono creati dal gruppo ArchHaskell, così come un'ampia parte del database di librerie di hackage.haskell.org è disponibile su AUR.

Come avrete notato, la community che si occupa di Haskel su Arch Linux è attiva e ben organizzata, ma il vostro aiuto è sempre ben accetto.

Community

È possibile consultare ArchHaskell per ulteriori informazioni sul gruppo.

Pacchetti Haskell

I tools fondamentali per Haskell, sono disponibili nel repository [extra]:

[Extra]

Il repository [extra] conterrà la piattaforma Haskell e le applicazioni più popolari.

[Haskell]

I pacchetti mantenuti dal gruppo ArchHaskell, possono essere scaricati aggiungendo la seguente voce a pacman.conf:

[haskell]
Server = http://andromeda.kiwilight.com/$repo/$arch

AUR

AUR contiene un grande numero di pacchetti (quasi 2000) compilati da hackage.haskell.org

È preferibile installarli direttamente da AUR, invece che da Hackage, poichè vengono installate automaticamente tutte le librerie necessarie. Ad esempio:

yaourt -S haskell-csv

Tutto ciò che non è possibile trovare su AUR, può essere installato tramite Template:Package AUR, prelevando il pacchetto direttamente da Hackage.

Linee guida

Nella quasi totalità dei casi, è possibile convertire i pacchetti "cabalizzati" nel formato pacchetti usato da Arch, attraverso Template:Package AUR. È caldamente raccomandato usare sempre l'ultima versione disponibile di questo software, poichè rispetta le politiche di impacchettamento dei pacchetti Haskell. È possibile ottenere questo tool in diversi modi:

  • Attraverso il repository [haskell]
  • Scaricando e compilando i sorgenti da aur manualmente oppure usando uno degli AUR Helpers
  • Installandolo direttamente da hackage usando "cabal install cabal2arch".

cabal2arch: un esempio

Questo esempio spiega come creare un nuovo pacchetto usando cabal2arch. Nello specifico, si creerà un pacchetto per la libreria CC-delcont:

Innanzitutto, impostare il nome e l'indirizzo email da usare nel PKGBUILD che verrà generato:

export ARCH_HASKELL='My Name <my.name@domain.org>'

Poi, cercare la pagina di Hackage relativa a CC-delcont ed identificare il link al file .cabal. Si passi il suddetto come argomento a cabal2arch:

% cd /tmp
% cabal2arch http://hackage.haskell.org/packages/archive/pandoc/1.6.0.1/pandoc.cabal
Using /tmp/tmp.x9SEhTJ8N9/pandoc.cabal
Feeding the PKGBUILD to `makepkg -g`...
==> Retrieving Sources...
  -> Downloading pandoc-1.6.0.1.tar.gz...
--2011-01-30 22:12:18--  http://hackage.haskell.org/packages/archive/pandoc/1.6.0.1/pandoc-1.6.0.1.tar.gz
Resolving hackage.haskell.org... 69.30.63.204
Connecting to hackage.haskell.org|69.30.63.204|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 355477 (347K) [application/x-tar]
Saving to: `pandoc-1.6.0.1.tar.gz.part'

     0K .......... .......... .......... .......... .......... 14% 20.3K 15s
    50K .......... .......... .......... .......... .......... 28% 40.3K 9s
   100K .......... .......... .......... .......... .......... 43% 53.0K 6s
   150K .......... .......... .......... .......... .......... 57% 58.2K 4s
   200K .......... .......... .......... .......... .......... 72% 57.7K 2s
   250K .......... .......... .......... .......... .......... 86% 67.1K 1s
   300K .......... .......... .......... .......... .......   100% 76.4K=7.7s

2011-01-30 22:12:27 (44.9 KB/s) - `pandoc-1.6.0.1.tar.gz.part' saved [355477/355477]

==> Generating checksums for source files...

Si controlli cosa è stato generato:

% ls
haskell-cc-delcont

È ora possibile esaminare il PKGBUILD e lo script .install relativo alla libreria:


# Maintainer: My Name <my.name@domain.org>
_hkgname=pandoc
pkgname=haskell-pandoc
pkgver=1.6.0.1
pkgrel=1
pkgdesc="Conversion between markup formats"
url="http://hackage.haskell.org/package/${_hkgname}"
license=('GPL')
arch=('i686' 'x86_64')
makedepends=()
depends=('ghc' 'haskell-http=4000.0.9' 'haskell-bytestring=0.9.1.7' 'haskell-containers=0.3.0.0' 'haskell-directory=1.0.1.1' 'haskell-extensible-exceptions=0.1.1.1' 'haskell-filepath=1.1.0.4' 'haskell-mtl>=1.1' 'haskell-network=2.2.1.7' 'haskell-old-time=1.0.0.5' 'haskell-parsec=2.1.0.1' 'haskell-pretty=1.0.1.1' 'haskell-process=1.0.1.3' 'haskell-random=1.0.0.2' 'haskell-syb=0.1.0.2' 'haskell-texmath<0.5' 'haskell-utf8-string>=0.3' 'haskell-xhtml=3000.2.0.1' 'haskell-xml<1.4' 'haskell-zip-archive<0.2')
options=('strip')
source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz)
install=${pkgname}.install
md5sums=('d19a630462595941b3100dff6f839aa3')
build() {
    cd ${srcdir}/${_hkgname}-${pkgver}
    runhaskell Setup configure -O --enable-split-objs --enable-shared \
       --prefix=/usr --docdir=/usr/share/doc/${pkgname} --libsubdir=\$compiler/site-local/\$pkgid
    runhaskell Setup build
    runhaskell Setup haddock
    runhaskell Setup register   --gen-script
    runhaskell Setup unregister --gen-script
    sed -i -r -e "s|ghc-pkg.*unregister[^ ]* |&'--force' |" unregister.sh
}
package() {
    cd ${srcdir}/${_hkgname}-${pkgver}
    install -D -m744 register.sh   ${pkgdir}/usr/share/haskell/${pkgname}/register.sh
    install    -m744 unregister.sh ${pkgdir}/usr/share/haskell/${pkgname}/unregister.sh
    install -d -m755 ${pkgdir}/usr/share/doc/ghc/html/libraries
    ln -s /usr/share/doc/${pkgname}/html ${pkgdir}/usr/share/doc/ghc/html/libraries/${_hkgname}
    runhaskell Setup copy --destdir=${pkgdir}
}

Si noti come vengono rispettate le convenzioni per i pacchetti Haskell:

  • Le librerie hanno il prefisso "haskell-"
  • Tutte le librerie da cui il pacchetto dipende sono inserite in depends=() (quelle incluse nel pacchetto ghc sono, per ovvi motivi, omesse, essendo fornite da quest'ultimo)
  • Utilizza cabal per generare uno script di installazione per la registrazione/deregistrazione, con un nome standard
  • Si usa haddock per generare la documentazione.

Tutte le librerie Haskel dovrebbero segure queste convenzioni, e l'uso dell'ultima versione di cabal2arch, assicura che vengano rispettate.

Linee guida per librerie

Solitamente, ad ogni file .cabal dovrebbe corrispondere un PKGBUILD. Rimangono le seguenti convenzioni:

  • Le librerie devono avere il prefisso "haskell-"
  • Tutte le librerie devono dipendere da 'ghc'
  • Tutte le dipendenze devono essere incluse nell'array depends=() del PKGBUILD
  • Si faccia attenzione alle librerie che dipendono da gtk2hs: cairo, svg, glib, gtk sono fornite dal pacchetto gtk2hs, non ad esempio da "haskell-cairo"

La registrazione delle librerie Haskell viene effettuata tramite l'hook register. A tal proposito, si veda sopra.