Version 18 (modified by ross@…, 5 years ago)

search box

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.

Interface changes

3/2/2008

Added a Google search box over package pages to the package list page.

26/1/2008

List any successful and/or unsuccessful builds for which logs are present.

24/10/2007

The complex dependencies that can be expressed by configurations are presented in disjunctive normal form. This should also include tests of os, arch and impl, but does not as yet.

9/9/2007

Added an  experimental search interface (by Sascha Böhme), but not to the main menu.

12/2/2007

 Recent additions are also available as an RSS feed.

3/2/2007

Generate a link to Haddock documentation for library package, if it has been generated. Work is underway to automatically generate Haddock documentation for library packages. Currently this is only run sporadically, with links to the resulting documentation and build logs appearing on package pages.

1/2/2007

Package URLs now have the form foo-1.2 rather than foo/1.2. If you give only the package name, you get the most recent version.

10/1/2007

Initial version.

Development

Open tickets. For future enhancement plans, see 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.

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.

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

Old stuff

The source code for an earlier package browser is available via

Client-side cabal-put? was an early prototype of an upload tool, but is currently defunct.

There is also a Perl script cabal-put on darcs.haskell.org, now superceded by the web interface.