Package: devscripts Version: 2.10.13 Source: devscripts Synopsis: It presently is not possible to use ccache, distcc, or other compiler bootstrappers with debuild in an elegant way.
Rationale: I have been using debuild for quite a while now, mainly because I know that one of its goals is to sanitize the build environment. In any case, I have interest in having it support a ccache or distcc environment as elegantly as possible. What I have done here is provide an additional CLI option that allows the user to prepend another search location to the sanitized ${PATH}. Why I have chosen this route is that it allows the packager to bypass a standard suite of compilers in ${PATH} in favor of aliases, bootstrappers, job distributers, or whatever else anyone can imagine. It's pretty implementation-agnostic. I see this approach to being somewhat cleaner than providing explicit support for ccache or distcc in debuild, as not doing this would require debuild henceforth to follow ccache or distcc's environment variable configuration rules. I'm sure none of you want to track the specifics of their implementation. Plus, this is better than explicitly overriding the ${PATH}, as one can do now to achieve this, because this does not require the end-user to constantly track debuild's implementation nor ${PATH} rules as the Linux FHS changes over time. An example of this use case would be: /opt/build_tools_replacements contains replacement utilities that override or replace make, cc, gcc, g++, ld, etc. These tools are not to be used all the time by all persons for all reasons; hence, they're not being in ${PATH}. debuild --prepend-path /opt/build_tools_replacements This makes it easy to augment debuild's standardized ${PATH} without having to track debuild's internal override of ${PATH} in whatever starts the build. What are your thoughts? I've attached a patch that I made from a SVN checkout of devscripts, and---yes---the patch includes modifications to the manual pages. ;-) Cheers, Matt
Index: debian/changelog =================================================================== --- debian/changelog (revision 902) +++ debian/changelog (working copy) @@ -1,3 +1,10 @@ +devscripts (2.10.13ubuntu1) hardy; urgency=low + + * Allow a user to prepend a location to PATH in debuild for reasons + of elegantly supporting ccache and distcc. + + -- Matt T. Proud <[EMAIL PROTECTED]> Sun, 13 Jan 2008 20:35:05 -0800 + devscripts (2.10.13) unstable; urgency=low * The 'we sponsor Adam for DM' upload Index: scripts/debuild.pl =================================================================== --- scripts/debuild.pl (revision 902) +++ scripts/debuild.pl (working copy) @@ -88,6 +88,9 @@ --set-envvar=<envvar>=<value>, -e<envvar>=<value> Set environment variable <envvar> to <value> + --prepend-path=<value> + Prepend normalized PATH with <value> + -d Skip checking of build dependencies -D Force checking of build dependencies (default) @@ -170,6 +173,7 @@ # Set default values before we start my $preserve_env=0; my %save_vars; +my $prepend_path=''; my $root_command=''; my $run_lintian=1; my $run_linda=0; @@ -529,6 +533,17 @@ $check_dirname_regex = $1; next; } + if ($arg eq '--prepend-path') { + unless (defined ($opt = shift)) { + fatal "--prepend-path requires an argument,\nrun $progname --help for usage information"; + } + $prepend_path = $opt; + next + } + if ($arg =~ /^--prepend-path=(.*)$/) { + $prepend_path = $1; + next; + } if ($arg =~ /^--no-?conf$/) { fatal "$arg is only acceptable as the first command-line option!"; } @@ -576,6 +591,9 @@ } else { $ENV{'PATH'} = "/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11" } +if ($prepend_path ne '') { + $ENV{'PATH'} = join(':', $prepend_path, $ENV{'PATH'}); +} $save_vars{'PATH'}=1; $ENV{'TERM'}='dumb' unless exists $ENV{'TERM'}; Index: scripts/debuild.1 =================================================================== --- scripts/debuild.1 (revision 902) +++ scripts/debuild.1 (working copy) @@ -1,51 +1,51 @@ -.TH DEBUILD 1 "Debian Utilities" "DEBIAN" \" -*- nroff -*- -.SH NAME +.TH "DEBUILD" "1" "Debian Utilities" "DEBIAN" "\"" +.SH "NAME" debuild \- build a Debian package -.SH SYNOPSIS -\fBdebuild\fR [\fIdebuild options\fR] [\fIdpkg-buildpackage options\fR] -[\fB\-\-lintian-opts\fR \fIlintian options\fR] -[\fB\-\-linda-opts\fR \fIlinda options\fR] -.br +.SH "SYNOPSIS" +\fBdebuild\fR [\fIdebuild options\fR] [\fIdpkg\-buildpackage options\fR] +[\fB\-\-lintian\-opts\fR \fIlintian options\fR] +[\fB\-\-linda\-opts\fR \fIlinda options\fR] +.br \fBdebuild\fR [\fIdebuild options\fR] -\fBbinary\fR|\fBbinary-arch\fR|\fBbinary-indep\fR|\fBclean\fR ... -.SH DESCRIPTION +\fBbinary\fR|\fBbinary\-arch\fR|\fBbinary\-indep\fR|\fBclean\fR ... +.SH "DESCRIPTION" \fBdebuild\fR creates all the files necessary for uploading a Debian -package. It first runs \fBdpkg-buildpackage\fR, then runs +package. It first runs \fBdpkg\-buildpackage\fR, then runs \fBlintian\fR and/or \fBlinda\fR on the \fI.changes\fR file created (assuming that \fBlintian\fR and/or \fBlinda\fR is installed), and finally signs the \fI.changes\fR and/or \fI.dsc\fR files as appropriate (using \fBdebsign\fR(1) to do this instead of -\fBdpkg-buildpackage\fR(1) itself; all relevant key-signing options -are passed on). Parameters can be passed to \fBdpkg-buildpackage\fR, +\fBdpkg\-buildpackage\fR(1) itself; all relevant key\-signing options +are passed on). Parameters can be passed to \fBdpkg\-buildpackage\fR, \fBlintian\fR and \fBlinda\fR, where the parameters to the latter are -indicated with the \fB\-\-lintian-opts\fR and \fB\-\-linda-opts\fR +indicated with the \fB\-\-lintian\-opts\fR and \fB\-\-linda\-opts\fR options respectively. The allowable options in this case are -\fB\-\-lintian\fR and \fB\-\-no-lintian\fR to force or skip the +\fB\-\-lintian\fR and \fB\-\-no\-lintian\fR to force or skip the \fBlintian\fR step, respectively, and similarly \fB\-\-linda\fR and -\fB\-\-no-linda\fR for \fBlinda\fR. The default is to run +\fB\-\-no\-linda\fR for \fBlinda\fR. The default is to run \fBlintian\fR but not \fBlinda\fR. There are also various options available for setting and preserving environment variables, as described below in the Environment Variables section. In this method of running \fBdebuild\fR, we also save a build log to the file \fI../<package>_<version>_<arch>.build\fR. -.PP +.PP An alternative way of using \fBdebuild\fR is to use one or more of the -parameters \fBbinary\fR, \fBbinary-arch\fR, \fBbinary-indep\fR and +parameters \fBbinary\fR, \fBbinary\-arch\fR, \fBbinary\-indep\fR and \fBclean\fR, in which case \fBdebuild\fR will attempt to gain root privileges and then run \fIdebian/rules\fR with the given parameters. -A \fB\-\-rootcmd=\fIgain-root-command\fR or -\fB\-r\fIgain-root-command\fR option may be used to specify a method -of gaining root privileges. The \fIgain-root-command\fR is likely to +A \fB\-\-rootcmd=\fIgain\-root\-command\fR or +\fB\-r\fIgain\-root\-command\fR option may be used to specify a method +of gaining root privileges. The \fIgain\-root\-command\fR is likely to be one of \fIfakeroot\fR, \fIsudo\fR or \fIsuper\fR. See below for further discussion of this point. Again, the environment preservation options may be used. In this case, \fBdebuild\fR will also attempt to -run \fBdpkg-checkbuilddeps\fR first; this can be explicitly requested +run \fBdpkg\-checkbuilddeps\fR first; this can be explicitly requested or switched off using the options \fB\-D\fR and \fB\-d\fR respectively. Note also that if either of these or a \fB\-r\fR option is specified in the configuration file option DEBUILD_DPKG_BUILDPACKAGE_OPTS, then it will be recognised even in this method of invocation of \fBdebuild\fR. -.PP +.PP \fBdebuild\fR also reads the \fBdevscripts\fR configuration files as described below. This allows default options to be given. .SH "Directory name checking" @@ -58,73 +58,78 @@ corresponds to the package name. Precisely how it does this is controlled by two configuration file variables DEVSCRIPTS_CHECK_DIRNAME_LEVEL and DEVSCRIPTS_CHECK_DIRNAME_REGEX, and -their corresponding command-line options \fB\-\-check-dirname-level\fR -and \fB\-\-check-dirname-regex\fR. -.PP +their corresponding command\-line options \fB\-\-check\-dirname\-level\fR +and \fB\-\-check\-dirname\-regex\fR. +.PP DEVSCRIPTS_CHECK_DIRNAME_LEVEL can take the following values: -.TP +.TP .B 0 Never check the directory name. -.TP +.TP .B 1 Only check the directory name if we have had to change directory in our search for \fIdebian/changelog\fR. This is the default behaviour. -.TP +.TP .B 2 Always check the directory name. -.PP +.PP The directory name is checked by testing whether the current directory name (as determined by \fBpwd\fR(1)) matches the regex given by the configuration file option DEVSCRIPTS_CHECK_DIRNAME_REGEX or by the -command line option \fB\-\-check-dirname-regex\fR \fIregex\fR. Here +command line option \fB\-\-check\-dirname\-regex\fR \fIregex\fR. Here \fIregex\fR is a Perl regex (see \fBperlre\fR(3perl)), which will be anchored at the beginning and the end. If \fIregex\fR contains a '/', then it must match the full directory path. If not, then it must match the full directory name. If \fIregex\fR contains the string \'PACKAGE', this will be replaced by the source package name, as determined from the changelog. The default value for the regex is: -\'PACKAGE(-.*)?', thus matching directory names such as PACKAGE and -PACKAGE-version. -.SH ENVIRONMENT VARIABLES +\'PACKAGE(\-.*)?', thus matching directory names such as PACKAGE and +PACKAGE\-version. +.SH "ENVIRONMENT VARIABLES" As environment variables can affect the building of a package, often unintentionally, \fBdebuild\fR sanitises the environment by removing all environment variables except for TERM, HOME, LOGNAME, GNUPGHOME, PGPPATH, GPG_AGENT_INFO, FAKEROOTKEY, DEB_* and the locale variables LANG and LC_*. TERM is set to `dumb' if it is unset, and PATH is set to "/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11". -.PP +.PP If a particular environment variable is required to be passed through untouched to the build process, this may be specified by using a -\fB\-\-preserve-envvar\fR \fIenvvar\fR (which can also be written as +\fB\-\-preserve\-envvar\fR \fIenvvar\fR (which can also be written as \fB\-e\fR \fIenvvar\fR option). The environment may be left untouched -by using the \fB\-\-preserve-env\fR option. However, even in this +by using the \fB\-\-preserve\-env\fR option. However, even in this case, the PATH will be set to the sane value described above. The \fBonly\fR way to prevent PATH from being reset is to specify a -\fB\-\-preserve-envvar PATH\fR option. But you are warned that using -programs from non-standard locations can easily result in the package +\fB\-\-preserve\-envvar PATH\fR option. But you are warned that using +programs from non\-standard locations can easily result in the package being broken, as it will not be able to be built on standard systems. -.PP +.PP +If you need to tactically inject an item into PATH, you may use +\fB\-\-prepend\-path\fR \fIpath\fR, as this will prepend a supplemental +location to an otherwise\-pristine path. This is useful in cases where one +wants to use ccache or distcc in conjunction with package building. +.PP It is also possible to avoid having to type something like -\fIFOO\fB=\fIbar \fBdebuild -e \fIFOO\fR by writing \fBdebuild -e -\fIFOO\fB=\fIbar\fR or the long form \fBdebuild --set-envvar +\fIFOO\fB=\fIbar \fBdebuild \-e \fIFOO\fR by writing \fBdebuild \-e +\fIFOO\fB=\fIbar\fR or the long form \fBdebuild \-\-set\-envvar \fIFOO\fB=\fIbar\fR. .SH "SUPERUSER REQUIREMENTS" \fBdebuild\fR needs to be run as superuser to function properly. There are three fundamentally different ways to do this. The first, -and preferable, method is to use some root-gaining command. The best +and preferable, method is to use some root\-gaining command. The best one to use is probably \fBfakeroot\fR(1), since it does not involve granting any genuine privileges. \fBsuper\fR(1) and \fBsudo\fR(1) are also possibilities. If no \fB\-r\fR (or \fB\-\-rootcmd\fR) option is -given (and recall that \fBdpkg-buildpackage\fR also accepts a \fB\-r\fR +given (and recall that \fBdpkg\-buildpackage\fR also accepts a \fB\-r\fR option) and neither of the following methods is used, then \fB\-rfakeroot\fR will silently be assumed. -.PP +.PP The second method is to use some command such as \fBsu\fR(1) to become root, and then to do everything as root. Note, though, that \fBlintian\fR will abort if it is run as root or setuid root; this can -be overcome using the \fB\-\-allow-root\fR option of \fBlintian\fR if +be overcome using the \fB\-\-allow\-root\fR option of \fBlintian\fR if you know what you are doing. -.PP +.PP The third possible method is to have \fBdebuild\fR installed as setuid root. This is not the default method, and will have to be installed as such by the system administrator. It must also be realised that @@ -137,142 +142,145 @@ option involving multiple copies of \fBdebuild\fR, or the use of programs such as \fBsudo\fR or \fBsuper\fR to grant root privileges to users selectively. If the sysadmin wishes to do this, she should use -the \fBdpkg-statoverride\fR program to change the permissions of +the \fBdpkg\-statoverride\fR program to change the permissions of \fI/usr/bin/debuild\fR. This will ensure that these permissions are preserved across upgrades. -.SH HOOKS +.SH "HOOKS" \fBdebuild\fR supports a number of hooks when running \fBdpkg\-buildpackage\fR. The available hooks are as follows: -.TP -dpkg-buildpackage-hook -Run before dpkg-buildpackage begins by calling dpkg-checkbuilddeps. -.TP -clean-hook -Run before dpkg-buildpackage runs debian/rules clean to clean the -source tree. (Run even if the tree is not being cleaned because -nc +.TP +dpkg\-buildpackage\-hook +Run before dpkg\-buildpackage begins by calling dpkg\-checkbuilddeps. +.TP +clean\-hook +Run before dpkg\-buildpackage runs debian/rules clean to clean the +source tree. (Run even if the tree is not being cleaned because \-nc is used.) -.TP -dpkg-source-hook -Run after cleaning the tree and before running dpkg-source. (Run even -if dpkg-source is not being called because -b or -B is used.) -.TP -dpkg-build-hook -Run after dpkg-source and before calling debian/rules build. (Run -even if this is a source-only build, so debian/rules build is not +.TP +dpkg\-source\-hook +Run after cleaning the tree and before running dpkg\-source. (Run even +if dpkg\-source is not being called because \-b or \-B is used.) +.TP +dpkg\-build\-hook +Run after dpkg\-source and before calling debian/rules build. (Run +even if this is a source\-only build, so debian/rules build is not being called.) -.TP -dpkg-binary-hook -Run between debian/rules build and debian/rules binary(-arch). Run +.TP +dpkg\-binary\-hook +Run between debian/rules build and debian/rules binary(\-arch). Run ONLY if a binary package is being built. -.TP -dpkg-genchanges-hook +.TP +dpkg\-genchanges\-hook Run after the binary package is built and before calling -dpkg-genchanges. -.TP -final-clean-hook -Run after dpkg-genchanges and before the final debian/rules clean. -(Run even if we are not cleaning the tree post-build, which is the +dpkg\-genchanges. +.TP +final\-clean\-hook +Run after dpkg\-genchanges and before the final debian/rules clean. +(Run even if we are not cleaning the tree post\-build, which is the default.) -.TP -lintian-hook +.TP +lintian\-hook Run (once) before calling lintian and/or linda. (Run even if we are not calling either.) -.TP -signing-hook +.TP +signing\-hook Run after calling lintian and/or linda before any signing takes place. (Run even if we are not signing anything.) -.TP -post-dpkg-buildpackage-hook +.TP +post\-dpkg\-buildpackage\-hook Run after everything has finished. -.PP +.PP A hook command can be specified either in the configuration file as, for example, DEBUILD_SIGNING_HOOK='foo' (note the hyphens change into -underscores!) or as a command line option \fB\-\-signing\-hook-foo\fR. +underscores!) or as a command line option \fB\-\-signing\-hook\-foo\fR. The command will have certain percent substitutions made on it: %% will be replaced by a single % sign, %p will be replaced by the package name, %v by the package version number, %a will be 1 if the immediately following action is to be performed and 0 if not (for -example, in the dpkg-source hook, %a will become 1 if dpkg-source is +example, in the dpkg\-source hook, %a will become 1 if dpkg\-source is to be run and 0 if not). Then it will be handed to the shell to deal with, so it can include redirections and stuff. For example, to only -run the dpkg-source hook if dpkg-source is to be run, the hook could -be something like: "if [ %a -eq 1 ]; then ...; fi". -.PP +run the dpkg\-source hook if dpkg\-source is to be run, the hook could +be something like: "if [ %a \-eq 1 ]; then ...; fi". +.PP \fBPlease take care with hooks\fR, as misuse of them can lead to packages which FTBFS (fail to build from source). They can be useful for taking snapshots of things or the like. -.PP -Finally, only dpkg-buildpackage-hook and the hooks from lintian-hook -onwards can be used if \fBdpkg-cross\fR is installed. (This is +.PP +Finally, only dpkg\-buildpackage\-hook and the hooks from lintian\-hook +onwards can be used if \fBdpkg\-cross\fR is installed. (This is because internally, \fBdebuild\fR reimplements \fBdpkg\-buildpackage\fR, but it does not attempt to reimplement the \fBdpkg\-cross\fR replacement of this script.) .SH "OPTIONS" For details, see above. -.TP -.B \-\-no-conf, \-\-noconf +.TP +.B \-\-no\-conf, \-\-noconf Do not read any configuration files. This can only be used as the -first option given on the command-line. -.TP -.BI \-\-rootcmd= "gain-root-command, " \-r gain-root-command +first option given on the command\-line. +.TP +.BI \-\-rootcmd= "gain\-root\-command, " \-r gain\-root\-command Command to gain root (or fake root) privileges. -.TP +.TP .B \-\-preserve\-env Do not clean the environment, except for PATH. -.TP +.TP .BI \-\-preserve\-envvar= "var, " \-e var Do not clean the \fIvar\fR variable from the environment. -.TP +.TP .BI \-\-set\-envvar= var = "value, " \-e var = value Set the environment variable \fIvar\fR to \fIvalue\fR and do not remove it from the environment. -.TP +.TP +.BI \-\-prepend\-path= path +Prepend \fIpath\fR to PATH. +.TP .B \-\-lintian -Run \fBlintian\fR after \fBdpkg-buildpackage\fR. This is the default +Run \fBlintian\fR after \fBdpkg\-buildpackage\fR. This is the default behaviour, and it overrides any configuration file directive to the contrary. -.TP +.TP .B \-\-no\-lintian -Do not run \fBlintian\fR after \fBdpkg-buildpackage\fR. -.TP +Do not run \fBlintian\fR after \fBdpkg\-buildpackage\fR. +.TP .B \-\-linda -Run \fBlinda\fR after \fBdpkg-buildpackage\fR. -.TP +Run \fBlinda\fR after \fBdpkg\-buildpackage\fR. +.TP .B \-\-no\-linda -Do not run \fBlinda\fR after \fBdpkg-buildpackage\fR. This is the +Do not run \fBlinda\fR after \fBdpkg\-buildpackage\fR. This is the default behaviour. -.TP +.TP .B \-\-no\-tgz\-check -Even if we're running \fBdpkg-buildpackage\fR and the version number -has a Debian revision, do not check that the .orig.tar.gz file or .orig +Even if we're running \fBdpkg\-buildpackage\fR and the version number +has a Debian revision, do not check that the .orig.ta r.gz file or .orig directory exists before starting the build. -.TP +.TP .B \-\-tgz\-check -If we're running \fBdpkg-buildpackage\fR and the version number has a -Debian revision, check that the .orig.tar.gz file or .orig directory +If we're running \fBdpkg\-buildpackage\fR and the version number has a +Debian revision, check that the .orig.ta r.gz file or .orig directory exists before starting the build. This is the default behaviour. -.TP +.TP \fB\-\-\fIfoo\fB\-hook\fR=\fIhook\fR Set a hook as described above. If \fIhook\fR is blank, this unsets the hook. -.TP +.TP \fB\-\-clear\-hooks\fR Clears all hooks. They may be reinstated by later command line options. -.TP -\fB\-\-check-dirname-level\fR \fIN\fR +.TP +\fB\-\-check\-dirname\-level\fR \fIN\fR See the above section "Directory name checking" for an explanation of this option. -.TP -\fB\-\-check-dirname-regex\fR \fIregex\fR +.TP +\fB\-\-check\-dirname\-regex\fR \fIregex\fR See the above section "Directory name checking" for an explanation of this option. -.TP +.TP \fB\-d\fR -Do not run \fBdpkg-checkbuilddeps\fR to check build dependencies. -.TP +Do not run \fBdpkg\-checkbuilddeps\fR to check build dependencies. +.TP \fB\-D\fR -Run \fBdpkg-checkbuilddeps\fR to check build dependencies. +Run \fBdpkg\-checkbuilddeps\fR to check build dependencies. .SH "CONFIGURATION VARIABLES" The two configuration files \fI/etc/devscripts.conf\fR and \fI~/.devscripts\fR are sourced by a shell in that order to set @@ -281,136 +289,136 @@ \fB\-\-no\-conf\fR option can be used to prevent reading these files. Environment variable settings are ignored when these configuration files are read. The currently recognised variables are: -.TP +.TP .B DEBUILD_PRESERVE_ENV If this is set to \fIyes\fR, then it is the same as the \fB\-\-preserve\-env\fR command line parameter being used. -.TP +.TP .B DEBUILD_PRESERVE_ENVVARS Which environment variables to preserve. This should be a -comma-separated list of variables. This corresponds to using possibly +comma\-separated list of variables. This corresponds to using possibly multiple \fB\-\-preserve\-envvar\fR or \fB\-e\fR options. -.TP +.TP .BI DEBUILD_SET_ENVVAR_ var = value This corresponds to \fB\-\-set\-envvar=\fIvar\fB=\fIvalue\fR. -.TP +.TP .B DEBUILD_ROOTCMD Setting this variable to \fIprog\fR is the equivalent of \fB\-r\fIprog\fR. -.TP +.TP .B DEBUILD_TGZ_CHECK Setting this variable to \fIno\fR is the same as the \fB\-\-no\-tgz\-check\fR command line option. -.TP +.TP .B DEBUILD_DPKG_BUILDPACKAGE_OPTS These are options which should be passed to the invocation of -\fBdpkg-buildpackage\fR. They are given before any command-line +\fBdpkg\-buildpackage\fR. They are given before any command\-line options. Due to issues of shell quoting, if a word containing spaces is required as a single option, extra quotes will be required. For example, to ensure that your own GPG key is always used, even for sponsored uploads, the config file might contain the line: -.IP -.nf -DEBUILD_DPKG_BUILDPACKAGE_OPTS="-k'Julian Gilbey <[EMAIL PROTECTED]>' -sa" -.fi -.IP +.IP +.nf +DEBUILD_DPKG_BUILDPACKAGE_OPTS="\-k'Julian Gilbey <[EMAIL PROTECTED]>' \-sa" +.fi +.IP which gives precisely two options. Without the extra single quotes, -\fBdpkg-buildpackage\fR would reasonably complain that \fIGilbey\fR is +\fBdpkg\-buildpackage\fR would reasonably complain that \fIGilbey\fR is an unrecognised option (it doesn't start with a `\-' sign). -.IP +.IP Also, if this option contains any \fB\-r\fR, \fB\-d\fR or \fB\-D\fR options, these will always be taken account of by \fBdebuild\fR. Note that a \fB\-r\fR option in this variable will override the setting in DEBUILD_ROOTCMD. -.TP +.TP \fBDEBUILD_\fIFOO\fB_HOOK The hook variable for the \fIfoo\fR hook. See the section on hooks above for more details. By default, this is empty. -.TP +.TP .B DEBUILD_LINTIAN Should we run \fBlintian\fR? If this is set to \fIno\fR, then \fBlintian\fR will not be run. -.TP +.TP .B DEBUILD_LINTIAN_OPTS These are options which should be passed to the invocation of -\fBlintian\fR. They are given before any command-line options, and +\fBlintian\fR. They are given before any command\-line options, and the usage of this variable is as described for the \fBDEBUILD_DPKG_BUILDPACKAGE_OPTS\fR variable. -.TP +.TP .B DEBUILD_LINDA Should we run \fBlinda\fR? If this is set to \fIyes\fR, then \fBlinda\fR will be run. -.TP +.TP .B DEBUILD_LINDA_OPTS These are options which should be passed to the invocation of -\fBlinda\fR. They are given before any command-line options, and +\fBlinda\fR. They are given before any command\-line options, and the usage of this variable is as described for the \fBDEBUILD_DPKG_BUILDPACKAGE_OPTS\fR variable. -.TP +.TP .BR DEVSCRIPTS_CHECK_DIRNAME_LEVEL ", " DEVSCRIPTS_CHECK_DIRNAME_REGEX See the above section "Directory name checking" for an explanation of -these variables. Note that these are package-wide configuration +these variables. Note that these are package\-wide configuration variables, and will therefore affect all \fBdevscripts\fR scripts which check their value, as described in their respective manpages and in \fBdevscripts.conf\fR(5). -.SH EXAMPLES +.SH "EXAMPLES" To build your own package, simply run \fBdebuild\fR from inside the -source tree. \fBdpkg-buildpackage\fR(1) options may be given on the +source tree. \fBdpkg\-buildpackage\fR(1) options may be given on the command line. -.PP +.PP The typical command line options to build only the binary package(s) -without signing the .changes file (or the non-existent .dsc file): -.IP -.nf -debuild -i -us -uc -b -.fi -.PP -Change the "-b" to "-S" to build only a source package. -.PP +without signing the .changes file (or the non\-existent .dsc file): +.IP +.nf +debuild \-i \-us \-uc \-b +.fi +.PP +Change the "\-b" to "\-S" to build only a source package. +.PP An example using both \fBlintian\fR and \fBlinda\fR to check the resulting packages, and also passing options to them both: -.IP -.nf -debuild --linda -i -tc --lintian-opts -i --linda-opts -i -.fi -.PP +.IP +.nf +debuild \-\-linda \-i \-tc \-\-lintian\-opts \-i \-\-linda\-opts \-i +.fi +.PP Note the order of options here: the \fBdebuild\fR options come first, -then the \fBdpkg-buildpackage\fR ones, then finally the checker +then the \fBdpkg\-buildpackage\fR ones, then finally the checker options. (And \fBlintian\fR is called by default.) If you find -yourself using the same \fBdpkg-buildpackage\fR options repeatedly, +yourself using the same \fBdpkg\-buildpackage\fR options repeatedly, consider using the DEBUILD_DPKG_BUILDPACKAGE_OPTS configuration file option as described above. -.PP +.PP To build a package for a sponsored upload, given -\fIfoobar_1.0-1.dsc\fR and the respective source files, run something +\fIfoobar_1.0\-1.dsc\fR and the respective source files, run something like the following commands: -.IP -.nf -dpkg-source -x foobar_1.0-1.dsc -cd foobar-1.0 -debuild -k0x12345678 -.fi -.PP +.IP +.nf +dpkg\-source \-x foobar_1.0\-1.dsc +cd foobar\-1.0 +debuild \-k0x12345678 +.fi +.PP where 0x12345678 is replaced by your GPG key ID or other key identifier such as your email address. Again, you could also use the DEBUILD_DPKG_BUILDPACKAGE_OPTS configuration file option as described above to avoid having to type the \fB\-k\fR option each time you do a sponsored upload. .SH "SEE ALSO" -.BR dpkg-buildpackage (1), -.BR dpkg-checkbuilddeps (1), +.BR dpkg\-buildpackage (1), +.BR dpkg\-checkbuilddeps (1), .BR debsign (1), .BR fakeroot (1), .BR lintian (1), .BR linda (1), .BR chmod (1), -.BR dpkg-statoverride (8), +.BR dpkg\-statoverride (8), .BR su (1), .BR sudo (1), .BR super (1) and .BR devscripts.conf (5). -.SH AUTHOR +.SH "AUTHOR" The original \fBdebuild\fR program was written by Christoph Lameter <[EMAIL PROTECTED]>. The current version has been written by Julian Gilbey <[EMAIL PROTECTED]>.