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 darcs.debian.org 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 darcs.debian.org:/darcs/pkg-haskell/<package> --set-default
Then, add the hooks to send an e-mail to email@example.com at every commit:
$ ssh darcs.debian.org /home/groups/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:
$ git clone git.debian.org:/git/pkg-haskell/tools $ 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 firstname.lastname@example.org 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.
- Fetch the package
- Build and upload the package
- Tag the package