Package: debhelper
Version: 11.1.4
Severity: wishlist

Hi Niels et al,

I was kinda surprised when I saw that debhelper depends on binutils. I
think this dependency is wrong for a couple of reasons.

 * It likely exists for dh_strip. However, dh_strip calls
   ${DEB_HOST_GNU_TYPE}-strip and the binutils binary package does not
   ensure its presence (it only does when build == host). Thus the
   dependency is too weak in any case.

   Fixing this would go like:

   Package: debhelper
   Architecture: any
   Multi-Arch: same
   Depends: binutils-for-host, ...

   I think we agree that this has several downsides and likely isn't
   worth pursuing.

 * dh actively calls make (for checking override_ targets) without
   depending on make. One might argue that this is a missing dependency,
   but anyone using debhelper for building packages will have make
   anyway due to build-essential.

   As it happens, build-essential also pulls in binutils. The present
   crossbuild-essential-${DEB_HOST_ARCH} approach actually ensures that
   ${DEB_HOST_GNU_TYPE}-strip is available papering over debhelper's
   weak dependency.

   Thus we could reasonably argue that the binutils dependency is
   unnecessary like the make dependency is.

 * If a binary package does not contain any ELF objects, dh_strip does
   nothing successfully. So unless one creates any ELF objects, one
   doesn't need any strip executable. Given that very many packages
   don't contain any ELF objects, we may reasonably argue that the
   dependency should be demoted to Recommends (or simply removed).

   When one does produce ELF objects, the typical way of doing so
   involves using binutils. So one will have binutils installed anyway
   in relevant cases. It's a bit like lvm2's fsadm integrating with
   e2fsprogs and being able to call resize2fs. It doesn't warrant a
   dependency on e2fsprogs either.

 * When dh_strip uses ${DEB_TARGET_GNU_TYPE}-strip, the necessary
   dependency becomes inexpressible.

Thus I believe that the binutils dependency is none of sufficient,
necessary, warranted or correctly expressible. I suggest that you simply
drop it.

Helmut

Reply via email to