| Version 15 (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.
Interface changes
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
Add 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
- darcs get http://darcs.haskell.org/hackage-scripts
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/
- ...
- 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!
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.
