|Version 18 (modified by ross@…, 5 years ago)|
The Hackage Database
HackageDB is a pool of releases of Haskell software, bundled as Cabal packages.
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.
Added a Google search box over package pages to the package list page.
List any successful and/or unsuccessful builds for which logs are present.
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.
Added an experimental search interface (by Sascha Böhme), but not to the main menu.
Recent additions are also available as an RSS feed.
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.
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.
The source code is available via
- darcs get http://darcs.haskell.org/hackage-scripts
However many enhancements do not require modifying this code, because the data can be accessed directly, and has a simple structure, as described below.
A package collection is a directory with a simple structure:
- logs of unsuccessful builds
- 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
- Comprehensive TeX Archive Network
- Comprehensive Perl Archive Network
- the Caml Humps
- Ruby Application Archive (see RubyGems for a comparison)
- Python Package Index
- Comprehensive Erlang Archive Network
- Scheme Now!
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.