Skip to content

rschatz/habs

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

The Haskell ABS tree for ArchLinux

This project contains the database used to generate an ABS tree of ArchLinux PKGBUILDs. These PKGBUILDs can then be used to compile a binary repository of Haskell packages. If you want to use the official build of this repository then add the following two lines to your /etc/pacman.conf file:

[haskell]
Server =  http://xsounds.org/~haskell/$arch

If you'd like to build the repository yourself, then you need to install the following packages:

  • devtools
  • cblrepo (available in [haskell], and from hackageDB)
  • zsh
  • git

Build steps

First clone the database in this repository:

% git clone git://github.com/archhaskell/habs.git
% cd habs

Then sync the cabal index:

% cblrepo sync

Then create all the PKGBUILDs for the packages:

% cblrepo pkgbuild $(cblrepo build base|tail -n +2)

that should fill up the directory with directories containing PKGBUILDs, one for each package. To build packages use the script makeahpkg. There's a builtin help:

% ./makeahpkg -h
Usage: makeahpkg [options] -- [packages]

Run this script in your HABS dir to build the named packages inside a
chroot.

The chroot dir consists of two dirs, a pristine chroot (root), and a build
chroot (build).  This script handles both of them.

Options:
-h          This help
-c          Clean the build chroot before building
-x          Update the pristine chroot first (implies -c)
-l <dir>    Location of chroot (default .)
-a <arch>   Architecture to build for i686 or x86_64 (default is local arch)
-b <dir>    Location of your HABS dir (default .)

To build all the packages:

% ./makeahpkg -c -- $(cblrepo build base | tail -n +2)

The script will create a clean ArchLinx installation in a chroot environment at ./${arch}-chroot, where ${arch} is either i686 or x86_64, depending on your hardware. Use the option -l <dir> to put the chroot in a different location. It is also possible to cross-compile the i686 repository on 64-bit machines by using the -a option.

All PKGBUILDs in the project must be generated with the latest release of cblrepo.

The ArchHaskell project

The main goal is to maintain a binary repository of up-to-date packages taken from hackageDB. To achieve this we also maintain several repositories of tools, libraries, and scripts:

  • cblrepo is the main tool used to maintain a consistent database of package versions and generate PKGBUILDs.
  • cabal2arch is a tool which converts a CABAL file into a PKGBUILD, and optionally a .install. (Currently only used for packages not included in the database, e.g. for generating source packages to upload to AUR.)
  • archlinux is the main dependency of cabal2arch.
  • archlinux-web contains a library and a set of scripts that help with various web-related tasks such as updating the information on hackageDB on what versions of packages that are available for ArchLinux.

All discussion around our HABS tree and other packages take place on the ArchHaskell mailinglist.

The available packages

Currently the repository contains some 200 packages, which is only a small fraction of the packages on hackageDB. We would of course like to cover 100% of hackageDB, but our resources, tools and processes don't allow it yet.

Choosing of the current set

The current set of packages was chosen in a very unstructured way, and we are still discussing how to decide what packages we take on. Please get involved by joining the mailinglist if you have opinions on how we should pick the packages we provide.

Adding individual packages

Suggestions for adding individual packages to the set are always welcome. Use the github issue tracker to make sure your request isn't lost. Be aware though that each added package adds to the burden of the team, so there is a real risk that your request is denied. That risk is reduced if you show an interest in contributing to the project.