Version 7 (modified by ross@…, 6 years ago)

add cabal-upload

The Hackage Database

HackageDB is a pool of Cabal packages, like  CPAN,  the Caml Humps or  CEAN, except for Haskell.

Web interfaces

The package collection can be presented in various ways. So far we have fairly simple interfaces:

  1.  simple package browser. The source code is available via
  2.  basic web interface to the Hackage database. It presents a simple listing of packages, and has forms for checking and uploading packages. The source code is available via

For future enhancement plans, see HackageToDo.

Other interfaces

cabal-upload is a command-line tool for uploading Cabal packages to HackageDB. Its usage is

cabal-upload user-name password cabal-file

It works by wrapping an interaction with the upload form in the basic web interface. The source is included in the  Cabal repository.

Structure

A package collection is a directory with a simple structure:

  • 00-index.tar.gz
  • pkg-list.html
  • log
  • pkg/
    • pkgid.cabal
    • pkgid.tar.gz
    • pkgid.misc/
      • doc/
        • html/
    • ...
    • latest.misc (symbolic link)
  • ...

where 00-index.tar.gz tars up all the pkg/pkgid.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.

Old stuff

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.