Difference between revisions of "Haskell package guidelines"

From ArchWiki
Jump to: navigation, search
(Add section for the new [haskell-happstack] repository)
(Add pt interlanguage link)
 
(36 intermediate revisions by 17 users not shown)
Line 1: Line 1:
 
[[Category:Package development]]
 
[[Category:Package development]]
[[it:Haskell Package Guidelines]]
+
[[it:Haskell package guidelines]]
{{Package Guidelines}}
+
[[ja:Haskell パッケージガイドライン]]
 +
[[pt:Haskell package guidelines]]
 +
{{Expansion|Please help improve this article by creating reasonable [[Creating packages|package creation guidelines]] for [[Haskell]] packages.}}
  
[[Wikipedia:Haskell_(programming_language)|Haskell]] is well supported on Arch Linux.
+
{{Package guidelines}}
GHC and a few core packages are available in the [[Official Repositories|official repositories]].
 
For more serious Haskellers, the [[ArchHaskell]] community project provides many packages from [http://hackage.haskell.org Hackage], and the number is growing.
 
  
See the [[ArchHaskell]] community page for contact details and ways to help.
+
This document aims to cover standards and guidelines for producing good [[Haskell]] [[Creating packages|packages]] on Arch.
 
 
== Haskell packages ==
 
To use Haskell on Arch Linux, you have two mutually exclusive options:
 
# Use packages from the official Arch Linux repositories. These are a well maintained small subset of all Haskell packages. Just install them the way you would install anything else on Arch Linux. Examples of what is available: in the [https://www.archlinux.org/packages/?arch=x86_64&repo=Extra&q=haskell&last_update=&limit=50 extra] and [https://www.archlinux.org/packages/?arch=x86_64&repo=Community&q=haskell&last_update=&limit=50 community] repositories. The packages here should satisfy people who just want to use the Haskell Platform. You may also combine this option with other packages from unofficial sources like the AUR.
 
# Use the ArchHaskell project's unofficial repositories. These contain a much larger subset of what's available on Hackage. As a community effort, we often need volunteers to help maintain and add more packages to these repositories. Read on for information about using them. A note for [[xmonad]] users: if you switch to this option, you need to install the '''haskell-xmonad''' package instead of {{Pkg|xmonad}} (which is in the official community repo and has different dependencies).
 
 
 
=== [haskell-core] ===
 
The [haskell-core] repository is the base repository of packages maintained by the ArchHaskell team.
 
[haskell-core] can be accessed by adding the following entry to {{ic|/etc/pacman.conf}} (above [extra]):
 
 
 
[haskell-core]
 
Server = http://xsounds.org/~haskell/core/$arch
 
 
 
or
 
 
 
[haskell-core]
 
Server = http://www.kiwilight.com/haskell/core/$arch
 
 
 
The set of packages in the [haskell-core] repository is derived from the '''habs''' tree officially located [https://github.com/archhaskell/habs here]. A tool called [https://github.com/magthe/cblrepo cblrepo] is used to keep the '''habs''' tree synchronized with the official Haskell packages from [http://hackage.haskell.org/packages/hackage.html Hackage].
 
 
 
Putting [haskell-core] above [extra] will ensure that the packages from [haskell-core] take precedence, in case of duplicate packages in the two repositories.
 
 
 
The repositories provide both file listings (by using {{ic|repo-add --files}}), package deltas ({{ic|repo-add --delta}}), and both packages and the database are signed.  The fingerprint of the key used for signing is:
 
 
 
  pub  2048D/4209170B 2012-12-26
 
        Key fingerprint = F310 4992 EBF2 4EB8 72B9  7B9C 32B0 B453 4209 170B
 
  uid                  ArchHaskell (Magnus Therning) <magnus@therning.org>
 
  sub  2048D/A418C0FE 2012-12-26
 
 
 
If you use {{ic|SigLevel &#61; Required TrustedOnly}} in {{ic|/etc/pacman.conf}} for [haskell-core], then you need to do {{ic|sudo pacman-key --lsign-key 4209170B}} to add Magnus Therning's key.
 
 
 
=== [haskell-happstack] ===
 
The [haskell-happstack] repository contains packages for web development based on the [http://happstack.com/ Happstack] framework. It requires [[Haskell_Package_Guidelines#.5Bhaskell-core.5D|[haskell-core]]], and includes most of the Happstack packages in [http://hackage.haskell.org/ HackageDB], plus [http://gitit.net/ Gitit] and [http://clckwrks.com/ clckwrks], all their dependencies not in [haskell-core] and some other not web related packages. To enable the repository, add the following entry to {{ic|/etc/pacman.conf}}:
 
 
 
  [haskell-happstack]
 
  Server = ftp://noaxiom.org/$repo/$arch
 
 
 
Add and sign the maintainer's key:
 
 
 
  # pacman-key -r B0544167
 
  # pacman-key --lsign-key B0544167
 
 
 
=== [haskell-web] ===
 
The [haskell-web] repository is not maintained anymore. If you wish to help, please send a mail to the list or use the IRC channel.
 
The repository was built on [haskell-core], providing several more packages, especially those useful for web applications.
 
 
 
[haskell-web]
 
Server = http://archhaskell.mynerdside.com/$repo/$arch
 
 
 
=== Last resorts ===
 
* [https://aur.archlinux.org/packages.php?O=0&K=haskell- Haskell packages in the AUR]
 
* cabal-install directly
 
 
 
Unfortunately, many of the packages in the AUR are outdated due to a lack of resources.
 
If you have the time, it is recommended to use cblrepo and create something like [haskell-web], which can then be added to the collection of haskell-providing repositories.
 
 
 
== Improving ArchHaskell ==
 
 
 
=== Community ===
 
See the [[ArchHaskell]] community page and get in touch via the mailing list or the IRC channel.
 
 
 
=== Overview ===
 
The plan is to have one user-facing repository, [haskell], which merges the packages available in various satellite repositories (like [haskell-web]), thereby distributing the maintenance load.
 
One satellite repo is special, the [haskell-core] repository, which provides packages that are dependencies of all the other satellites.
 
 
 
=== [haskell-core] maintenance ===
 
Ensure:
 
* [haskell-core] is an Arch repo hosted at kiwilight and xsounds.
 
* [haskell-core] is in sync with the [https://github.com/archhaskell/habs habs] cblrepo database.
 
 
 
=== Other repo maintenance ===
 
For example, for haskell-foo, ensure:
 
* haskell-foo is a cblrepo database, possibly using packages from [haskell-core] as DistroPkgs.
 
* Whenever [haskell-core] is updated, haskell-foo's database is updated to match within a reasonable time.
 
 
 
=== Creating another repo ===
 
 
 
=== List of satellite repos ===
 

Latest revision as of 20:32, 16 June 2018

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: Please help improve this article by creating reasonable package creation guidelines for Haskell packages. (Discuss in Talk:Haskell package guidelines#)
Package creation guidelines

CLRCrossEclipseFree PascalGNOMEGoHaskellJavaKDEKernelLispMinGWNode.jsNonfreeOCamlPerlPHPPythonRubyVCSWebWine

This document aims to cover standards and guidelines for producing good Haskell packages on Arch.