The Debian Haskell Darcs Repository

The Debian Haskell Darcs repository can be viewed with a web browser at

How to add your package to the darcs repository

Sending your changes

To send your changes to the Alioth repository, use the following commands inside the debian/ directory.

$ darcs record -a
$ darcs push

We do not track changes to the upstream sources directly! Please use the patch system systems provided by the dpkg format 3.0 (quilt) for that. Also remember to add new files in debian/ (such as patches) to the darcs repository using darcs add before you record them.

Adding a new package

Create the package as normal, including the debian/ directory with files like control, compat, changelog, copyright, rules and watch. For information on these files, check Haskell/CollabMaint/PackageTemplate. Don't forget about watch, cause it's used in the script to build the package. Then, build a darcs repository for your clean debian/ (and your debian/ only):

$ fakeroot debian/rules clean
$ cd debian/
$ darcs init --darcs-2
$ darcs record -a -l -m "Initial Check-In"
$ darcs put darcs.debian.org:/darcs/pkg-haskell/<package>

Then, add the hooks to send an e-mail to pkg-haskell-commits@lists.alioth.debian.org at every commit:

$ ssh darcs.debian.org /darcs/pkg-haskell/tools/add-hooks.sh <package>

Fetching a package

If the package is already in the repository, you can fetch it using the pkg-haskell-checkout script. It's in the tools repository:

$ darcs get http://darcs.debian.org/pkg-haskell/tools
$ chmod +x tools/pkg-haskell-checkout
$ tools/pkg-haskell-checkout <package>

Now you have a checked-out directory as usual in the <package>-<version> subdirectory. When building a package from that directory, use pass the -i option to dpkg-buildpackage et. al., so that the debian/_darcs directory is ignored.

Building and uploading a package

There is nothing particularly special about building a package, other than that the -i and -I arguments need to be passed in order for the _darcs directory to be ignored. Otherwise the build will fail, complaining about modified binary data that can't be represented in the source.

For example, the following will build and upload <package> signed by <key-id>.

$ cd <package>
$ debuild -k<key-id> -i -I      # Build
$ debrelease                    # Upload

Tagging a package

When you do an upload of a package, this should be remembered by setting a tag, which is just the version number, and pushing the tag to the repository.

This can be done manually with:

$ cd debian/
$ darcs tag $(dpkg-parsechangelog -lchangelog |grep-dctrl -n -s Version .)
$ darcs push -a

Or using a debcommit from the devscripts package:

$ debcommit -r 
$ darcs push -a --repodir=debian

Sponsoring

To sponsor packages following the following steps, which are detailed above.

  1. Fetch the package
  2. Build and upload the package
  3. Tag the package

See Also