arch-wiki-md-repo
Version:
All arch-wiki articles in markdown format, updated every two days.
145 lines (90 loc) • 6.47 kB
Markdown
The ArchHaskell group works on providing [Haskell](/index.php/Haskell "Haskell") packages to the wider Arch Linux community. The goal is to provide all of [Hackage](http://hackage.haskell.org) as binary packages for easy installation.
## Contents
* [1 Resources](#Resources)
* [2 Membership](#Membership)
* [3 Available repositories](#Available_repositories)
* [3.1 haskell-core](#haskell-core)
* [3.2 haskell-happstack](#haskell-happstack)
* [3.3 haskell-web](#haskell-web)
* [4 Improving ArchHaskell](#Improving_ArchHaskell)
* [4.1 Community](#Community)
* [4.2 Overview](#Overview)
* [4.3 haskell-core maintenance](#haskell-core_maintenance)
* [4.4 Other repository maintenance](#Other_repository_maintenance)
* [4.5 Creating another repository](#Creating_another_repository)
* [4.6 List of satellite repositories](#List_of_satellite_repositories)
* [5 Troubleshooting](#Troubleshooting)
* [5.1 Switching to ArchHaskell repository](#Switching_to_ArchHaskell_repository)
## Resources
The main resources for the ArchHaskell community to interact and discuss are:
* #archlinux-haskell IRC channel @ freenode.org
* arch-haskell@haskell.org [mailing list](http://haskell.org/mailman/listinfo/arch-haskell) and [archives](http://www.haskell.org/pipermail/arch-haskell)
* [ArchHaskell group](https://github.com/archhaskell) on GitHub
## Membership
Membership is not required at all in order to contribute. Just fork the relevant repository, make some changes, and file a pull request.
There are currently two people with commit rights to the ArchHaskell repository at GitHub:
* Leif Warner
* ~~Magnus Therning~~ (in the process of leaving the group)
## Available repositories
### haskell-core
**Note:** The *haskell-core* repository is currently not actively maintained. If you wish to help, please send a mail to the list or use the IRC channel.
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 `/etc/pacman.conf` (above [community], to ensure the correct **ghc** package is picked):
**Warning:** Placing *haskell-core* above *community* will cause packages from *haskell-core* to take precedence, and avoid dependency conflicts in case of duplicate packages. Overriding [official repositories](/index.php/Official_repositories "Official repositories") is however **not** supported.
```
[haskell-core]
Server = http://xsounds.org/~haskell/core/$arch
```
The set of packages in the *haskell-core* repository is derived from the **habs** tree officially located [here](https://github.com/archhaskell/habs). A tool called [cblrepo](https://github.com/magthe/cblrepo) is used to keep the **habs** tree synchronized with the official Haskell packages from [Hackage](http://hackage.haskell.org/packages/hackage.html).
The repositories provide both file listings (by using `repo-add --files`), package deltas (`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 `SigLevel = Required TrustedOnly` in `/etc/pacman.conf` for *haskell-core*, then you need to do the following to add Magnus Therning's key:
```
# pacman-key -r 4209170B
# pacman-key --lsign-key 4209170B
```
Force a refresh of all package lists:
```
# pacman -Syu
```
### haskell-happstack
The *haskell-happstack* repository contains packages for web development based on the [Happstack](http://happstack.com/) framework. It requires [#haskell-core](#haskell-core), and includes most of the Happstack packages in [HackageDB](http://hackage.haskell.org/), plus [Gitit](http://gitit.net/) (package name `haskell-gitit`) and [clckwrks](http://clckwrks.com/), all their dependencies not in *haskell-core* and some other not web related packages. To enable the repository, add the following entry to `/etc/pacman.conf`:
```
[haskell-happstack]
Server = http://noaxiom.org/$repo/$arch
```
Add and sign the maintainer's key:
```
# pacman-key -r B0544167
# pacman-key --lsign-key B0544167
```
Bug reports and feature requests in [GitHub](https://github.com/tensor5/haskell-happstack/issues).
### haskell-web
**Note:** 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
```
## Improving ArchHaskell
### Community
See the [#Resources](#Resources) 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 repository 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 repository hosted at kiwilight and xsounds.
* *haskell-core* is in sync with the [habs](https://github.com/archhaskell/habs) cblrepo database.
### Other repository 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 repository
### List of satellite repositories
## Troubleshooting
### Switching to ArchHaskell repository
There can be some problems switching to [ArchHaskell repository](#Available_repositories) when some Haskell packages are already installed from [official repositories](/index.php/Official_repositories "Official repositories"). The surest way is to remove all Haskell related packages, synchronize the [pacman](/index.php/Pacman "Pacman") packages database, and reinstall all the needed packages. Also for Xmonad users, be sure to install `haskell-xmonad` package instead of [xmonad](https://www.archlinux.org/packages/?name=xmonad).