]> git.donarmstrong.com Git - debhelper.git/blobdiff - debhelper.pod
Merge branch 'master' into buildsystems
[debhelper.git] / debhelper.pod
index ad40d71419e0c0a428041d23e53f5e7472de5ca1..cea528367e6c673bab743080fd4002567f540a92 100644 (file)
@@ -17,9 +17,8 @@ policy changes, and packages that use them will require only a rebuild to
 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
@@ -63,8 +62,10 @@ debian/control, debhelper will use debian/foo if no debian/package.foo
 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
@@ -72,6 +73,9 @@ files. Documentation or example files to install, files to move, and so on.
 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.
@@ -108,13 +112,31 @@ 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 independant.
+are not architecture independent.
 
 =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>
@@ -145,13 +167,57 @@ Do not modify postinst/postrm/etc scripts.
 Exclude an item from processing. This option may be used multiple times,
 to exclude more than one thing.
 
-=item B<-A>, B<-all>
+=item B<-A>, B<--all>
 
 Makes files or other items that are specified on the command line take effect
 in ALL packages acted on, not just the first.
 
 =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<--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
@@ -170,9 +236,6 @@ B<-a>, B<-i>, B<-p>, and B<-s> parameters. These parameters are cumulative.
 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
@@ -237,25 +300,33 @@ act on.
 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 4 > debian/compat
+  % echo 7 > debian/compat
 
-These are the available compatablity levels:
+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 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
@@ -263,6 +334,8 @@ This mode is deprecated.
 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:
@@ -284,22 +357,23 @@ Every file in etc/ is automatically flagged as a conffile by dh_installdeb.
 
 =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 -
 
 You are encouraged to put the new ${misc:Depends} into debian/control to
-suppliment the ${shlibs:Depends} field.
+supplement the ${shlibs:Depends} field.
 
 =item -
 
@@ -312,6 +386,93 @@ dh_link will correct existing links to conform with policy.
 
 =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
+
+=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
+
 =back
 
 =head2 Doc directory symlinks
@@ -325,21 +486,30 @@ 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.
 
+=head2 udebs
+
+Debhelper includes support for udebs. To create a udeb with debhelper,
+add "XC-Package-Type: udeb" to the package's stanza in debian/control, and
+build-depend on debhelper (>= 4.2). Debhelper will try to create udebs that
+comply with debian-installer policy, by making the generated package files
+end in ".udeb", not installing any documentation into a udeb, skipping over
+preinst, postrm, prerm, and config scripts, etc.
+
 =head2 Other notes
 
 In general, if any debhelper program needs a directory to exist under
 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
 
@@ -361,13 +531,14 @@ Set to 1 to enable no-act mode.
 
 =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. If you use DH_OPTIONS, be sure to build depend on "debhelper >= 1.1.17" --
-older debhelpers will ignore it and do things you don't want them to. One very
-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.
+Anything in this variable will be prepended to the command line arguments
+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
 
@@ -395,7 +566,7 @@ DH_ALWAYS_EXCLUDE=CVS:.svn
 
 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.