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

From ArchWiki
Jump to: navigation, search
m
m
(21 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[Category:Guidelines (Italiano)]]
 
 
[[Category:Package development (Italiano)]]
 
[[Category:Package development (Italiano)]]
 +
[[en:Haskell Package Guidelines]]
 +
{{Package Guidelines (Italiano)}}
  
{{i18n|Haskell package guidelines}}
+
{{Out of date}}
  
'''Haskell in Arch Linux'''
+
Haskell è ben supportato su Arch Linux, poichè GHC ed altri tools fondamentali sono disponibili nei [[Official Repositories (Italiano)|repository ufficiali]]. Per chi usa Haskell in modo più pesante, la community di [[ArchHaskell]] fornisce molti pacchetti provenienti da [http://hackage.haskell.org/ Hackage], in numero sempre crescente.
  
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 [http://hackage.haskell.org hackage.haskell.org] è [http://aur.archlinux.org/packages.php?O=0&L=0&C=0&K=arch-haskell&SeB=m&SB=n&SO=a&PP=100&do_Search=Go disponibile su AUR].
+
Si faccia riferimento alla pagina wiki di [[ArchHaskell]] per eventuali contatti e per scoprire come si può essere d'aiuto.
  
Come avrete notato, la community che si occupa di Haskell su Arch Linux è attiva e ben organizzata, ma il vostro aiuto è sempre ben accetto.
+
==Pacchetti Haskell==
  
==Community==
+
Per utilizzare Haskell su Arch Linux, si dispone di due opzioni mutualmente esclusive:
È possibile consultare [[ArchHaskell]] per ulteriori informazioni sul gruppo.
+
  
==Pacchetti Haskell==
+
# Utilizzare i pacchetti dei repository ufficiali di Arch Linux, che però sono solamente una piccola parte di tutti i pacchetti Haskell disponibili, anche se ben mantenuti. Li si installi come si farebbe con qualsiasi altro pacchetto. Esempi sui pacchetti disponibili nei repository [https://www.archlinux.org/packages/?arch=x86_64&repo=Extra&q=haskell&last_update=&limit=50 extra] e [https://www.archlinux.org/packages/?arch=x86_64&repo=Community&q=haskell&last_update=&limit=50 community], che dovrebbero soddisfare chi vuole semplicemente utilizzare la piattaforma Haskell. È inoltre possibile integrare questi pacchetti con quelli non ufficiali presenti su AUR.
I tools fondamentali per Haskell, sono disponibili nel repository [extra]:
+
# Utilizzare i repository non ufficiali del progetto ArchHaskell, che offrono una maggiore varietà di pacchetti  tra quelli disponibili su Hackage. Dal momento che questo progetto è mantenuto dalla comunità, abbiamo spesso bisogno di volontari che ci aiutino a mantenere ed aggiungere altri pacchetti a questi repository. Si continui la lettura per ulteriori informazioni sul loro utilizzo.
  
====<nowiki>[Extra]</nowiki>====
+
===[haskell]===
* [http://www.archlinux.org/packages/?arch=x86_64&repo=Extra&q=haskell&last_update=&limit=50 Elenco pacchetti Haskell contenuti in <nowiki>[extra]</nowiki>]
+
  
Il repository <nowiki>[extra]</nowiki> conterrà la piattaforma Haskell e le applicazioni più popolari.
+
Il repository [haskell] costituisce il contenitore principale dei pacchetti mantenuti dal team di ArchHaskell ed è possibile utilizzarlo aggiungendo la seguente riga a {{ic|/etc/pacman.conf}} (sopra [extra]):
 
+
====<nowiki>[Haskell]</nowiki>====
+
I pacchetti mantenuti dal gruppo ArchHaskell, possono essere scaricati aggiungendo la seguente voce a pacman.conf:
+
  
 
  [haskell]
 
  [haskell]
  Server = http://andromeda.kiwilight.com/$repo/$arch
+
  Server = http://xsounds.org/~haskell/$arch
  
====AUR====
+
Questo gruppo di pacchetti deriva dal tree di '''habs''', accessibile [https://github.com/archhaskell/habs qui]. Viene utilizzato un tool chiamato [https://github.com/magthe/cblrepo cblrepo] per sincronizzare il tree di '''habs''' con i pacchetti Haskell ufficiali provenienti da [http://hackage.haskell.org/packages/hackage.html Hackage]
* [http://aur.archlinux.org/packages.php?O=0&L=0&C=0&K=arch-haskell&SeB=m&SB=n&SO=a&PP=100&do_Search=Go Pacchetti Haskell in AUR]
+
  
AUR contiene un grande numero di pacchetti (quasi 2000) compilati da [http://hackage.haskell.org hackage.haskell.org]
+
Inserire [haskell] sopra [extra] consentirà ai pacchetti del repository [haskell] di avere la precedenza, in caso di duplicati.
  
È preferibile installarli direttamente da AUR, invece che da Hackage, poichè vengono installate automaticamente tutte le librerie necessarie. Ad esempio:
+
===[haskell-web]===
  
yaourt -S haskell-csv
+
Il repository [haskell-web] si basa su [haskell] e fornisce numerosi pacchetti aggiuntivi, adatti alle web applications.
  
Tutto ciò che non è possibile trovare su AUR, può essere installato tramite {{Package AUR|cabal-install}}, prelevando il pacchetto direttamente da Hackage.
+
[haskell-web]
 +
Server = http://archhaskell.mynerdside.com/$repo/$arch
  
==Linee guida==
+
Lo si aggiunga dopo [haskell].
Nella quasi totalità dei casi, è possibile convertire i pacchetti "cabalizzati" nel formato pacchetti usato da Arch, attraverso {{Package AUR|cabal2arch}}. È 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 <nowiki>[haskell]</nowiki>
+
===Ultima spiaggia===
* Scaricando e compilando i sorgenti da aur manualmente oppure usando uno degli [[AUR Helpers|AUR Helpers]]
+
* Installandolo direttamente da hackage usando "cabal install cabal2arch".
+
  
===cabal2arch: un esempio===
+
* [https://aur.archlinux.org/packages.php?O=0&K=haskell- pacchetti Haskell su AUR]
Questo esempio spiega come creare un nuovo pacchetto usando cabal2arch. Nello specifico, si creerà un pacchetto per la libreria CC-delcont:
+
* utilizzare {{ic|cabal-install}} direttamente
  
Innanzitutto, impostare il nome e l'indirizzo email da usare nel PKGBUILD che verrà generato:
+
Sfortunatamente, molti dei pacchetti presenti su AUR non sono aggiornati a causa della mancanza di manodopera. Se si ha del tempo libero, è consigliabile utilizzare {{ic|cblrepo}} per creare un repository sulla falsariga di [haskell-web], che potrà poi essere aggiunto alla collezione dei repository esistenti.
  
export ARCH_HASKELL='My Name <my.name@domain.org>'
+
==Migliorare ArchHaskell==
  
Poi, cercare la [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/CC-delcont pagina di Hackage relativa a CC-delcont] ed identificare il link al file .cabal. Si passi il suddetto come argomento a cabal2arch:
+
Si legga la pagina wiki di [[ArchHaskell]] e ci si metta in contatto con la community attraverso le mailing lists o il canale IRC. Stiamo lavorando alla documentazione e allo sviluppo di un workflow per consentire la creazione di repository stile [haskell-web] e mantenerli in modo distribuito, facendo sì che tutti i pacchetti in essi contenuti vengano esposti all'utenza attraverso un unico repository.
 
+
<pre>
+
% 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...
+
 
+
</pre>
+
 
+
Si controlli cosa è stato generato:
+
 
+
% ls
+
haskell-cc-delcont
+
 
+
È ora possibile esaminare il PKGBUILD e lo script .install relativo alla libreria:
+
 
+
<pre>
+
 
+
# 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}
+
}
+
 
+
</pre>
+
 
+
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.
+
 
+
===Linee guida per i programmi===
+
* Mantengono il nome originale
+
* Si faccia attenzione alle librerie C richieste come dipendenze a runtime. Ad esempio, tutti i binari prodotti con GHC, dipenderanno da 'gmp, così come quelli che usano OpenGL o sono basati sulla versione -git del pacchetto da compilare, avranno dipendenze addizionali. cabal2arch cercherà di risolvere questi problemi autonomamente, ma potrebbero esserci dipendenze addizionali che non vengono risolte, nel qual caso spetterà all'utente far fronte a questa evenienza.
+
* Utilizzare lo stripping degli eseguibili ({{Codeline |--enable-executable-stripping}}). cabal2arch effettua questa operazione automaticamente.
+
 
+
==Compilazione automatica dei pacchetti Hackage con cabal2arch usando Bauerbill==
+
 
+
{{Out of date}}
+
{{Attenzione|Lo sviluppo di ''Bauerbill'' è stato ufficialmente interrotto, e la sua ultima versione non funziona con versioni di Pacman superiori alla 3.5. Si veda [https://bbs.archlinux.org/viewtopic.php?id&#61;115660 qui] per ulteriori informazioni.}}
+
{{Nota|Essendo deprecato, il contenuto di questa sezione dell'articolo non verrà tradotto: si faccia quindi riferimento alla versione inglese.}}
+

Revision as of 18:47, 26 December 2012

Tango-view-refresh-red.pngThis article or section is out of date.Tango-view-refresh-red.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:Haskell package guidelines (Italiano)#)

Haskell è ben supportato su Arch Linux, poichè GHC ed altri tools fondamentali sono disponibili nei repository ufficiali. Per chi usa Haskell in modo più pesante, la community di ArchHaskell fornisce molti pacchetti provenienti da Hackage, in numero sempre crescente.

Si faccia riferimento alla pagina wiki di ArchHaskell per eventuali contatti e per scoprire come si può essere d'aiuto.

Pacchetti Haskell

Per utilizzare Haskell su Arch Linux, si dispone di due opzioni mutualmente esclusive:

  1. Utilizzare i pacchetti dei repository ufficiali di Arch Linux, che però sono solamente una piccola parte di tutti i pacchetti Haskell disponibili, anche se ben mantenuti. Li si installi come si farebbe con qualsiasi altro pacchetto. Esempi sui pacchetti disponibili nei repository extra e community, che dovrebbero soddisfare chi vuole semplicemente utilizzare la piattaforma Haskell. È inoltre possibile integrare questi pacchetti con quelli non ufficiali presenti su AUR.
  2. Utilizzare i repository non ufficiali del progetto ArchHaskell, che offrono una maggiore varietà di pacchetti tra quelli disponibili su Hackage. Dal momento che questo progetto è mantenuto dalla comunità, abbiamo spesso bisogno di volontari che ci aiutino a mantenere ed aggiungere altri pacchetti a questi repository. Si continui la lettura per ulteriori informazioni sul loro utilizzo.

[haskell]

Il repository [haskell] costituisce il contenitore principale dei pacchetti mantenuti dal team di ArchHaskell ed è possibile utilizzarlo aggiungendo la seguente riga a /etc/pacman.conf (sopra [extra]):

[haskell]
Server = http://xsounds.org/~haskell/$arch

Questo gruppo di pacchetti deriva dal tree di habs, accessibile qui. Viene utilizzato un tool chiamato cblrepo per sincronizzare il tree di habs con i pacchetti Haskell ufficiali provenienti da Hackage

Inserire [haskell] sopra [extra] consentirà ai pacchetti del repository [haskell] di avere la precedenza, in caso di duplicati.

[haskell-web]

Il repository [haskell-web] si basa su [haskell] e fornisce numerosi pacchetti aggiuntivi, adatti alle web applications.

[haskell-web]
Server = http://archhaskell.mynerdside.com/$repo/$arch

Lo si aggiunga dopo [haskell].

Ultima spiaggia

Sfortunatamente, molti dei pacchetti presenti su AUR non sono aggiornati a causa della mancanza di manodopera. Se si ha del tempo libero, è consigliabile utilizzare cblrepo per creare un repository sulla falsariga di [haskell-web], che potrà poi essere aggiunto alla collezione dei repository esistenti.

Migliorare ArchHaskell

Si legga la pagina wiki di ArchHaskell e ci si metta in contatto con la community attraverso le mailing lists o il canale IRC. Stiamo lavorando alla documentazione e allo sviluppo di un workflow per consentire la creazione di repository stile [haskell-web] e mantenerli in modo distribuito, facendo sì che tutti i pacchetti in essi contenuti vengano esposti all'utenza attraverso un unico repository.