Re: Is debhelper build-essential?
to, 2005-01-13 kello 04:07 +0000, Scott James Remnant kirjoitti:
> The stats:
>
> 8,920 source packages in Debian unstable main.
> 8,254 declare a build-dependency on debhelper
>
> = 92% of packages build-depend on debhelper.
>
> Is that sufficient to declare it build-essential?
Hm, I get slightly different numbers:
$ awk '/^Build-Depends/ { $1 = ""; print }' Sources | tr , '\n' | \
awk '{ print $1 }' | sort | uniq -c | sort -nr | head
8278 debhelper
895 perl
820 cdbs
752 xlibs-dev
556 autotools-dev
508 dpatch
460 zlib1g-dev
409 gettext
386 libncurses5-dev
379 libgtk2.0-dev
The exact numbers are not, however, important. It is clear that
debhelper is by far the most popular explicit build dependency, by an
order of magnitude. (Incidentally, there seems to be a few packages that
explicitly build-depend on build-essential, which is probably not what
the package was meant for.)
The Policy Manual says this about build essential packages:
It is not necessary to explicitly specify build-time
relationships on a minimal set of packages that are always
needed to compile, link and put in a Debian package a standard
"Hello World!" program written in C or C++.
I don't think debhelper fits into this category. On the other hand,
build-essential (version 10.1) already depends on file, html2text,
debconf-utils, and po-debconf, which I think are also not necessary for
building a "hello, world" program.
I happen to think that explicit dependencies are in general better than
implicit ones. Being explicit tends to simplify things. We invented
build-essential, however, because having to explicitly build-depend on,
say, perl all the time is more error prone than having the dependency be
implicit. perl (not just perl-base) is, in practice, on every Debian
machine used for building packages, and if one had to explicitly
build-depend on it, there would be lots of accidentally missing build
depedencies on it. This would result in needless FTBFS bugs, if nothing
else.
I don't think debhelper is in the same category as perl is: pretty much
all packages that need it already properly build depend on it. (The rest
could be fixed.)
I don't mind debhelper becoming build-essential, but I don't think
that's what build-essential was really meant for. If we expand its
meaning, we should probably clarify its description in the Policy Manual
as well.
Reply to: