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

The Helper Rant



Greetings!

As some may know, I ask my applicants to do a package without
debhelper, so I can be sure, that they know what goes on behind the
scenes. There were cases where the first tries weren't good. In fact,
they were bad. And that made me wonder..

Nowadays, in times of the autotools, dh_make and debhelper, packaging
software (here, and throughout this e-mail, I'm talking about the
typical package an average applicant usually selects, mostly
autotools-based, or some perl/python/whatever scripts) is rather
easy. I could even say it's too trivial. I want to elaborate on this
`too' thing. I would like to describe what I would like to see, and
contrast it with reality.

The first thing I try to enforce is that the packaging should be
simple, clean and elegant. Unnecessary code and files should be
eliminated.

This includes that the debian/rules script should not include
unnecessary targets, only those that are actually used and/or mandated
by Policy. Reality strikes here first: dh_make's templates were
probably made for a hypothetic autotools-based package, the typical
./configure && make && make install one. Thus, it has a configure
target, which is very useful, if it's actually used, but useless junk
otherwise. As I see it, some people don't care about this, and leave
it there, with the ./configure part commented out, even for packages
that do not, and probably never will use the auto* suite. The same
goes for the docbook-to-man command.

It happens often that debian/rules is filled with a number of empty
lines, which makes it slightly harder to see what belongs together.

The other common thing I see in debian/rules, is that the dh_make
comments (like `# We have nothing to do by default.'), which are
unnecessary, and probably only there for the maintainer to see what he
should put there, and what that particular target is used for. Then,
there are the commented-out debhelper commands. Why are they there, if
they're not used? They just make the diff larger, and serve no other
purpose.

Another common problem is when people modify the upstream Makefile,
even when it's unnecessary. For example, I've seen packages which add
this line to the Makefile:

DESTDIR=

That just doesn't make sense. Another typical crap is this:

-FOODIR=/usr/lib/bar
+FOODIR=${DESTDIR}/usr/lib/bar

Spend two lines of diff, plus context, plus header, just to change one
tiny thing, which could be set from debian/rules, on the make command
line.

Don't get me wrong, if the workarounds would be worse than changing
upstream sources, then of course the source should be changed.

Those who dare to touch upstream sources without need, tend to fall
deeper into that pit. As an example, when there's no install target in
the original Makefile, they patch it. Even if it would be an `install
-m 0755 foo debian/foo/usr/bin/bar' line in debian/rules' install
target. No, they go and patch the Makefile instead, introducing a
great deal of junk into the diff.

Not to mention what I recently saw in a package (*shrug*): the dh_make
template includes $(MAKE) in the build-stamp target, however, the
package in question was a set of perl scripts, and the only target in
the Makefile was `install'. I would have thought that every sane
person would remove $(MAKE) from the build-stamp target. Furthermore,
the whole build-stamp target, as only a `build: ;' (ie, an empty
target) would be enough. Alas, it turned out that I was too
optimistic: an `all' target was patched into the Makefile, which only
echoed that there's nothing to build.

For now, I'll keep the other bits for myself. However, I'd like to ask
the Applicant Managers to be anal about the packages, and don't accept
trivial ones, for that defeats the purpose of the Skills check.

I know that my problems are small, mostly cosmetic things. However, I
believe that Debian packages should be done elegantly, even if that
means some extra work, even if it means that removing those
commented-out debhelper commands, which are not used now, but might
be, in some later point (they should be added back then, not left
around until such times come).

I sincerely hope that this trend will stop, and even our applicants
will spend some time learning the basics of packaging, and not just
try to blindly follow a template (which is good and useful, when used
properly). To make this happen as soon as possible, I would even
strengthen the rules for applying, by requiring a debhelper-less
package ready (of course, with exceptions, like porters). Those who
can do it, or are willing to learn and spend a few hours looking at
documentation and/or searching for samples, will do this
easily. Those, who are incapable of doing so, should not apply at all.

Thanks for listening.

--
Gergely Nagy \ mhp/|8]

(P.S.: These are my ramblings, as an applicant manager. They have
nothing to do with the Front Desk)

Attachment: pgpC83k7J77Mb.pgp
Description: PGP signature


Reply to: