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

From ArchWiki
Jump to: navigation, search
(aligned with the English version)
(Traduzione fino a "Linee guida per librerie")
Line 3: Line 3:
  
 
{{i18n|Haskell package guidelines}}
 
{{i18n|Haskell package guidelines}}
{{translateme}}
 
{{Nota|Questo articolo è in fase di traduzione. Seguite per ora le istruzioni della versione inglese.}}
 
  
'''Haskell on Arch Linux'''
+
'''Haskell in Arch Linux'''
  
Haskell is well supported on Arch Linux, with GHC and other key tools available via pacman, a growing number of packages made available by the ArchHaskell group, and a large part of [http://hackage.haskell.org hackage.haskell.org] library database [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 available via AUR].
+
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].
  
The community around Haskell on Arch is active and well organized but your help is always welcome.
+
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 ==
+
==Community==
 +
È possibile consultare [[ArchHaskell]] per ulteriori informazioni sul gruppo.
  
All the details on the [[ArchHaskell]] group is available on its own page.
+
==Pacchetti Haskell==
 +
I tools fondamentali per Haskell, sono disponibili nel repository [extra]:
  
== Haskell Packages ==
+
===<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>]
  
The core Haskell tools are available in the core system (extra):
+
Il repository <nowiki>[extra]</nowiki> conterrà la piattaforma Haskell e le applicazioni più popolari.
  
==== <nowiki>[Extra]</nowiki> ====
+
===<nowiki>[Haskell]</nowiki>===
 
