debhelper is a collection of programs that can be used in a debian/rules file to automate common tasks related to building binary debian packages. Programs are included to install various files into your package, compress files, fix file permissions, integrate your package with the debian menu system, etc. This will be of use only to debian developers or others who wish to build debian packages.

Debhelper's git repository is now located at: git://git.debian.org/git/debhelper/debhelper.git

I posted a good overview of debhelper's history in my blog. Here is the thread that started it all.

Colin graphs debhelper statistics here.

News

debhelper 7.9.3 released with these changes

  • perl_makemaker: import compat(). Closes: #587654
Posted Wednesday afternoon, June 30th, 2010

debhelper 7.9.2 released with these changes

  • In v8 mode, stop passing packlist=0 in perl_makemaker buildsystem, since perl_build is tried first. Avoids the makemaker warning message introduced by the fix to #527990.
Posted late Tuesday afternoon, June 29th, 2010

debhelper 7.9.1 released with these changes

  • Started work on Debhelper v8. It is still experimental, and more changes are planned for that mode.
  • dh_installman: Support .so links relative to the current section.
  • dh_installman: Avoid converting .so links to symlinks if the link target is not present in the same binary package, on advice of Colin Watson. (To support eventual so search paths.)
  • Add deprecation warning for dh_clean -k.
  • dh_testversion: Removed this deprecated and unused command.
  • debian/compress files are now deprecated. Seems only one package (genesis) still uses them.
  • dh_fixperms: Tighten globs used to find library .so files, avoiding incorrectly matching things like "foo.sources". Closes: #583328
  • dh_installchangelogs: Support packages placing their changelog in a file with a name like HISTORY. Closes: #582749
  • dh_installchangelogs: Also look for changelog files in doc(s) subdirectories. Closes: #521258
  • In v8 mode, do not allow directly passing unknown options to debhelper commands. (Unknown options in DH_OPTIONS still only result in warnings.)
  • In v8 mode, dh_makeshlibs will run dpkg-gensymbols on all shared libraries it generates shlibs files for. This means that -X can be used to exclude libraries from processing by dpkg-gensymbols. It also means that libraries in unusual locations, where dpkg-gensymbols does not itself normally look, will be passed to it, a behavior change which may break some packages. Closes: #557603
  • In v8 mode, dh expects the sequence to run is always its first parameter. (Ie, use "dh $@ --foo", not "dh --foo $@") This avoids ambiguities when parsing options to be passed on to debhelper commands. (See #570039)
  • In v8 mode, prefer the perl_build buildsystem over perl_makemaker. Closes: #578805
  • postrm-init: Avoid calling the error handler if update-rc.d fails. Closes: #586065
Posted at lunch time on Wednesday, June 16th, 2010

Adding stuff

The tricky thing about maintaining debhelper is that everyone would like to see a program added to it to handle some special-purpose thing, and this is rarely a good idea, since it just serves to increase debhelper's command count, and thus its learning curve, while making me responsible for maintaining support for said obscure thing.

My first rule of thumb is that at least ten packages need to be obvious benefactors of a feature or command before it's added to debhelper. That's an easy bar; after that I have to do some thinking and made the hard call.

TODO: discuss wishlisted commands here