summaryrefslogtreecommitdiffstats
path: root/man/dpkg-buildpackage.pod
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--man/dpkg-buildpackage.pod919
1 files changed, 919 insertions, 0 deletions
diff --git a/man/dpkg-buildpackage.pod b/man/dpkg-buildpackage.pod
new file mode 100644
index 0000000..a145d12
--- /dev/null
+++ b/man/dpkg-buildpackage.pod
@@ -0,0 +1,919 @@
+# dpkg manual page - dpkg-buildpackage(1)
+#
+# Copyright © 1995-1996 Ian Jackson
+# Copyright © 2000 Wichert Akkerman <wakkerma@debian.org>
+# Copyright © 2007-2008 Frank Lichtenheld <djpig@debian.org>
+# Copyright © 2008-2015 Guillem Jover <guillem@debian.org>
+# Copyright © 2008-2012 Raphaël Hertzog <hertzog@debian.org>
+#
+# This is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <https://www.gnu.org/licenses/>.
+
+=encoding utf8
+
+=head1 NAME
+
+dpkg-buildpackage - build binary or source packages from sources
+
+=head1 SYNOPSIS
+
+B<dpkg-buildpackage>
+[I<option>...]
+
+=head1 DESCRIPTION
+
+B<dpkg-buildpackage>
+is a program that automates the process of building a Debian package.
+It
+consists of the following steps:
+
+=over
+
+=item B<1.>
+
+It runs the B<preinit> hook before reading any source file.
+It prepares the build environment by setting various environment
+variables (see B<ENVIRONMENT>), runs the B<init> hook, and calls
+B<dpkg-source --before-build> (unless B<-T> or B<--target>
+has been used).
+
+=item B<2.>
+
+It checks that the build-dependencies and build-conflicts
+are satisfied (unless B<-d> or B<--no-check-builddeps> is specified).
+
+=item B<3.>
+
+If one or more specific targets have been selected with the B<-T> or
+B<--target> option, it calls those targets and stops here.
+Otherwise it
+runs the B<preclean> hook and calls B<fakeroot debian/rules clean> to
+clean the build-tree (unless B<-nc> or B<--no-pre-clean>
+is specified).
+
+=item B<4.>
+
+It runs the B<source> hook and calls B<dpkg-source -b> to generate
+the source package (if a B<source> build has been requested with
+B<--build> or equivalent options).
+
+=item B<5.>
+
+It runs the B<build> hook and calls B<debian/rules> I<build-target>,
+then runs the B<binary> hook followed by B<fakeroot debian/rules>
+I<binary-target> (unless a source-only build has been requested with
+B<--build=source> or equivalent options).
+Note that I<build-target> and I<binary-target> are either B<build>
+and B<binary> (default case, or if an B<any> and B<all> build
+has been requested with B<--build> or equivalent options), or
+B<build-arch> and B<binary-arch> (if an B<any> and not B<all>
+build has been requested with B<--build> or equivalent options), or
+B<build-indep> and B<binary-indep> (if an B<all> and not B<any>
+build has been requested with B<--build> or equivalent options).
+
+=item B<6.>
+
+It runs the B<buildinfo>
+hook and calls B<dpkg-genbuildinfo> to generate a B<.buildinfo> file.
+Several B<dpkg-buildpackage> options are forwarded to
+B<dpkg-genbuildinfo>.
+
+=item B<7.>
+
+It runs the B<changes> hook and calls B<dpkg-genchanges> to
+generate a B<.changes> file.
+The name of the B<.changes> file will depend on the type of build and
+will be as specific as necessary but not more; the name will be:
+
+=over
+
+=item I<source-name>B<_>I<binary-version>B<_>I<arch>B<.changes>
+
+for a build that includes B<any>
+
+=item I<source-name>B<_>I<binary-version>B<_>B<all.changes>
+
+otherwise for a build that includes B<all>
+
+=item I<source-name>B<_>I<source-version>B<_>B<source.changes>.
+
+otherwise for a build that includes B<source>
+
+=back
+
+Many B<dpkg-buildpackage> options are forwarded to
+B<dpkg-genchanges>.
+
+=item B<8.>
+
+It runs the B<postclean> hook and if B<-tc> or B<--post-clean>
+is specified, it will call B<fakeroot debian/rules clean> again.
+
+=item B<9.>
+
+It calls B<dpkg-source --after-build>.
+
+=item B<10.>
+
+It runs the B<check> hook and calls a package checker for the
+B<.changes> file (if a command is specified in B<DEB_CHECK_COMMAND> or
+with B<--check-command>).
+
+=item B<11.>
+
+It runs the B<sign> hook and signs using the OpenPGP backend (as long as it
+is not an UNRELEASED build, or B<--no-sign> is specified) to sign the
+B<.dsc> file (if any, unless
+B<-us> or B<--unsigned-source> is specified), the B<.buildinfo>
+file (unless B<-ui>, B<--unsigned-buildinfo>,
+B<-uc> or B<--unsigned-changes> is specified) and
+the B<.changes> file (unless B<-uc> or B<--unsigned-changes>
+is specified).
+
+=item B<12.>
+
+It runs the B<done> hook.
+
+=back
+
+=head1 OPTIONS
+
+All long options can be specified both on the command line and in the
+B<dpkg-buildpackage> system and user configuration files.
+Each line in the configuration file is either an option (exactly the same
+as the command line option but without leading hyphens) or a comment (if
+it starts with a ‘B<#>’).
+
+=over
+
+=item B<--build=>I<type>
+
+Specifies the build I<type> from a comma-separated list of components
+(since dpkg 1.18.5).
+All the specified components get combined to select the single build type
+to use, which implies a single build run with a single F<.changes> file
+generated.
+Passed to B<dpkg-genchanges>.
+
+The allowed values are:
+
+=over
+
+=item B<source>
+
+Builds the source package.
+
+B<Note>: When using this value standalone and if what you want is simply to
+(re-)build the source package from a clean source tree, using
+B<dpkg-source> directly is always a better option as it does not
+require any build dependencies to be installed which are otherwise
+needed to be able to call the B<clean> target.
+
+=item B<any>
+
+Builds the architecture specific binary packages.
+
+=item B<all>
+
+Builds the architecture independent binary packages.
+
+=item B<binary>
+
+Builds the architecture specific and independent binary packages.
+This is an alias for B<any,all>.
+
+=item B<full>
+
+Builds everything.
+This is an alias for B<source,any,all>, and the same as the default
+case when no build option is specified.
+
+=back
+
+=item B<-g>
+
+Equivalent to B<--build=source,all> (since dpkg 1.17.11).
+
+=item B<-G>
+
+Equivalent to B<--build=source,any> (since dpkg 1.17.11).
+
+=item B<-b>
+
+Equivalent to B<--build=binary> or B<--build=any,all>.
+
+=item B<-B>
+
+Equivalent to B<--build=any>.
+
+=item B<-A>
+
+Equivalent to B<--build=all>.
+
+=item B<-S>
+
+Equivalent to B<--build=source>.
+
+=item B<-F>
+
+Equivalent to B<--build=full>, B<--build=source,binary> or
+B<--build=source,any,all> (since dpkg 1.15.8).
+
+=item B<--target=>I<target>[,...]
+
+=item B<--target> I<target>[,...]
+
+=item B<-T>, B<--rules-target=>I<target>[,...]
+
+Calls B<debian/rules> I<target> once per target specified, after
+having setup the build environment (except for calling
+B<dpkg-source --before-build>), and stops the package build process
+here (since dpkg 1.15.0, long option since dpkg 1.18.8, multi-target
+support since dpkg 1.18.16).
+If B<--as-root> is also given, then the command is executed
+as root (see B<--root-command>).
+Note that known targets that are required to
+be run as root do not need this option (i.e. the B<clean>, B<binary>,
+B<binary-arch> and B<binary-indep> targets).
+
+=item B<--as-root>
+
+Only meaningful together with B<--target> (since dpkg 1.15.0).
+Requires that the target be run with root rights.
+
+=item B<-si>
+
+=item B<-sa>
+
+=item B<-sd>
+
+=item B<-v>I<version>
+
+=item B<-C>I<changes-description>
+
+=item B<-m>I<maintainer-address>
+
+=item B<-e>I<maintainer-address>
+
+Passed unchanged to B<dpkg-genchanges>.
+See its manual page.
+
+=item B<--build-by=>I<maintainer-address>
+
+=item B<--source-by=>I<maintainer-address> (since dpkg 1.21.10)
+
+Pass as B<-m> to B<dpkg-genchanges>.
+See its manual page.
+
+=item B<--release-by=>I<maintainer-address>
+
+=item B<--changed-by=>I<maintainer-address> (since dpkg 1.21.10)
+
+Pass as B<-e> to B<dpkg-genchanges>.
+See its manual page.
+
+=item B<-a>, B<--host-arch> I<architecture>
+
+Specify the Debian architecture we build for (long option since dpkg 1.17.17).
+The architecture of the
+machine we build on is determined automatically, and is also the default
+for the host machine.
+
+=item B<-t>, B<--host-type> I<gnu-system-type>
+
+Specify the GNU system type we build for (long option since dpkg 1.17.17).
+It can be used in place
+of B<--host-arch> or as a complement to override the default GNU system type
+of the host Debian architecture.
+
+=item B<--target-arch> I<architecture>
+
+Specify the Debian architecture the binaries built will build for
+(since dpkg 1.17.17).
+The default value is the host machine.
+
+=item B<--target-type> I<gnu-system-type>
+
+Specify the GNU system type the binaries built will build for
+(since dpkg 1.17.17).
+It can be
+used in place of B<--target-arch> or as a complement to override the
+default GNU system type of the target Debian architecture.
+
+=item B<-P>, B<--build-profiles=>I<profile>[B<,>...]
+
+Specify the profile(s) we build, as a comma-separated list (since dpkg 1.17.2,
+long option since dpkg 1.18.8).
+The default
+behavior is to build for no specific profile.
+Also sets them (as a space
+separated list) as the B<DEB_BUILD_PROFILES> environment variable which
+allows, for example, B<debian/rules> files to use this information for
+conditional builds.
+
+=item B<-j>, B<--jobs>[=I<jobs>|B<auto>]
+
+Specifies the number of jobs allowed to be run simultaneously
+(since dpkg 1.14.7, long option since dpkg 1.18.8).
+The number of jobs matching the number of online processors if B<auto> is
+specified (since dpkg 1.17.10), or unlimited number if I<jobs> is not
+specified.
+The default behavior is B<auto> (since dpkg 1.18.11) in non-forced mode
+(since dpkg 1.21.10), and as such it is always safer to use with any
+package including those that are not parallel-build safe.
+Setting the number of jobs to B<1> will restore serial execution.
+
+Will add B<parallel=>I<jobs> or B<parallel> to the B<DEB_BUILD_OPTIONS>
+environment variable which allows debian/rules files to opt-in to use this
+information for their own purposes.
+The I<jobs> value will override the B<parallel=>I<jobs> or
+B<parallel> option in the B<DEB_BUILD_OPTIONS> environment variable.
+Note that the B<auto> value will get replaced by the actual number of
+currently active processors, and as such will not get propagated to any
+child process.
+If the number of online processors cannot be inferred then
+the code will fallback to using serial execution (since dpkg 1.18.15),
+although this should only happen on exotic and unsupported systems.
+
+=item B<-J>, B<--jobs-try>[=I<jobs>|B<auto>]
+
+This option (since dpkg 1.18.2, long option since dpkg 1.18.8) is equivalent
+to the B<-j> above.
+
+Since the behavior for B<-j> changed in dpkg 1.21.10 to the opt-in mode,
+you can use this option instead if you need to guarantee semantics across
+dpkg release series.
+
+=item B<--jobs-force>[=I<jobs>|B<auto>]
+
+This option (since dpkg 1.21.10) is equivalent to the B<--jobs> option
+except that it will enable forced parallel mode, by adding the B<make> B<-j>
+option with the computed number of parallel jobs to the B<MAKEFLAGS>
+environment variable.
+
+This should cause all subsequent make invocations to inherit the option,
+thus forcing the parallel setting on the packaging (and possibly the
+upstream build system if that uses L<make(1)>) regardless of their support
+for parallel builds, which might cause build failures.
+
+B<Note>: Any Makefile that is not parallel-safe should be considered to be buggy.
+These should either be made parallel-safe, or marked as not being safe with
+the L<make(1)> B<.NOTPARALLEL> target.
+
+=item B<-D>, B<--check-builddeps>
+
+Check build dependencies and conflicts; abort if unsatisfied (long option
+since dpkg 1.18.8).
+This is the default behavior.
+
+=item B<-d>, B<--no-check-builddeps>
+
+Do not check build dependencies and conflicts (long option since dpkg 1.18.8).
+
+=item B<--ignore-builtin-builddeps>
+
+Do not check built-in build dependencies and conflicts (since dpkg 1.18.2).
+These are the distribution specific implicit build dependencies usually
+required in a build environment, the so called Build-Essential package set.
+
+=item B<--rules-requires-root>
+
+Do not honor the B<Rules-Requires-Root> field, falling back to its
+legacy default value (since dpkg 1.19.1).
+
+=item B<-nc>, B<--no-pre-clean>
+
+Do not clean the source tree before building (long option since dpkg 1.18.8).
+Implies B<-b> if nothing else has been selected among B<-F>,
+B<-g>, B<-G>, B<-B>, B<-A> or B<-S>.
+Implies B<-d> with B<-S> (since dpkg 1.18.0).
+
+=item B<--pre-clean>
+
+Clean the source tree before building (since dpkg 1.18.8).
+This is the default behavior.
+
+=item B<-tc>, B<--post-clean>
+
+Clean the source tree (using
+I<gain-root-command>
+B<debian/rules clean>)
+after the package has been built (long option since dpkg 1.18.8).
+
+=item B<--no-post-clean>
+
+Do not clean the source tree after the package has been built
+(since dpkg 1.19.1).
+This is the default behavior.
+
+=item B<--sanitize-env>
+
+Sanitize the build environment (since dpkg 1.20.0).
+This will reset or remove environment variables, umask, and any other process
+attributes that might otherwise adversely affect the build of packages.
+Because the official entry point to build packages is B<debian/rules>,
+packages cannot rely on these settings being in place, and thus should work
+even when they are not.
+What to sanitize is vendor specific.
+
+=item B<-r>, B<--root-command=>I<gain-root-command>
+
+When
+B<dpkg-buildpackage>
+needs to execute part of the build process as root, it prefixes the
+command it executes with
+I<gain-root-command>
+if one has been specified (long option since dpkg 1.18.8).
+Otherwise, if none has been specified,
+B<fakeroot> will be used by default, if the command is present.
+I<gain-root-command>
+should start with the name of a program on the
+B<PATH>
+and will get as arguments the name of the real command to run and the
+arguments it should take.
+I<gain-root-command>
+can include parameters (they must be space-separated) but no shell
+metacharacters.
+I<gain-root-command>
+might typically be
+B<fakeroot>, B<sudo>, B<super> or B<really>.
+B<su>
+is not suitable, since it can only invoke the user's shell with
+B<-c>
+instead of passing arguments individually to the command to be run.
+
+=item B<-R>, B<--rules-file=>I<rules-file>
+
+Building a Debian package usually involves invoking
+B<debian/rules>
+as a command with several standard parameters (since dpkg 1.14.17,
+long option since dpkg 1.18.8).
+With this option it's
+possible to use another program invocation to build the package (it can
+include space separated parameters).
+Alternatively it can be used to execute the standard rules file with
+another make program (for example by using
+B</usr/local/bin/make -f debian/rules>
+as I<rules-file>).
+
+=item B<--check-command=>I<check-command>
+
+Command used to check the B<.changes> file itself and any artifact built
+referenced in the file (since dpkg 1.17.6).
+The command should take the B<.changes> pathname
+as an argument.
+This command will usually be B<lintian>.
+
+=item B<--check-option=>I<opt>
+
+Pass option I<opt> to the I<check-command> specified with
+B<DEB_CHECK_COMMAND> or B<--check-command> (since dpkg 1.17.6).
+Can be used multiple times.
+
+=item B<--hook->I<hook-name>B<=>I<hook-command>
+
+Set the specified shell code I<hook-command> as the hook I<hook-name>,
+which will run at the times specified in the run steps (since dpkg 1.17.6).
+The hooks will
+always be executed even if the following action is not performed (except
+for the B<binary> hook).
+All the hooks will run in the unpacked source directory.
+
+Some hooks can receive addition information through environment variables
+(since dpkg 1.22.0).
+All hooks get the hook name in the B<DPKG_BUILDPACKAGE_HOOK_NAME> environment
+variable (since dpkg 1.22.0).
+
+B<Note>: Hooks can affect the build process, and cause build failures if
+their commands fail, so watch out for unintended consequences.
+
+The current I<hook-name> supported are:
+
+=over
+
+=item B<preinit>
+
+=item B<init>
+
+=item B<preclean>
+
+=item B<source>
+
+Gets B<DPKG_BUILDPACKAGE_HOOK_SOURCE_OPTIONS> with the space-separated lists
+of options that will passed to the B<dpkg-source> call.
+
+=item B<build>
+
+Gets B<DPKG_BUILDPACKAGE_HOOK_BUILD_TARGET> with the name of the
+B<debian/rules> build target called, but only if called.
+
+=item B<binary>
+
+Gets B<DPKG_BUILDPACKAGE_HOOK_BINARY_TARGET> with the name of the
+B<debian/rules> binary target called, but only if called.
+
+=item B<buildinfo>
+
+Gets B<DPKG_BUILDPACKAGE_HOOK_BUILDINFO_OPTIONS> with the space-separated lists
+of options that will passed to the B<dpkg-genbuildinfo> call.
+
+=item B<changes>
+
+Gets B<DPKG_BUILDPACKAGE_HOOK_CHANGES_OPTIONS> with the space-separated lists
+of options that will passed to the B<dpkg-genchanges> call.
+
+=item B<postclean>
+
+=item B<check>
+
+Gets B<DPKG_BUILDPACKAGE_HOOK_CHECK_OPTIONS> with the space-separated lists
+of options that will passed to the check command call.
+
+=item B<sign>
+
+=item B<done>
+
+=back
+
+The I<hook-command> supports the following substitution format string,
+which will get applied to it before execution:
+
+=over
+
+=item B<%%>
+
+A single % character.
+
+=item B<%a>
+
+A boolean value (0 or 1), representing whether the following action is
+being performed.
+
+=item B<%p>
+
+The source package name.
+
+=item B<%v>
+
+The source package version.
+
+=item B<%s>
+
+The source package version (without the epoch).
+
+=item B<%u>
+
+The upstream version.
+
+=back
+
+=item B<--buildinfo-file=>I<filename>
+
+Set the I<filename> for the generated B<.buildinfo> file (since dpkg 1.21.0).
+
+=item B<--buildinfo-option=>I<opt>
+
+Pass option I<opt> to B<dpkg-genbuildinfo> (since dpkg 1.18.11).
+Can be used multiple times.
+
+=item B<--sign-backend=>I<sign-backend>
+
+Specify an OpenPGP backend interface to use when invoking the I<sign-command>
+(since dpkg 1.21.10).
+
+The default is B<auto>, where the best current backend available will be used.
+The specific OpenPGP backends supported in order of preference are:
+
+=over 4
+
+=item B<sop>
+
+(any conforming Stateless OpenPGP implementation)
+
+=item B<sq>
+
+(from Sequoia-PGP)
+
+=item B<gpg>
+
+(from GnuPG)
+
+=back
+
+=item B<-p>, B<--sign-command=>I<sign-command>
+
+When B<dpkg-buildpackage> needs to execute an OpenPGP backend command to
+sign a source control (B<.dsc>) file, a B<.buildinfo> file or a B<.changes>
+file it will run
+I<sign-command> (searching the B<PATH> if necessary) instead of the
+default or auto-detected backend command (long option since dpkg 1.18.8).
+I<sign-command> will get all the backend specific arguments according to
+the B<--sign-backend> selected.
+I<sign-command> should not contain spaces or any other shell metacharacters.
+
+=item B<-k>, B<--sign-keyid=>I<key-id>
+
+=item B<--sign-key=>I<key-id>
+
+Specify an OpenPGP key-ID (either a fingerprint or a user-ID) for the
+secret key to use when signing packages (B<--sign-key> since dpkg 1.18.8,
+B<--sign-keyid> since dpkg 1.21.10).
+
+=item B<--sign-keyfile=>I<key-file>
+
+Specify an OpenPGP I<key-file> containing the secret key to use when signing
+packages (since dpkg 1.21.10).
+
+B<Note>: For security reasons the I<key-file> is best kept locked with a
+password.
+
+=item B<-us>, B<--unsigned-source>
+
+Do not sign the source package (long option since dpkg 1.18.8).
+
+=item B<-ui>, B<--unsigned-buildinfo>
+
+Do not sign the B<.buildinfo> file (since dpkg 1.18.19).
+
+=item B<-uc>, B<--unsigned-changes>
+
+Do not sign the B<.buildinfo> and B<.changes> files
+(long option since dpkg 1.18.8).
+
+=item B<--no-sign>
+
+Do not sign any file, this includes the source package, the B<.buildinfo>
+file and the B<.changes> file (since dpkg 1.18.20).
+
+=item B<--force-sign>
+
+Force the signing of the resulting files (since dpkg 1.17.0), regardless of
+B<-us>, B<--unsigned-source>,
+B<-ui>, B<--unsigned-buildinfo>,
+B<-uc>, B<--unsigned-changes>
+or other internal heuristics.
+
+=item B<-sn>
+
+=item B<-ss>
+
+=item B<-sA>
+
+=item B<-sk>
+
+=item B<-su>
+
+=item B<-sr>
+
+=item B<-sK>
+
+=item B<-sU>
+
+=item B<-sR>
+
+=item B<-i>, B<--diff-ignore>[=I<regex>]
+
+=item B<-I>, B<--tar-ignore>[=I<pattern>]
+
+=item B<-z>, B<--compression-level=>I<level>
+
+=item B<-Z>, B<--compression=>I<compressor>
+
+Passed unchanged to B<dpkg-source>.
+See its manual page.
+
+=item B<--source-option=>I<opt>
+
+Pass option I<opt> to B<dpkg-source> (since dpkg 1.15.6).
+Can be used multiple times.
+
+=item B<--changes-file=>I<filename>
+
+Set the I<filename> for the generated B<.changes> file (since dpkg 1.21.0).
+
+=item B<--changes-option=>I<opt>
+
+Pass option I<opt> to B<dpkg-genchanges> (since dpkg 1.15.6).
+Can be used multiple times.
+
+=item B<--admindir=>I<dir>
+
+=item B<--admindir> I<dir>
+
+Change the location of the B<dpkg> database (since dpkg 1.14.0).
+The default location is I<%ADMINDIR%>.
+
+=item B<-?>, B<--help>
+
+Show the usage message and exit.
+
+=item B<--version>
+
+Show the version and exit.
+
+=back
+
+=head1 ENVIRONMENT
+
+=head2 External environment
+
+=over
+
+=item B<DEB_CHECK_COMMAND>
+
+If set, it will be used as the command to check the B<.changes> file
+(since dpkg 1.17.6).
+Overridden by the B<--check-command> option.
+
+=item B<DEB_SIGN_KEYID>
+
+If set, it will be used to sign the B<.changes>, B<.buildinfo> and B<.dsc>
+files (since dpkg 1.17.2).
+Overridden by the B<--sign-key> option.
+
+=item B<DEB_SIGN_KEYFILE>
+
+If set, it will be used to sign the B<.changes>, B<.buildinfo> and B<.dsc>
+files (since dpkg 1.21.10).
+Overridden by the B<--sign-keyfile> option.
+
+=item B<DEB_BUILD_OPTIONS>
+
+If set, it will contain a space-separated list of options that affect
+the behavior of some dpkg tools involved in package building,
+and might affect the package build process if the code in F<debian/rules>
+honors them.
+
+The following are the options known and supported by dpkg tools,
+other options honored by F<debian/rules> might be defined by distribution
+specific policies.
+
+=over
+
+=item B<parallel=>I<N>
+
+The F<debian/rules> in the packaging might use this option to set up
+the build process to use I<N> parallel jobs.
+It is overridden by the B<--jobs> and B<--jobs-force> options.
+
+=item B<nocheck>
+
+B<dpkg-buildpackage> will ignore the B<DEB_CHECK_COMMAND> variable.
+The F<debian/rules> in the packaging is not expected to run test suites
+during the build.
+
+=item B<noopt>
+
+If F<debian/rules> calls B<dpkg-buildflags> to set up the build flags,
+those will be set to not enable any optimizations.
+
+=item B<nostrip>
+
+The F<debian/rules> in the packaging should ensure that objects do not get
+the debugging information stripped.
+If F<debian/rules> includes the B<mk/buildtools.mk> make fragment the
+B<STRIP> make variable will respect this option.
+
+=item B<terse>
+
+B<dpkg-buildpackage> will append the B<--no-print-directory> L<make(1)>
+flag to the B<MAKEFLAGS> environment variable.
+The F<debian/rules> in the packaging should reduce verbosity, while not
+being completely quiet.
+
+=back
+
+=item B<DEB_BUILD_PROFILES>
+
+If set, it will be used as the active build profile(s) for the package
+being built (since dpkg 1.17.2).
+It is a space separated list of profile names.
+Overridden by the B<-P> option.
+
+=item B<DPKG_COLORS>
+
+Sets the color mode (since dpkg 1.18.5).
+The currently accepted values are: B<auto> (default), B<always> and
+B<never>.
+
+=item B<DPKG_NLS>
+
+If set, it will be used to decide whether to activate Native Language Support,
+also known as internationalization (or i18n) support (since dpkg 1.19.0).
+The accepted values are: B<0> and B<1> (default).
+
+=back
+
+=head2 Internal environment
+
+Even if B<dpkg-buildpackage> exports some variables, B<debian/rules>
+should not rely on their presence and should instead use the
+respective interface to retrieve the needed values, because that
+file is the main entry point to build packages and running it
+standalone should be supported.
+
+=over
+
+=item B<DEB_BUILD_*>
+
+=item B<DEB_HOST_*>
+
+=item B<DEB_TARGET_*>
+
+B<dpkg-architecture> is called with the B<-a> and B<-t>
+parameters forwarded.
+Any variable that is output by its B<-s>
+option is integrated in the build environment.
+
+=item B<DEB_RULES_REQUIRES_ROOT>
+
+This variable is set to the value obtained from the B<Rules-Requires-Root>
+field, the dpkg-build-api level or from the command-line.
+When set, it will be a valid value for the B<Rules-Requires-Root> field.
+It is used to notify B<debian/rules> whether the B<rootless-builds.txt>
+specification is supported.
+
+=item B<DEB_GAIN_ROOT_CMD>
+
+This variable is set to I<gain-root-command> when the field
+B<Rules-Requires-Root> is set to a value different to B<no> and
+B<binary-targets>.
+
+=item B<SOURCE_DATE_EPOCH>
+
+This variable is set to the Unix timestamp since the epoch of the
+latest entry in I<debian/changelog>, if it is not already defined.
+
+=back
+
+=head1 FILES
+
+=over
+
+=item I<%PKGCONFDIR%/buildpackage.conf>
+
+System wide configuration file
+
+=item I<$XDG_CONFIG_HOME/dpkg/buildpackage.conf> or
+
+=item I<$HOME/.config/dpkg/buildpackage.conf>
+
+User configuration file.
+
+=back
+
+=head1 NOTES
+
+=head2 Compiler flags are no longer exported
+
+Between dpkg 1.14.17 and 1.16.1, B<dpkg-buildpackage>
+exported compiler flags (B<CFLAGS>, B<CXXFLAGS>, B<FFLAGS>,
+B<CPPFLAGS> and B<LDFLAGS>) with values as returned
+by B<dpkg-buildflags>.
+This is no longer the case.
+
+=head2 Default build targets
+
+B<dpkg-buildpackage> is using the B<build-arch> and
+B<build-indep> targets since dpkg 1.16.2.
+Those targets are thus mandatory.
+But to avoid breakages of existing packages, and ease
+the transition, if the source package does not build both architecture
+independent and dependent binary packages (since dpkg 1.18.8) it will
+fallback to use the B<build> target if B<make -f debian/rules -qn>
+I<build-target> returns 2 as exit code.
+
+=head1 SECURITY
+
+Building binary or source packages should only be performed over trusted
+source data.
+
+=head1 BUGS
+
+It should be possible to specify spaces and shell metacharacters
+and initial arguments for
+I<gain-root-command> and I<sign-command>.
+
+=head1 SEE ALSO
+
+I<%PKGDOCDIR%/spec/rootless-builds.txt>,
+L<dpkg-source(1)>,
+L<dpkg-architecture(1)>,
+L<dpkg-buildflags(1)>,
+L<dpkg-genbuildinfo(1)>,
+L<dpkg-genchanges(1)>,
+L<fakeroot(1)>,
+L<lintian(1)>,
+L<https://datatracker.ietf.org/doc/draft-dkg-openpgp-stateless-cli/>,
+L<sq(1)>,
+L<gpg(1)>.