X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=debhelper.pod;h=cea528367e6c673bab743080fd4002567f540a92;hb=8890fd28cdca58fc15306e34d022f312a2708ca6;hp=56eb531af204f620109bba8c68fe16792b513050;hpb=dfc48628ab06f010bb18454d5d8e8701b1bcf58a;p=debhelper.git diff --git a/debhelper.pod b/debhelper.pod index 56eb531..cea5283 100644 --- a/debhelper.pod +++ b/debhelper.pod @@ -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 +commands in sequence, or use L to automate this process. Examples of +rules files that use debhelper are in F 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 @@ -38,6 +37,10 @@ pages for additional documentation. =back +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 +work like the other programs described on this page. + =head1 DEBHELPER CONFIG FILES Many debhelper commands make use of files in F to control what they @@ -47,18 +50,22 @@ be used to configure the behavior of specific debhelper commands. These files are typically named debian/package.foo (where "package" of course, is replaced with the package that is being acted on). -For example, -dh_installdocs uses files named debian/package.docs to list the documentation -files it will install. See the man pages of individual commands for details -about the names and formats of the files they use. +For example, dh_installdocs uses files named debian/package.docs to list +the documentation files it will install. See the man pages of individual +commands for details about the names and formats of the files they use. +Generally, these files will list files to act on, one file per line. Some +programs in debhelper use pairs of files and destinations or slightly more +complicated formats. Note that if a package is the first (or only) binary package listed in 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 @@ -66,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. @@ -102,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, B<--no-package=>I 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 + +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, B<--tmpdir=>I Use "tmpdir" for package build directory. The default is debian/ @@ -139,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, B<--buildsystem=>I + +Force use of the specified I, instead of trying to auto-select +one which might be applicable for the package. + +=item B<-D>I, B<--sourcedirectory=>I + +Assume that the original package source tree is at the specified +I rather than the top level directory of the Debian +source package tree. + +=item B<-B>[I], B<--builddirectory>=[I] + +Enable out of source building and use the specified I as the build +directory. If I 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 @@ -164,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 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 @@ -231,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 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/ for all other packages listed in the control file. + This mode is deprecated. =item V2 @@ -257,6 +334,8 @@ This mode is deprecated. In this mode, debhelper will consistently use debian/ 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: @@ -278,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 - @@ -306,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 @@ -319,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//DEBIAN/ before trying to put files there, dh_installmenu knows you need a -debian//usr/lib/menu/ before installing the menu files, etc. +debian//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 @@ -355,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 @@ -389,7 +566,7 @@ DH_ALWAYS_EXCLUDE=CVS:.svn A set of example debian/rules files that use debhelper. -=item L +=item L Debhelper web site.