| Version 20 (modified by ross@…, 5 years ago) |
|---|
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, Open tickets and HackageToDo.
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.
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
- failure
- ...
- latest (symbolic link)
- version/
- ...
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!
Other repositories
- Ohloh - open source project tracking (code base stats, project info, etc). See e.g. the xmonad page.
- Apple's download site - very swishy hackage-like site.
