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

From ArchWiki
Jump to: navigation, search
m ([Haskell])
(simplification and beautification of wikilinks, fixing whitespace, capitalization and section fragments (https://github.com/lahwaacz/wiki-scripts/blob/master/link-checker.py (interactive)))
 
(6 intermediate revisions by 4 users not shown)
Line 1: Line 1:
 
[[Category:Package development (Italiano)]]
 
[[Category:Package development (Italiano)]]
[[en:Haskell Package Guidelines]]
+
[[en:Haskell package guidelines]]
 +
[[ja:Haskell パッケージガイドライン]]
 
{{Package Guidelines (Italiano)}}
 
{{Package Guidelines (Italiano)}}
  
Haskell è ben supportato su Arch Linux, poichè GHC ed altri tools fondamentali sono disponibili nei [[Official Repositories (Italiano)|repository ufficiali]]; 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] è [https://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].
+
{{Out of date}}
  
Come avrete notato, la community che si occupa di Haskell su Arch Linux è attiva e ben organizzata, ma il vostro aiuto è sempre ben accetto.
+
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.
  
==Community==
+
Si faccia riferimento alla pagina wiki di [[ArchHaskell]] per eventuali contatti e per scoprire come si può essere d'aiuto.
È possibile consultare [[ArchHaskell]] per ulteriori informazioni sul gruppo.
+
  
 
==Pacchetti Haskell==
 
==Pacchetti Haskell==
I tools fondamentali per Haskell, sono disponibili nel repository [extra]:
 
  
===[extra]===
+
Per utilizzare Haskell su Arch Linux, si dispone di due opzioni mutualmente esclusive:
* [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.
+
# 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.
 +
# 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>[community]</nowiki>===
+
===[haskell]===
* [http://www.archlinux.org/packages/?arch=x86_64&repo=Community&q=haskell&last_update=&limit=50 altri pacchetti Haskell]
+
  
Il repository [community] fornisce pacchetti aggiuntivi che non fanno parte della piattaforma Haskell, come [[xmonad|xmonad]].
+
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]):
 
+
===[Haskell]===
+
[haskell] è il repository ufficiale dell'ArchHaskell team. È l'ultimo luogo dove poter reperire pacchetti stabili, prima di utilizzare AUR o di compilare un pacchetto autonomamente con cabal2arch.
+
 
+
È possibile utilizzare il suddetto repostitory aggiungendo la seguente linea al proprio {{ic|/etc/pacman.conf}}:
+
  
 
  [haskell]
 
  [haskell]
 
  Server = http://xsounds.org/~haskell/$arch
 
  Server = http://xsounds.org/~haskell/$arch
  
I pacchetti contenuti nel repository [haskell], derivano dal tree dell'utente '''habs''', reperibile [https://github.com/archhaskell/habs qui]. È possibile usare 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].
+
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]
 
+
Inserire [haskell] prima di [extra] farà si che i pacchetti provenienti dal repository [haskell] abbiano la precedenza in caso siano presenti anche in [extra].
+
 
+
===AUR===
+
* [https://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]
+
 
+
È preferibile installarli direttamente da AUR, invece che da Hackage, poichè vengono installate automaticamente tutte le librerie necessarie. Ad esempio:
+
 
+
# paktahn -S haskell-csv
+
 
+
Tutto ciò che non è possibile trovare su AUR, può essere installato tramite {{pkg|cabal-install}}, che preleva il pacchetto direttamente da Hackage.
+
 
+
Sfortunatamente, molti dei pacchetti su AUR non sono aggiornati a causa della mancanza di risorse. In sostanza, è possibile utilizzare cabal2arch per creare dei PKGBUILD direttamente da Hackage.
+
 
+
==Linee guida==
+
Nella quasi totalità dei casi, è possibile convertire i pacchetti "cabalizzati" nel formato pacchetti usato da Arch, attraverso {{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:
+
 
+
* Aggiungendo il repository <nowiki>[haskell]</nowiki> a {{ic|/etc/pacman.conf}}, e usando [[Pacman (Italiano)|pacman]] per installare l'ultima versione
+
* Scaricando e compilando i sorgenti del pacchetto {{AUR|cabal2arch}} da [[AUR (Italiano)|AUR]].
+
* 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 il formattatore di documenti Pandoc:
+
 
+
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 [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/pandoc pagina di Hackage relativa a Pandoc] ed identificare il link al file .cabal. Si passi il suddetto come argomento a cabal2arch:
+
 
+
{{bc|<nowiki>
+
% cd /tmp
+
% cabal2arch http://hackage.haskell.org/packages/archive/pandoc/1.6.0.1/pandoc.cabal
+
Using /tmp/tmp.D7HAJJx2js/pandoc.cabal
+
Feeding the PKGBUILD to `makepkg -g`...
+
==> Retrieving Sources...
+
  -> Downloading pandoc-1.6.0.1.tar.gz...
+
--2011-05-14 07:25:39--  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%  210K 1s
+
    50K .......... .......... .......... .......... .......... 28%  393K 1s
+
  100K .......... .......... .......... .......... .......... 43%  338K 1s
+
  150K .......... .......... .......... .......... .......... 57%  419K 0s
+
  200K .......... .......... .......... .......... .......... 72%  404K 0s
+
  250K .......... .......... .......... .......... .......... 86%  554K 0s
+
  300K .......... .......... .......... .......... .......  100%  506K=0.9s
+
 
+
2011-05-14 07:25:40 (369 KB/s) - “pandoc-1.6.0.1.tar.gz.part” saved [355477/355477]
+
 
+
==> Generating checksums for source files...
+
</nowiki>}}
+
 
+
Si controlli cosa è stato generato:
+
 
+
haskell-pandoc
+
% cd haskell-pandoc
+
% ls
+
haskell-pandoc.install PKGBUILD
+
  
È ora possibile esaminare il PKGBUILD e lo script .install relativo alla libreria:
+
Inserire [haskell] sopra [extra] consentirà ai pacchetti del repository [haskell] di avere la precedenza, in caso di duplicati.
  
{{bc|<nowiki>
+
===[haskell-web]===
# Maintainer:
+
_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.1.1' 'haskell-bytestring=0.9.1.10' 'haskell-containers=0.4.0.0' 'haskell-directory=1.1.0.0' 'haskell-extensible-exceptions=0.1.1.2' 'haskell-filepath=1.2.0.0' 'haskell-mtl=2.0.1.0' 'haskell-network=2.3.0.2' 'haskell-old-time=1.0.0.6' 'haskell-parsec=3.1.1' 'haskell-pretty=1.0.1.2' 'haskell-process=1.0.1.5' 'haskell-random=1.0.0.3' 'haskell-syb=0.3' '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 ${PKGBUILD_HASKELL_ENABLE_PROFILING:+-p } --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}
+
}
+
  
</nowiki>}}
+
Il repository [haskell-web] si basa su [haskell] e fornisce numerosi pacchetti aggiuntivi, adatti alle web applications.
  
Si noti come vengono rispettate le convenzioni per i pacchetti Haskell:
+
[haskell-web]
* Le librerie hanno il prefisso {{ic|haskell-}}
+
Server = http://archhaskell.mynerdside.com/$repo/$arch
* Tutte le librerie da cui il pacchetto dipende sono inserite in depends=() (quelle incluse nel pacchetto {{pkg|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.
+
Lo si aggiunga dopo [haskell].
  
{{Nota|A partire da {{AUR|cabal2arch}} 1.1-2, viene generata nel PKGBUILD una nuova variabile d'ambiente: {{ic|PKGBUILD_HASKELL_ENABLE_PROFILING}}. Se questa ha un valore diverso da zero, come ad esempio {{ic|true}} o {{ic|1}}, verrà effettuata una build con il profiling abilitato. Per questo motivo, se un utente desidera attivarlo, si consiglia di esportare la suddetta variabile tramite {{ic|~/.bashrc}} o {{ic|~/.zshrc}}.}}
+
===Ultima spiaggia===
  
===Linee guida per librerie===
+
* [https://aur.archlinux.org/packages.php?O=0&K=haskell- pacchetti Haskell su AUR]
Solitamente, ad ogni file .cabal dovrebbe corrispondere un PKGBUILD. Rimangono le seguenti convenzioni:
+
* utilizzare {{ic|cabal-install}} direttamente
  
* Le librerie devono avere il prefisso {{ic|haskell-}}
+
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.
* Tutte le librerie devono dipendere da {{pkg|ghc}}
+
* Tutte le dipendenze devono essere incluse nell'array {{ic|depends}} del PKGBUILD
+
* Si faccia attenzione alle librerie che dipendono da gtk2hs: cairo, svg, glib, gtk sono fornite dal pacchetto {{pkg|gtk2hs}}, non ad esempio da "haskell-cairo"
+
  
La registrazione delle librerie Haskell viene effettuata tramite l'hook register. A tal proposito, si veda sopra.
+
==Migliorare ArchHaskell==
  
===Linee guida per i programmi===
+
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.
* 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 ({{ic |--enable-executable-stripping}}). cabal2arch effettua questa operazione automaticamente.
+

Latest revision as of 14:39, 8 April 2016

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.