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

From ArchWiki
Jump to: navigation, search
(aligned with the English version)
m
(28 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}}
{{translateme}}
+
{{Nota|Questo articolo è in fase di traduzione. Seguite per ora le istruzioni della versione inglese.}}
+
  
'''Haskell on 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 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].
+
Si faccia riferimento alla pagina wiki di [[ArchHaskell]] per eventuali contatti e per scoprire come si può essere d'aiuto.
  
The community around Haskell on Arch is active and well organized but your help is always welcome.
+
==Pacchetti Haskell==
  
== Community ==
+
Per utilizzare Haskell su Arch Linux, si dispone di due opzioni mutualmente esclusive:
  
All the details on the [[ArchHaskell]] group is available on its own page.
+
# 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.
  
== Haskell Packages ==
+
===[haskell]===
  
The core Haskell tools are available in the core system (extra):
+
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>[Extra]</nowiki> ====
+
 
+
* [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://xsounds.org/~haskell/$arch
 
+
==== <nowiki>AUR</nowiki> ====
+
 
+
* [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:
+
 
+
    sudo paktahn -S haskell-csv
+
 
+
Anything not found here can be installed via [http://aur.archlinux.org/packages.php?ID=17411 cabal-install] direct from Hackage.
+
 
+
== Guidelines ==
+
 
+
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:
+
 
+
* Add the <nowiki>[haskell]</nowiki> repository to pacman.conf and use pacman do install the latest release.
+
* 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]].
+
* Install directly from Hackage using "cabal install cabal2arch".
+
 
+
===cabal2arch: an example===
+
 
+
This example illustrates how to create a new package with cabal2arch. We'll make a new package for the delimited continuations library, CC-delcont:
+
 
+
First, set the name and email address to be used in the generated PKGBUILD:
+
 
+
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:
+
 
+
<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>
+
 
+
Checking what was created:
+
 
+
% ls
+
haskell-cc-delcont
+
 
+
You can now inspect the PKGBUILD and install script for the library:
+
 
+
<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>
+
 
+
It follows the conventions for Haskell packages:
+
 
+
* Libraries are prefixed with "haskell-"
+
* All libraries that the package depend on are listed (libraries shipped with ghc are dealt with by having the ghc package provide them)
+
* It uses cabal to generate a post-install register/unregister script, with a standard name.
+
* 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===
+
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]
  
In general, each .cabal file should map to one PKGBUILD. The following conventions hold:
+
Inserire [haskell] sopra [extra] consentirà ai pacchetti del repository [haskell] di avere la precedenza, in caso di duplicati.
  
* libraries have their cabal names prefixed with "haskell-"
+
===[haskell-web]===
* 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.
+
Il repository [haskell-web] si basa su [haskell] e fornisce numerosi pacchetti aggiuntivi, adatti alle web applications.
  
===Guidelines for Programs ===
+
[haskell-web]
 +
Server = http://archhaskell.mynerdside.com/$repo/$arch
  
* Have their normal name. Examples: hmp3, xmonad, ghc, cabal-install
+
Lo si aggiunga dopo [haskell].
  
* 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.
+
===Ultima spiaggia===
  
* Use executable stripping, --enable-executable-stripping. cabal2arch will do this automatically.
+
* [https://aur.archlinux.org/packages.php?O=0&K=haskell- pacchetti Haskell su AUR]
 +
* utilizzare {{ic|cabal-install}} direttamente
  
== Automatic local building of Hackage Packages with cabal2arch using Bauerbill ==
+
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.
{{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].}}
+
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*
+
==Migliorare ArchHaskell==
    bauerbill -Si --hackage [pkgs] : look up information about [pkgs]
+
    bauerbill -Ss --hackage [args] : search for [args]
+
    bauerbill -Qu --hackage : list upgradable Hackage packages
+
  
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
+
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.

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.