+
I pacchetti mantenuti dal gruppo ArchHaskell, possono essere scaricati aggiungendo la seguente voce a pacman.conf:
* [http://www.archlinux.org/packages/?arch=x86_64&repo=Extra&q=haskell&last_update=&limit=50 Haskell packages in the core system]
 
 
 
Our policy is for [extra] to provide the Haskell platform, and popular Haskell applications.
 
 
 
==== <nowiki>[haskell]</nowiki> ====
 
 
 
The packages maintained by the ArchHaskell group can be accessed by adding the following entry to pacman.conf:
 
  
 
  [haskell]
 
  [haskell]
 
  Server = http://andromeda.kiwilight.com/$repo/$arch
 
  Server = http://andromeda.kiwilight.com/$repo/$arch
  
==== <nowiki>AUR</nowiki> ====
+
===AUR===
 
+
* [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]
* [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 Haskell packages in AUR]
 
 
 
A huge number (almost 2000) packages built from http://hackage.haskell.org
 
  
These generally improve on installing directly from Hackage as they resolve required C libraries. They can be installed as, for example:
+
AUR contiene un grande numero di pacchetti (quasi 2000) compilati da [http://hackage.haskell.org hackage.haskell.org]
  
    sudo paktahn -S haskell-csv
+
È preferibile installarli direttamente da AUR, invece che da Hackage, poichè vengono installate automaticamente tutte le librerie necessarie. Ad esempio:
  
Anything not found here can be installed via [http://aur.archlinux.org/packages.php?ID=17411 cabal-install] direct from Hackage.
+
yaourt -S haskell-csv
  
== Guidelines ==
+
Tutto ciò che non è possibile trovare su AUR, può essere installato tramite {{Package AUR|cabal-install}}, prelevando il pacchetto direttamente da Hackage.
  
In almost all cases cabalised Haskell packages can be automatically translated into Arch packages, via the cabal2arch tool. It is strongly recommended that you use the latest released version of this tool, as it implements the packaging policy for Haskell packages. You can get it in several ways:
+
===Linee guida===
 +
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:
  
* Add the <nowiki>[haskell]</nowiki> repository to pacman.conf and use pacman do install the latest release.
+
* Attraverso il repository <nowiki>[haskell]</nowiki>
* Download and build the [http://aur.archlinux.org/packages.php?ID=17471 source from AUR], either manually or using one of the many [[AUR Helpers]].
+
* Scaricando e compilando i sorgenti da aur manualmente oppure usando uno degli [[AUR Helpers|AUR Helpers]]
* Install directly from Hackage using "cabal install cabal2arch".
+
* Installandolo direttamente da hackage usando "cabal install cabal2arch".
  
===cabal2arch: an example===
+
====cabal2arch: un esempio====
 +
Questo esempio spiega come creare un nuovo pacchetto usando cabal2arch. Nello specifico, si creerà un pacchetto per la libreria CC-delcont:
  
This example illustrates how to create a new package with cabal2arch. We'll make a new package for the delimited continuations library, CC-delcont:
+
Innanzitutto, impostare il nome e l'indirizzo email da usare nel PKGBUILD che verrà generato:
 
 
First, set the name and email address to be used in the generated PKGBUILD:
 
  
 
  export ARCH_HASKELL='My Name <my.name@domain.org>'
 
  export ARCH_HASKELL='My Name <my.name@domain.org>'
  
Second, find [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/CC-delcont the hackage page for CC-delcont], then identify the link to the .cabal file. Use this link as an argument to cabal2arch:
+
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:
  
 
<pre>
 
<pre>
Line 88: Line 79:
  
 
==> Generating checksums for source files...
 
==> Generating checksums for source files...
 +
 
</pre>
 
</pre>
  
Checking what was created:
+
Si controlli cosa è stato generato:
  
 
  % ls
 
  % ls
 
  haskell-cc-delcont
 
  haskell-cc-delcont
  
You can now inspect the PKGBUILD and install script for the library:
+
È ora possibile esaminare il PKGBUILD e lo script .install relativo alla libreria:
  
 
<pre>
 
<pre>
 +
 
# Maintainer: My Name <my.name@domain.org>
 
# Maintainer: My Name <my.name@domain.org>
 
_hkgname=pandoc
 
_hkgname=pandoc
Line 131: Line 124:
 
     runhaskell Setup copy --destdir=${pkgdir}
 
     runhaskell Setup copy --destdir=${pkgdir}
 
}
 
}
 +
 
</pre>
 
</pre>
  
It follows the conventions for Haskell packages:
+
Si noti come vengono rispettate le convenzioni per i pacchetti Haskell:
 
+
* Le librerie hanno il prefisso "haskell-"
* Libraries are prefixed with "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)
* All libraries that the package depend on are listed (libraries shipped with ghc are dealt with by having the ghc package provide them)
+
* Utilizza cabal per generare uno script di installazione per la registrazione/deregistrazione, con un nome standard
* It uses cabal to generate a post-install register/unregister script, with a standard name.
+
* Si usa haddock per generare la documentazione.
* We use haddock to build the documentation.
 
 
 
All Haskell libraries should follow these naming conventions, and using the latest release of cabal2arch will ensure this is the case.
 
 
 
===Guidelines for Libraries===
 
 
 
In general, each .cabal file should map to one PKGBUILD. The following conventions hold:
 
 
 
* libraries have their cabal names prefixed with "haskell-"
 
* all libraries have a dependency on 'ghc'
 
* all libraries that are depended on must be listed in the depends-array in the PKGBUILD
 
* be careful about dependencies from gtk2hs: cairo, svg, glib, gtk. These are all provided by the 'gtk2hs' package, not , e.g. "haskell-cairo"
 
 
 
Registering Haskell libraries is done via a register hook, see above.
 
 
 
===Guidelines for Programs ===
 
 
 
* Have their normal name. Examples: hmp3, xmonad, ghc, cabal-install
 
 
 
* Be careful about dynamically linked runtime dependencies on C. For example, all GHC-produced binaries have a runtime dependency on 'gmp'. OpenGL or GtT-based binaries will have additional 'depends'. cabal2arch will attempt to work out the C dependencies, but there may be others implied by Haskell dependencies that are missed.
 
  
* Use executable stripping, --enable-executable-stripping. cabal2arch will do this automatically.
+
Tutte le librerie Haskel dovrebbero segure queste convenzioni, e l'uso dell'ultima versione di cabal2arch, assicura che vengano rispettate.
  
== Automatic local building of Hackage Packages with cabal2arch using Bauerbill ==
+
====Linee guida per librerie====
{{Warning|''Bauerbill'' development has been officially discontinued: its latest version does not work with ''pacman>&#61;3.5''. See [https://bbs.archlinux.org/viewtopic.php?id&#61;115660].}}
+
Solitamente, ad ogni file .cabal dovrebbe corrispondere un PKGBUILD. Rimangono le seguenti convenzioni:
Although there are a number of haskell packages on AUR, there will always be outdated packages on AUR. If this happens and you want to create a fully updated package you would normally use cabal2arch. This however can become painful/time consuming if you have numerous packages with different dependencies (some of which may/may not be updated). Instead you can automatic this process by using [[Bauerbill]] which has the --hackage flag, allowing you to create AUR packages from Hackage locally. Below is an example of some common commands
 
  
    bauerbill -S --hackage [pkgs] : build [pkgs] directly from Hackage*
+
* Le librerie devono avere il prefisso "haskell-"
    bauerbill -Si --hackage [pkgs] : look up information about [pkgs]
+
* Tutte le librerie devono dipendere da 'ghc'
    bauerbill -Ss --hackage [args] : search for [args]
+
* Tutte le dipendenze devono essere incluse nell'array depends=() del PKGBUILD
    bauerbill -Qu --hackage : list upgradable Hackage packages
+
* Si faccia attenzione alle librerie che dipendono da gtk2hs: cairo, svg, glib, gtk sono fornite dal pacchetto gtk2hs, non ad esempio da "haskell-cairo"
  
Syncing packages with the --hackage flag will interactively download all dependencies of the package from Hackage, convert them using cabal2arch and then build/install them (while checking dependencies). You can combine this with the --aur flag to give precedence to Hackage packages that are on AUR
+
La registrazione delle librerie Haskell viene effettuata tramite l'hook register. A tal proposito, si veda sopra.

Revision as of 10:15, 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.