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

Notice that you need a ssh access to to use these commands, see Alioth/SSH.

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<package> --set-default

Then, add the hooks to send an e-mail to at every commit:

$ ssh /home/groups/pkg-haskell/tools/ <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:

$ git clone
$ 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.

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.

Fetching others people's changes

To fetch changes made by someone else and sent to the Alioth repository, issue the following command inside the debian/ directory.

$ darcs pull

You can subscribe to if you want to be informed when such changes happen.

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 -SVersion)
$ darcs push -a

Or using a debcommit from the devscripts package:

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


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