comply with the new policy.
A typical debian/rules file that uses debhelper will call several debhelper
-commands in sequence. Debhelper commands are all named with a "dh_" prefix.
-Examples of rules files that use debhelper are in
-F</usr/share/doc/debhelper/examples/>
+commands in sequence, or use L<dh(1)> to automate this process. Examples of
+rules files that use debhelper are in F</usr/share/doc/debhelper/examples/>
To create a new debian package using debhelper, you can just copy one of
the sample rules files and edit it by hand. Or you can try the dh-make
=head1 DEBHELPER COMMANDS
-Here is the complete list of available debhelper commands. See their man
+Here is the list of debhelper commands you can use. See their man
pages for additional documentation.
=over 4
=back
+=head2 Deprecated Commands
+
+A few debhelper commands are deprecated and should not be used.
+
+=over 4
+
+#LIST_DEPRECATED#
+
+=back
+
+=head2 Other Commands
+
If a program's name starts with "dh_", and the program is not on the above
-list, then it is not part of the debhelper package, but it should still
+lists, then it is not part of the debhelper package, but it should still
work like the other programs described on this page.
=head1 DEBHELPER CONFIG FILES
file can be found.
In some rare cases, you may want to have different versions of these files
-for different architectures. If files named debian/package.foo.arch
-exist, where "arch" is the same as the output of "dpkg --print-architecture",
+for different architectures or OSes. If files named debian/package.foo.ARCH
+or debian/package.foo.OS exist, where "ARCH" and "OS" are the same as the
+output of "dpkg-architecture -qDEB_HOST_ARCH" /
+"dpkg-architecture -qDEB_HOST_ARCH_OS",
then they will be used in preference to other, more general files.
In many cases, these config files are used to specify various types of
When appropriate, in cases like these, you can use standard shell wildcard
characters ('?' and '*' and '[..]' character classes) in the files.
+You can also put comments in these files; lines beginning with "#" are
+ignored.
+
=head1 SHARED DEBHELPER OPTIONS
The following command line options are supported by all debhelper programs.
=item B<-a>, B<--arch>
-Act on all architecture dependent packages.
+Act on architecture dependent packages that should be built for the
+build architecture.
=item B<-i>, B<--indep>
=item B<-s>, B<--same-arch>
-This is a smarter version of the -a flag, that is used in some rare
-circumstances. It understands that if the control file lists "Architecture: i386"
-for the package, the package should not be acted on on other architectures. So
-this flag makes the command act on all "Architecture: any" packages, as well
-as on any packages that have the current architecture explicitly specified.
-Contrast to the -a flag, which makes the command work on all packages that
-are not architecture independent.
+This used to be a smarter version of the -a flag, but the -a flag is now
+equally smart.
=item B<-N>I<package>, B<--no-package=>I<package>
Do not act on the specified package even if an -a, -i, or -p option lists
the package as one that should be acted on.
+=item B<--remaining-packages>
+
+Do not act on the packages which have already been acted on by this debhelper
+command earlier (i.e. if the command is present in the package debhelper log).
+For example, if you need to call the command with special options only for a
+couple of binary packages, pass this option to the last call of the command to
+process the rest of packages with default settings.
+
+=item B<--ignore=>I<file>
+
+Ignore the specified file. This can be used if debian/ contains a debhelper
+config file that a debhelper command should not act on. Note that
+debian/compat, debian/control, and debian/changelog can't be ignored, but
+then, there should never be a reason to ignore those files.
+
+For example, if upstream ships a debian/init that you don't want
+dh_installinit to install, use --ignore=debian/init
+
=item B<-P>I<tmpdir>, B<--tmpdir=>I<tmpdir>
Use "tmpdir" for package build directory. The default is debian/<package>
=back
+=head1 BUILD SYSTEM OPTIONS
+
+The following command line options are supported by all of the dh_auto_*
+debhelper programs. These programs support a variety of build systems,
+and normally heuristically determine which to use, and how to use them.
+You can use these command line options to override the default behavior.
+
+=over 4
+
+=item B<-S>I<buildsystem>, B<--buildsystem=>I<buildsystem>
+
+Force use of the specified I<buildsystem>, instead of trying to auto-select
+one which might be applicable for the package.
+
+=item B<-D>I<directory>, B<--sourcedirectory=>I<directory>
+
+Assume that the original package source tree is at the specified
+I<directory> rather than the top level directory of the Debian
+source package tree.
+
+=item B<-B>[I<directory>], B<--builddirectory>=[I<directory>]
+
+Enable out of source building and use the specified I<directory> as the build
+directory. If I<directory> parameter is omitted, a default build directory
+will chosen.
+
+If this option is not specified, building will be done in source by default
+unless the build system requires or prefers out of source tree building.
+In such a case, the default build directory will be used even if
+L<--builddirectory> is not specified.
+
+If the build system prefers out of source tree building but still
+allows in source building, the latter can be re-enabled by passing a build
+directory path that is the same as the source directory path.
+
+=item B<--max-parallel>I<=maximum>
+
+By default, the DEB_BUILD_OPTIONS environment variable can be used to
+enable parallel building, when supported by the build system.
+
+This option allows controlling how many parallel jobs can be used in a
+build. If set to 1, concurrent builds are disabled -- do this if
+the package build is known not to work in parallel. If the package build
+is known to only work with certian levels of concurrency, you can set this
+to the maximum level that is known to work, or that you wish to support.
+
+=item B<--list>, B<-l>
+
+List all build systems supported by debhelper on this system. The list
+includes both default and third party build systems (marked as such). Also
+shows which build system would be automatically selected, or which one
+is manually specified with the I<--buildsystem> option.
+
+=back
+
=head1 NOTES
=head2 Multiple binary package support
If none are given, debhelper programs default to acting on all packages listed
in the control file.
-See F</usr/share/doc/debhelper/examples/rules.multi> for an example of how to
-use this in a package that generates multiple binary packages.
-
=head2 Automatic generation of debian install scripts
Some debhelper commands will automatically generate parts of debian
From time to time, major non-backwards-compatible changes need to be made
to debhelper, to keep it clean and well-designed as needs change and its
author gains more experience. To prevent such major changes from breaking
-existing packages, the concept of debhelper compatability levels was
-introduced. You tell debhelper which compatability level it should use, and
+existing packages, the concept of debhelper compatibility levels was
+introduced. You tell debhelper which compatibility level it should use, and
it modifies its behavior in various ways.
-You tell debhelper what compatability level to use by writing a number to
-debian/compat. For example, to turn on V4 mode:
+Tell debhelper what compatibility level to use by writing a number to
+debian/compat. For example, to turn on V7 mode:
+
+ % echo 7 > debian/compat
- % echo 4 > debian/compat
+Unless otherwise indicated, all debhelper documentation assumes that you
+are using the most recent compatibility level, and in most cases does not
+indicate if the behavior is different in an earlier compatibility level, so
+if you are not using the most recent compatibility level, you're advised to
+read below for notes about what is different in earlier compatibility
+levels.
-These are the available compatablity levels:
+These are the available compatibility levels:
=over 4
=item V1
-This is the original debhelper compatability level, and so it is the default
+This is the original debhelper compatibility level, and so it is the default
one. In this mode, debhelper will use debian/tmp as the package tree
directory for the first binary package listed in the control file, while using
debian/<package> for all other packages listed in the control file.
+
This mode is deprecated.
=item V2
In this mode, debhelper will consistently use debian/<package>
as the package tree directory for every package that is built.
+This mode is deprecated.
+
=item V3
This mode works like V2, with the following additions:
=back
+This mode is deprecated.
+
=item V4
-This is the reccommended mode of operation. It does everything V3 does,
-plus:
+Changes from V3 are:
=over 8
=item -
dh_makeshlibs -V will not include the debian part of the version number in
-the generated dependancy line in the shlibs file.
+the generated dependency line in the shlibs file.
=item -
=back
+This mode is deprecated.
+
+=item V5
+
+Changes from V4 are:
+
+=over 8
+
+=item -
+
+Comments are ignored in debhelper config files.
+
+=item -
+
+dh_strip --dbg-package now specifies the name of a package to put debugging
+symbols in, not the packages to take the symbols from.
+
+=item -
+
+dh_installdocs skips installing empty files.
+
+=item -
+
+dh_install errors out if wildcards expand to nothing.
+
+=back
+
+=item V6
+
+Changes from V5 are:
+
+=over 8
+
+=item -
+
+Commands that generate maintainer script fragments will order the
+fragments in reverse order for the prerm and postrm scripts.
+
+=item -
+
+dh_installwm will install a slave manpage link for x-window-manager.1.gz,
+if it sees the man page in usr/share/man/man1 in the package build
+directory.
+
+=item -
+
+dh_builddeb did not previously delete everything matching
+DH_ALWAYS_EXCLUDE, if it was set to a list of things to exclude, such as
+"CVS:.svn:.git". Now it does.
+
+=item -
+
+dh_installman allows overwriting existing man pages in the package build
+directory. In previous compatibility levels it silently refuses to do this.
+
=back
-=head2 Doc directory symlinks
+=item V7
+
+This is the recommended mode of operation.
+
+Changes from V6 are:
+
+=over 8
+
+=item -
+
+dh_install, will fall back to looking for files in debian/tmp if it doesn't
+find them in the current directory (or wherever you tell it look using
+--sourcedir). This allows dh_install to interoperate with dh_auto_install,
+which installs to debian/tmp, without needing any special parameters.
+
+=item -
+
+dh_clean will read debian/clean and delete files listed there.
+
+=item -
+
+dh_clean will delete toplevel *-stamp files.
+
+=item -
+
+dh_installchangelogs will guess at what file is the upstream changelog if
+none is specified.
+
+=back
-Sometimes it is useful to make a package not contain a /usr/share/doc/package
-directory at all, instead placing just a dangling symlink in the binary
-package, that points to some other doc directory. Policy says this is ok if
-your package depends on the package whose doc directory it uses. To
-accomplish this, just don't tell debhelper to install any documentation
-files into the package, and use dh_link to set up the symlink (or do it by
-hand), and debhelper should do the right thing: notice it is a dangling
-symlink and not try to install a copyright file or changelog.
+=back
=head2 udebs
debian/, it will create it. I haven't bothered to document this in all the
man pages, but for example, dh_installdeb knows to make debian/<package>/DEBIAN/
before trying to put files there, dh_installmenu knows you need a
-debian/<package>/usr/lib/menu/ before installing the menu files, etc.
+debian/<package>/usr/share/menu/ before installing the menu files, etc.
Once your package uses debhelper to build, be sure to add
debhelper to your Build-Depends line in debian/control. You should
-build-depend on a verson of debhelper equal to (or greater than) the
-debhelper compatability level your package uses. So if your package used
-compatability level 4:
+build-depend on a version of debhelper equal to (or greater than) the
+debhelper compatibility level your package uses. So if your package used
+compatibility level 7:
- Build-Depends: debhelper (>= 4)
+ Build-Depends: debhelper (>= 7)
=head1 ENVIRONMENT
=item DH_OPTIONS
Anything in this variable will be prepended to the command line arguments
-of all debhelper commands. This is useful in some situations, for example,
-if you need to pass -p to all debhelper commands that will be run. One good
-way to set DH_OPTIONS is by using "Target-specific Variable Values" in your
-debian/rules file. See the make documentation for details on doing this.
+of all debhelper commands. Command-specific options will be ignored by
+commands that do not support them.
+
+This is useful in some situations, for example, if you need to pass -p to
+all debhelper commands that will be run. One good way to set DH_OPTIONS is
+by using "Target-specific Variable Values" in your debian/rules file. See
+the make documentation for details on doing this.
=item DH_ALWAYS_EXCLUDE
A set of example debian/rules files that use debhelper.
-=item L<http://kitenet.net/programs/debhelper/>
+=item L<http://kitenet.net/~joey/code/debhelper/>
Debhelper web site.