X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=debhelper.pod;h=e840d31f0b054af86814282daa87c1d6dffab12d;hb=22644829621e3613ac87a51e1ccac021a096dbc6;hp=d6ecac7f89e9d43c723692652e2edfe75b84c722;hpb=2486063234469e39cce67055c5bd0644213724cf;p=debhelper.git diff --git a/debhelper.pod b/debhelper.pod index d6ecac7..e840d31 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,10 +50,12 @@ 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 @@ -58,7 +63,8 @@ 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", +exist, where "arch" is the same as the output of +"dpkg-architecture -qDEB_HOST_ARCH", 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 +72,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 +111,23 @@ 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<--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,7 +158,7 @@ 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. @@ -164,19 +183,20 @@ 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 install -scripts. If you want these automatically generated things included in your -debian install scripts, then you need to add "#DEBHELPER#" to your scripts, -in the place the code should be added. "#DEBHELPER#" will be replaced by -any auto-generated code when you run dh_installdeb. +Some debhelper commands will automatically generate parts of debian +maintainer scripts. If you want these automatically generated things +included in your existing debian maintainer scripts, then you need to add +"#DEBHELPER#" to your scripts, in the place the code should be added. +"#DEBHELPER#" will be replaced by any auto-generated code when you run +dh_installdeb. + +If a script does not exist at all and debhelper needs to add something to +it, then debhelper will create the complete script. -All scripts that automatically generate code in this way let it be disabled -by the -n parameter (see above). +All debhelper commands that automatically generate code in this way let it +be disabled by the -n parameter (see above). Note that the inserted code will be shell code, so you cannot directly use it in a perl script. If you would like to embed it into a perl script, here @@ -227,25 +247,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 @@ -253,6 +281,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: @@ -274,23 +304,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. In particular, the new -dh_installinit feature needs a versioned dependency on sysvinit. +supplement the ${shlibs:Depends} field. =item - @@ -303,6 +333,91 @@ dh_link will correct existing links to conform with policy. =back +=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 fragements will order the +fragements 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 +--srcdir). 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 @@ -316,23 +431,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. - -If you are generating a debian package that has arch-indep and -arch-dependent portions, and you are using dh_movefiles to move the -arch-indep files out of debian/tmp, you need to make sure that dh_movefiles -does this even if only the arch-dependent package is being built (for -ports to other architectures). I handle this in the example rules file -"rules.multi" by calling dh_movefiles in the install target. +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. +debhelper to your Build-Depends line in debian/control. You should +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 (>= 7) =head1 ENVIRONMENT @@ -354,13 +476,11 @@ 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. 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 @@ -375,6 +495,9 @@ tarball that (unwisely) includes CVS directories, you might want to export DH_ALWAYS_EXCLUDE=CVS in debian/rules, to make it take effect wherever your package is built. +Multiple things to exclude can be separated with colons, as in +DH_ALWAYS_EXCLUDE=CVS:.svn + =back =head1 SEE ALSO @@ -385,7 +508,7 @@ your package is built. A set of example debian/rules files that use debhelper. -=item http://kitenet.net/programs/debhelper/ +=item L Debhelper web site.