[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#750576: ITP: debdry -- Semi-assisted automatic Debian packaging

Package: wnpp
Severity: wishlist
Owner: Enrico Zini <enrico@debian.org>

* Package name    : debdry
  Version         : 0.1
  Upstream Author : Enrico Zini <enrico@enricozini.org>
* URL             : http://anonscm.debian.org/gitweb/?p=collab-maint/debdry.git
* License         : GPL3
  Programming Lang: Python 3
  Description     : Semi-assisted automatic Debian packaging

debdry is for debian/ directories what debhelper7 is for debian/rules.

It applies the Don't Repeat Yourself idea to packaging, attempting to reuse as
much as possible of upstream's metadata and standard packaging practices.

debdry runs an appropriate auto-debianisation tool for a given source
directory, then applies manual overrides from a debian.in directory.

 - - -

I'm generally fond of the DRY principle (http://c2.com/cgi/wiki?DontRepeatYourself)
but every time I package software for Debian I feel WET (Write
Everything Twice) instead.

Many upstream ecosystems have started including enough metadata in their
upstream packaging to significantly overlap with debian/. Think
short/long descriptions, upstream URLs, licenses, dependencies.

When the upstream packaging is well made, there is usually not much else
to add to a dh-make-equivalent initial boilerplate code, besides testing
and taking responsibility for it. Maintaining software in Debian should
be about testing and taking responsibility for it, not about retyping
things that upstream has already typed.

What if upstream got it wrong? It often happens. In that case, we can
patch their sources, and send them the patch. That way, instead of
having our own private work-arounds, we make the packaging better for
everyone, even those who do not use Debian.

The idea of debdry is to regenerate the debian/ directory every time a
new version of the software is packaged, using the dh-make-equivalent
for the given package type. It then takes manually maintained data from
the debian.in/ directory and uses it to complete the packaging.

At each new version there is a chance for the debianisation to be
updated: the Python team switches from dh_pysupport to dh_python2? Your
package will automatically follow (provided python-stdeb is updated
accordingly, but that is another story).

I like how with debhelper7 we are writing debian/rules files that only
describe how the package diverges from a standard. I want to do exactly
the same for the whole debian/ directory. Ideally, the debian.in/
directory used by debdry should only describe how the upstream packaging
diverges from a standard in a way that cannot be fixed by patching it.

I have no intention of having debdry replace hand-writing debian/
directories, nor have it handle all possible corner cases. I aim at it
being useful in the general case. I want to address the ordinary,
routine, boring work, and leave the rest as it is.

This is also a proof of concept for an idea. We can discuss it in more
detail here, or at DebConf.

In the meantime I'd like to use it for my packages, because frankly,
I'm bored of writing everything twice.



Reply to: