X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=debhelper.pod;h=cea528367e6c673bab743080fd4002567f540a92;hb=8890fd28cdca58fc15306e34d022f312a2708ca6;hp=a6ec5daa5511a6f10280385b6f7da8c351795fb2;hpb=282b7d92a9da026036b5342eae51e6c243306d35;p=debhelper.git diff --git a/debhelper.pod b/debhelper.pod index a6ec5da..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 @@ -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. @@ -115,6 +119,24 @@ are not architecture independent. 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/ @@ -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, 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 @@ -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 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 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 @@ -263,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: @@ -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 @@ -340,15 +501,15 @@ 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 @@ -371,10 +532,13 @@ 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. 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 @@ -402,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.