The Hackage Database

HackageDB is a pool of releases of Haskell software, bundled as Cabal packages.

Web interface

The package collection can be presented in various ways. So far we have a  basic web interface to the Hackage database. It presents a simple listing of packages, and has forms for checking and uploading packages.

See also cabal upload, a command-line tool for uploading Cabal packages to HackageDB.

Development

See also HackageDB/History, [query:?status=new&status=assigned&status=reopened&component=hackageDB%20website&group=type&order=priority Open tickets] and HackageToDo.

The source code is available via

However many enhancements do not require modifying this code, because the data can be accessed directly, and has a simple structure, as described below.

There is also a new version of Hackage under development based on  happstack. The source code is available via

Structure

A package collection is a directory with a simple structure:

  • 00-index.tar.gz
  • pkg-list.html
  • log
  • pkg/
    • version/
      • pkg.cabal
      • pkgid.tar.gz
      • doc/
        • html/
      • logs/
        • failure
          • logs of unsuccessful builds
        • success
          • logs of successful builds
    • ...
    • latest (symbolic link)
  • ...

where 00-index.tar.gz tars up all the pkg/version/pkg.cabal files, and an optional preferred-versions file listing constraints on recommended versions of the packages (say, "base < 4").

The collection may contain several versions of a particular package.

For example, see the  package collection underlying the above interface.

Suggestion: replace the index with a concatenation of the .cabal files with some separator (say @), and having both gzipped and uncompressed versions.

The upload script runs a shell script post-upload-hook, so we can add as many indices as we want.

Similar systems for other languages

Other repositories