Checking and uploading packages
Packages must be in the form produced by Cabal's sdist command: a gzipped tar file package-version.tar.gz comprising a directory package-version containing a package of that name and version, including package.cabal.
Indicate who supports the package
If the Maintainer field names a person or group, the release as a whole (including packaging) should be the named maintainer's approved release, which they are supporting (at least for some time after the release). Ideally a maintainer would make that clear by uploading the release themselves.
A Maintainer value of none indicates that the package is not supported.
If a package is being maintained, any release not approved and supported by the maintainer should use a different package name. Then use the Maintainer field as above either to commit to supporting the fork yourself or to mark it as unsupported.
Checking a Cabal package
Re-uploading a package with the same version number is not permitted, so you might want to do some checking before uploading:
- You could check that your source bundle builds, including the haddock documentation if it's a library.
- The following form checks that a package is uploadable, warns about sundry other matters, and presents a preview of the web page for the package. It does not add the package to the database.
Upload a Cabal package to HackageDB
This form does the uploading. When you submit it, you'll be prompted for your HackageDB username and password. (Alternatively, there's a command-line interface via cabal-install, using the same username and password.)
- Categories are determined by whatever you put in the Category field (there's no agreed list of category names yet). You can have more than one category, separated by commas.
- Documentation for library packages will be generated by a batch run, a few hours after your upload. You don't have to do anything special to make it happen.