README.md 3.26 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
The Debian Haskell Group packages repository
============================================


Rationale
---------

As always, the Debian Haskell Group (DHG) does a few things different than
others. Most of our packages are trivial to maintain, so an individual
repository for the package would be overkill. On the other hand, it is
Clint Adams's avatar
Clint Adams committed
11
precisely the orchestration of hundreds of packages that are the distinguishing
12 13 14 15 16 17 18
feature of our work, hence the choice to put all our packaging into one
repository.


Also, our work is maintaining the debian/ directory, so we decided to track
only that, and _not_ upstream sources. Therefore, the directory structure for a
Haskell package foo is as follows:
Joachim Breitner's avatar
Joachim Breitner committed
19

20 21 22
    /p/                           -- root of all packaging
    /p/haskell-foo/               -- package name (Debian source package name)
    /p/haskell-foo/debian/        -- packaging directory
23
    /p/haskell-foo/debian/control -- the usual files
24 25 26 27 28 29 30 31 32 33 34 35 36 37
    ...

In particular, /p/haskell-foo/ contains no files besides debian/. So what is
the point of having the files under the debian/ subdirectory? This way, you can
extract the upstream sources in there and run your usual
uscan/debchange/quilt/sbuild/debrelease-commands as usual. The `.gitignore`
file is set up so that git will not bother you about the extracted upstream
sources.

As running uscan or dpkg-buildpackage in that directory will dump files into
the parent, we introduced the /p/ directory. Again, a `.gitignore` file is set
up so that git will not bother you about the tarballs, `deb`-files or
`changes`-files therein.

Joachim Breitner's avatar
Joachim Breitner committed
38 39 40 41 42 43 44
Tagging convention and workflow
-------------------------------

Packages are in one of three states:

 * `UNRELEASED` in `debian/changelog`:

Joachim Breitner's avatar
Joachim Breitner committed
45 46
   Changes (compared to the version in the archive) present, package not ready
   for upload.
Joachim Breitner's avatar
Joachim Breitner committed
47 48 49 50


 * `unstable` in `debian/changelog`, no corresponding git tag:

Joachim Breitner's avatar
Joachim Breitner committed
51 52
   Changes (compared to the version in the archive) present, package ready for
   upload.
Joachim Breitner's avatar
Joachim Breitner committed
53 54 55 56 57 58 59 60 61 62 63 64 65 66


 * `unstable` in `debian/changelog`, corresponding tag present

   Repository matches state in the archive, nothing to do.


Because git cannot tag individual directory, the tagging convention includes
the Debian source package name:

    <source package name>_v<full debian version>

In the full debian version, `:` and `~` are replaced by `_`.

67

Joachim Breitner's avatar
Joachim Breitner committed
68 69
Debian Haskell Tools
--------------------
70

Joachim Breitner's avatar
Joachim Breitner committed
71 72 73
We provide tools for a number of repeated tasks, such as tagging, upgrading,
knowing what to build and what to upgrade, etc. They are provided in the
`pkg-haskell-tools` package, available in sid, or at
74 75 76
git@salsa.debian.org:haskell-team/pkg-haskell-tools.git
(git://salsa.debian.org/haskell-team/pkg-haskell-tools.git for
read-only access).
77

Joachim Breitner's avatar
Joachim Breitner committed
78 79
All tools are under the `dht` prefix, and it has a manpage (man dht) or at
<file:///usr/share/doc/pkg-haskell-tools/dht.html>.
80 81 82 83


Useful general tools
--------------------
84 85 86 87

 * `origtargz`:

   In order to download and extract upstream sources in one go, simply run
Joachim Breitner's avatar
Joachim Breitner committed
88 89 90
   `origtargz` inside the `haskell-foo/` directory. You can also run this
   command after you increased the version number in `debian/changelog`, and it
   will clean out `haskell-foo` before.
91 92 93 94 95

 * `git clean -d -x -n`:

   Save space by removing all extracted upstream files and other untracked
   files in `/p/`. Replace `-n` with `-f` after checking that everything is fine