Difference between revisions of "Haskell package guidelines (Italiano)"
(→Linee guida) |
m (→[Haskell]) |
||
(23 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
− | |||
[[Category:Package development (Italiano)]] | [[Category:Package development (Italiano)]] | ||
+ | [[en:Haskell Package Guidelines]] | ||
+ | {{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]. | |
− | + | Come avrete notato, la community che si occupa di Haskell su Arch Linux è attiva e ben organizzata, ma il vostro aiuto è sempre ben accetto. | |
− | |||
− | |||
− | |||
− | Come avrete notato, la community che si occupa di | ||
==Community== | ==Community== | ||
Line 16: | Line 13: | ||
I tools fondamentali per Haskell, sono disponibili nel repository [extra]: | I tools fondamentali per Haskell, sono disponibili nel repository [extra]: | ||
− | === | + | ===[extra]=== |
* [http://www.archlinux.org/packages/?arch=x86_64&repo=Extra&q=haskell&last_update=&limit=50 Elenco pacchetti Haskell contenuti in <nowiki>[extra]</nowiki>] | * [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 <nowiki>[extra]</nowiki> conterrà la piattaforma Haskell e le applicazioni più popolari. | ||
− | ===<nowiki>[ | + | ===<nowiki>[community]</nowiki>=== |
− | + | * [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]]. | ||
+ | |||
+ | ===[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:// | + | 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]. | ||
+ | |||
+ | 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=== | ===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] | AUR contiene un grande numero di pacchetti (quasi 2000) compilati da [http://hackage.haskell.org hackage.haskell.org] | ||
Line 34: | Line 42: | ||
È preferibile installarli direttamente da AUR, invece che da Hackage, poichè vengono installate automaticamente tutte le librerie necessarie. Ad esempio: | È 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 {{ | + | 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== | ==Linee guida== | ||
− | Nella quasi totalità dei casi, è possibile convertire i pacchetti "cabalizzati" nel formato pacchetti usato da Arch, attraverso {{ | + | 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 da | + | * Scaricando e compilando i sorgenti del pacchetto {{AUR|cabal2arch}} da [[AUR (Italiano)|AUR]]. |
* Installandolo direttamente da hackage usando "cabal install cabal2arch". | * 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 | + | 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: | Innanzitutto, impostare il nome e l'indirizzo email da usare nel PKGBUILD che verrà generato: | ||
Line 52: | Line 62: | ||
export ARCH_HASKELL='My Name <my.name@domain.org>' | export ARCH_HASKELL='My Name <my.name@domain.org>' | ||
− | Poi, cercare la [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/ | + | 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 | % cd /tmp | ||
% cabal2arch http://hackage.haskell.org/packages/archive/pandoc/1.6.0.1/pandoc.cabal | % cabal2arch http://hackage.haskell.org/packages/archive/pandoc/1.6.0.1/pandoc.cabal | ||
− | Using /tmp/tmp. | + | Using /tmp/tmp.D7HAJJx2js/pandoc.cabal |
Feeding the PKGBUILD to `makepkg -g`... | Feeding the PKGBUILD to `makepkg -g`... | ||
==> Retrieving Sources... | ==> Retrieving Sources... | ||
-> Downloading pandoc-1.6.0.1.tar.gz... | -> Downloading pandoc-1.6.0.1.tar.gz... | ||
− | --2011- | + | --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 | Resolving hackage.haskell.org... 69.30.63.204 | ||
Connecting to hackage.haskell.org|69.30.63.204|:80... connected. | Connecting to hackage.haskell.org|69.30.63.204|:80... connected. | ||
HTTP request sent, awaiting response... 200 OK | HTTP request sent, awaiting response... 200 OK | ||
Length: 355477 (347K) [application/x-tar] | Length: 355477 (347K) [application/x-tar] | ||
− | Saving to: | + | Saving to: “pandoc-1.6.0.1.tar.gz.part” |
− | 0K .......... .......... .......... .......... .......... 14% | + | 0K .......... .......... .......... .......... .......... 14% 210K 1s |
− | 50K .......... .......... .......... .......... .......... 28% | + | 50K .......... .......... .......... .......... .......... 28% 393K 1s |
− | 100K .......... .......... .......... .......... .......... 43% | + | 100K .......... .......... .......... .......... .......... 43% 338K 1s |
− | 150K .......... .......... .......... .......... .......... 57% | + | 150K .......... .......... .......... .......... .......... 57% 419K 0s |
− | 200K .......... .......... .......... .......... .......... 72% | + | 200K .......... .......... .......... .......... .......... 72% 404K 0s |
− | 250K .......... .......... .......... .......... .......... 86% | + | 250K .......... .......... .......... .......... .......... 86% 554K 0s |
− | 300K .......... .......... .......... .......... ....... 100% | + | 300K .......... .......... .......... .......... ....... 100% 506K=0.9s |
− | 2011- | + | 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... | ==> Generating checksums for source files... | ||
− | + | </nowiki>}} | |
− | </ | ||
Si controlli cosa è stato generato: | Si controlli cosa è stato generato: | ||
+ | haskell-pandoc | ||
+ | % cd haskell-pandoc | ||
% ls | % ls | ||
− | haskell- | + | haskell-pandoc.install PKGBUILD |
È ora possibile esaminare il PKGBUILD e lo script .install relativo alla libreria: | È ora possibile esaminare il PKGBUILD e lo script .install relativo alla libreria: | ||
− | < | + | {{bc|<nowiki> |
− | + | # Maintainer: | |
− | # Maintainer: | ||
_hkgname=pandoc | _hkgname=pandoc | ||
pkgname=haskell-pandoc | pkgname=haskell-pandoc | ||
Line 101: | Line 111: | ||
arch=('i686' 'x86_64') | arch=('i686' 'x86_64') | ||
makedepends=() | makedepends=() | ||
− | depends=('ghc' 'haskell-http=4000. | + | 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') | options=('strip') | ||
source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz) | source=(http://hackage.haskell.org/packages/archive/${_hkgname}/${pkgver}/${_hkgname}-${pkgver}.tar.gz) | ||
Line 108: | Line 118: | ||
build() { | build() { | ||
cd ${srcdir}/${_hkgname}-${pkgver} | cd ${srcdir}/${_hkgname}-${pkgver} | ||
− | runhaskell Setup configure -O --enable-split-objs --enable-shared \ | + | 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 | --prefix=/usr --docdir=/usr/share/doc/${pkgname} --libsubdir=\$compiler/site-local/\$pkgid | ||
runhaskell Setup build | runhaskell Setup build | ||
Line 125: | Line 135: | ||
} | } | ||
− | </ | + | </nowiki>}} |
Si noti come vengono rispettate le convenzioni per i pacchetti Haskell: | Si noti come vengono rispettate le convenzioni per i pacchetti Haskell: | ||
− | * Le librerie hanno il prefisso | + | * Le librerie hanno il prefisso {{ic|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) | + | * 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 | * Utilizza cabal per generare uno script di installazione per la registrazione/deregistrazione, con un nome standard | ||
* Si usa haddock per generare la documentazione. | * Si usa haddock per generare la documentazione. | ||
Line 135: | Line 145: | ||
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. | ||
− | + | {{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}}.}} | |
+ | |||
+ | ===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: | ||
− | * Le librerie devono avere il prefisso | + | * Le librerie devono avere il prefisso {{ic|haskell-}} |
− | * Tutte le librerie devono dipendere da | + | * Tutte le librerie devono dipendere da {{pkg|ghc}} |
− | * Tutte le dipendenze devono essere incluse nell'array depends | + | * 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 gtk2hs, non ad esempio da "haskell-cairo" | + | * 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. | 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 ({{ic |--enable-executable-stripping}}). cabal2arch effettua questa operazione automaticamente. |
Revision as of 07:55, 17 June 2012
Eclipse – GNOME – Haskell – Java – Kernel – Lisp – MinGW – OCaml – Perl – Python – Ruby – VCS – Wine – Other
Haskell è ben supportato su Arch Linux, poichè GHC ed altri tools fondamentali sono disponibili nei repository ufficiali; 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 Haskell su Arch Linux è attiva e ben organizzata, ma il vostro aiuto è sempre ben accetto.
Contents
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.
[community]
Il repository [community] fornisce pacchetti aggiuntivi che non fanno parte della piattaforma Haskell, come xmonad.
[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 /etc/pacman.conf
:
[haskell] Server = http://xsounds.org/~haskell/$arch
I pacchetti contenuti nel repository [haskell], derivano dal tree dell'utente habs, reperibile qui. È possibile usare un tool chiamato cblrepo per sincronizzare il tree di habs con i pacchetti Haskell ufficiali provenienti da 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
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:
# paktahn -S haskell-csv
Tutto ciò che non è possibile trovare su AUR, può essere installato tramite 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 cabal2archAUR. È 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 [haskell] a
/etc/pacman.conf
, e usando pacman per installare l'ultima versione - Scaricando e compilando i sorgenti del pacchetto cabal2archAUR da 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 pagina di Hackage relativa a Pandoc 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.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...
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:
# 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} }
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.
PKGBUILD_HASKELL_ENABLE_PROFILING
. Se questa ha un valore diverso da zero, come ad esempio true
o 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 ~/.bashrc
o ~/.zshrc
.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 (
--enable-executable-stripping
). cabal2arch effettua questa operazione automaticamente.