Provided by: sbuild_0.62.6-1ubuntu2_all bug

NAME

       sbuild - build debian packages from source

SYNOPSIS

       sbuild [-h|--help | -V|--version] [-v|--verbose | -q|--quiet] [-D|--debug] [-A|--arch-all]
       [--archive=archive]  [-d|--dist=distribution]  [-c|--chroot=chroot]  [--arch=architecture]
       [-s|--source] [--force-orig-source] [--make-binNMU=changelog-entry] [--binNMU=NMU-version]
       [--append-to-version=string]    [--add-depends=dependency]    [--add-conflicts=dependency]
       [--add-depends-arch=dependency]          [--add-conflicts-arch=dependency]         [--add-
       depends-indep=dependency] [--add-conflicts-indep=dependency]  [-m|--maintainer=maintainer]
       [-e|--uploader=uploader]    [-k|--keyid=key-id]    [-j|--jobs=n]    [--debbuildopt=option]
       [--debbuildopts=options]     [--dpkg-source-opt=options]      [--dpkg-source-opts=options]
       [-p|--purge=purge-mode]       [--purge-deps=purge-mode]       [--purge-session=purge-mode]
       [-b|--batch] [-n|--nolog] [--run-lintian] [--lintian-opt=options] [--lintian-opts=options]
       [--run-piuparts]             [--piuparts-opt=options]            [--piuparts-opts=options]
       [--piuparts-root-arg=options] [--piuparts-root-args=options] [--pre-build-commands=string]
       [--chroot-setup-commands=string]                        [--chroot-cleanup-commands=string]
       [--post-build-commands=string]                             [--log-external-command-output]
       [--log-external-command-error]  [--setup-hook=hook-script] [--build-dep-resolver=resolver]
       [--resolve-alternatives|--no-resolve-alternatives] [PACKAGE[.dsc]]

DESCRIPTION

       sbuild rebuilds Debian binary packages from the corresponding  Debian  source,  installing
       any  missing  source  dependencies.   The  build  takes  place  in a dedicated clean build
       environment (chroot), rather than on the host system.

       sbuild can fetch the Debian source over  a  network,  or  it  can  use  locally  available
       sources.

       sbuild  is given a packages to process as the argument PACKAGE[.dsc].  This argument is in
       the form of either a debianized package source directory, a source package name along with
       a  version  in  the  form  package_version, or a .dsc file. If no arguments are given, the
       current working directory is passed as an argument.

       For arguments given as source directories, dpkg-source is first run to  produce  a  source
       .dsc  file.  Then, the package is built using the .dsc produced. For arguments in the form
       package_version, apt is used to download the source package. For arguments given as a .dsc
       file,  sbuild builds the source packages directly. For .dsc files in remote locations, the
       source packages are downloaded first, then built.

       It is also possible to run  external  commands  with  sbuild.  See  the  section  EXTERNAL
       COMMANDS for more on this.

       sbuild  mails  the  build  logs  to  a  user.  It is configured by the configuration files
       /etc/sbuild/sbuild.conf  and  ~/.sbuildrc.   An   example   sbuildrc   is   available   in
       /usr/share/doc/sbuild/examples/example.sbuildrc.

       You  can  build  either  using  a  local  package  with  its  .dsc file or a remote one by
       specifying an explicit dpkg version.

       Note: When using schroot (recommended), the chroot having  the  name  (or  alias)  of  the
       specified  distribution  will  be  used;  schroot uses a chroot named $distribution-$arch-
       sbuild, $distribution-sbuild, $distribution-$arch  or  $distribution,  in  that  order  of
       preference.  The -c or --chroot option may be used to override the chroot to be used. When
       configured to use sudo (deprecated), sbuild will look for a symlink to a chroot  with  the
       same  name as the distribution specified.  sbuild will use a symlink to the chroot located
       in  /etc/sbuild/chroot/$distribution,  or  must  be  run  in  a  directory  containing   a
       chroot-$distribution  symlink  to  the  chroot  (not  recommended,  but  done for backward
       compatibility).

OPTIONS

       -h, --help
              Display this manual.

       -V, --version
              Print version information.

       --add-depends=dependency

       --add-conflicts=dependency

       --add-depends-arch=dependency

       --add-conflicts-arch=dependency

       --add-depends-indep=dependency

       --add-conflicts-indep=dependency
              These options add a build dependencies  to  the  source  package  being  built,  in
              addition  to  the  build dependency information specified in debian/control.  These
              dependencies will be concatenated directly to the  Build-Depends,  Build-Conflicts,
              Build-Depends-Arch,  Build-Conflicts-Arch, Build-Depends-Indep and Build-Conflicts-
              Indep dependencies, respectively.  The options may be used any number of  times  to
              add  multiple  dependencies.   The  format  is  identical  to  the  format  used in
              debian/control.

       --arch=architecture
              Build using the architecture specified.  A chroot named  $distribution-$arch-sbuild
              or  $distribution-arch  is  searched  for, in that order of preference.  The chroot
              must be installed and configured appropriately to build as that architecture,  e.g.
              using personality=linux32 to build i386 packages on an amd64 system.

       -A, --arch-all
              Also build Architecture: all packages, i.e. use dpkg-buildpackage -b instead of -B.

       --no-arch-all
              Do  not  build Architecture: all packages, i.e. use dpkg-buildpackage -B instead of
              -b. This option is the opposite of --arch-all.

       -b, --batch
              Operate in batchmode, i.e. write a build-progress file during execution  and  files
              on shutdown to facilitate a clean restart.

       -c, --chroot=chroot
              Use  the  specified  chroot.  If  not  specified,  the  default  is  the  first  of
              $distribution-$arch-sbuild,    $distribution-sbuild,     $distribution-$arch     or
              $distribution that exists.

       -C, --check-depends-algorithm=algorithm
              Selects  the  algorithm  to  check  for  build  dependencies. The default algorithm
              (‘first-only’) just checks  the  first  package,  even  if  there  are  alternative
              dependencies available. The second algorithm (‘alternatives’) also tries to satisfy
              the build dependencies using these alternatives.

       -d, --dist=distribution
              Fetch source packages from specified distribution.

       --archive=archive
              Communicate with specified archive.

       -D, --debug
              Enable debug output.

       --apt-clean
       --no-apt-clean
              Run (or do not run) apt-get  clean  in  the  chroot  before  executing  the  build,
              overriding the default setting.

       --apt-update
       --no-apt-update
              Run  (or  do  not  run)  apt-get  update  in the chroot before executing the build,
              overriding the default setting.

       --apt-upgrade
       --no-apt-upgrade
              Run (or do not run) apt-get upgrade in  the  chroot  before  executing  the  build,
              overriding the default setting.

       --apt-distupgrade
       --no-apt-distupgrade
              Run  (or  do not run) apt-get distupgrade in the chroot before executing the build,
              overriding the default setting.

       -m, --maintainer=maintainer
              Specify the identity to use  for  GPG  signing  packages,  and  also  used  as  the
              maintainer for binary NMUs.  This does not normally require setting (it defaults to
              the uploader).

       -e, --uploader=uploader
              Passed to dpkg-genchanges and is used to set the Changed-by: field in the  .changes
              file(s).

       -k, --keyid=key-id
              Passed  to dpkg-genchanges and is used to set the key to sign the .changes file(s).
              Default is not using any key.

       -j, --jobs=n
              Number of jobs to run simultaneously.  Passed through to dpkg-buildpackage.

       --debbuildopt=option
              Pass the specified option directly to dpkg-buildpackage.

       --debbuildopts=options
              Pass the specified options directly to dpkg-buildpackage.  The  options  should  be
              separated by spaces.  If any options contain spaces, use --debbuildopt instead.

       --dpkg-source-opt=options
              Pass the specified options directly to dpkg-source. This is only used when creating
              a source package from a Debianized source directory.
              NOTE: The '-b' option will always be passed to dpkg-source.

       --dpkg-source-opts=options
              Extra options to be appended to existing options passed to dpkg-source.

       --mail-log-to=email-address
              Send the build log to the specified email  address.   This  overrides  the  $mailto
              configuration option.

       -n, --nolog
              Do  not  create a package log file in the $log_dir directory and no build log file,
              but print everything to stdout. Also do not send any log mails.

       -p, --purge=purge-mode
              purge-mode determines if the  build  directory  will  be  deleted  after  a  build.
              Possible values are always (default), never, and successful.

       --purge-deps=purge-mode
              purge-mode  determines  if  the  build  dependencies will be removed after a build.
              Possible values are always (default), never, and successful.

       --purge-session=purge-mode
              Purge the schroot session following a build.  This is useful  in  conjunction  with
              the  --purge and --purge-deps options when using snapshot chroots, since by default
              the snapshot will be deleted.  Possible values are  always  (default),  never,  and
              successful.

       -s, --source
              Also build source package, i.e. use dpkg-buildpackage without -B.

       --no-source
              Don't build source package, i.e. use dpkg-buildpackage with -B.  This option is the
              opposite of --source.

       --force-orig-source
              When used with in conjunction with -s, this option  forces  the  inclusion  of  the
              orig.tar.gz  file  in the generated .changes file, even in cases where it would not
              normally be included, i.e. use dpkg-buildpackage -sa.

       --use-snapshot
              Installs the latest snapshot gcc compiler from the gcc-snapshot package, and alters
              the build environment to use the snapshot compiler for the build.

       -v, --verbose
              Be verbose, i.e. all information goes to stdout as well as to the log files.

       -q, --quiet
              Be quiet.  This is the opposite of --verbose.

       --make-binNMU=changelog-entry
              With  this  option, sbuild will create a new changelog entry in debian/changelog of
              every package built. The version number will be in the format for binary-only  NMUs
              (see --binNMU); the maintainer is set to the maintainer name configured for sbuild.
              changelog-entry will be used as the changelog  entry  following  “Binary-only  non-
              maintainer  upload for ARCH -- no source changes”. Please note that the versions in
              the PACKAGE_VERSION[.dsc] arguments still have to be the unmodified (non-NMU  ones)
              so that the sources can be found. The version number in log files and mails will be
              modified by sbuild automatically.

       --binNMU=NMU-version
              The version number of the binary NMU.  This should  be  used  in  conjunction  with
              --make-binNMU.   version  is  a  single number for the (+bn) format used for binary
              NMUs.

       --append-to-version=string
              This option is similar to --make-binNMU except that it allows the user  to  specify
              an  arbitrary  string  to be appended to the version number (immediately before the
              '+' in the Debian revision if --make-binNMU is also provided).

       --run-lintian
              Run lintian after a successful build.

       --lintian-opt=options
              Run lintian with the specified options.

       --lintian-opts=options
              Append extra options to existing options passed to lintian.

       --run-piuparts
              Run piuparts after a successful build.

       --piuparts-opt=options
              Run piuparts with the specified options.

       --piuparts-opts=options
              Append extra options to existing options passed to piuparts.

       --piuparts-root-arg=options
              Add an argument that is used to launch  piuparts  as  root.  If  no  arguments  are
              specified, piuparts will be launched via sudo.

       --piuparts-root-args=options
              Add  arguments  that  are  used  to  launch  piuparts  as root. If no arguments are
              specified, piuparts will be launched via sudo.

       --pre-build-commands=string
              Run this command before a build starts. This option can be used multiple  times  to
              add multiple commands.

       --chroot-setup-commands=string
              Run  these  commands when a chroot is setup, before deps are installed. This option
              can be used multiple times to add multiple commands.

       --chroot-cleanup-commands=string
              Run these commands when a chroot is cleaned up, before build directory  is  purged.
              This option can be used multiple times to add multiple commands.

       --post-build-commands=string
              Run  this  command after a successful build. This option can be used multiple times
              to add multiple commands.

       --log-external-command-output
              Write output from external commands to the build log.

       --log-external-command-error
              Write error output from external commands to the build log.

       --setup-hook=hook-script DEPRECATED
              This option is deprecated. Use of this option will add hook-script to the  external
              commands to run via chroot-setup-commands.

       --build-dep-resolver=resolver
              Use  the  specified resolver to handle selecting the build dependencies.  Supported
              resolvers are apt (the default),  aptitude  and  internal  (deprecated).   The  apt
              resolver  is  the  most  appropriate  resolver  for  most  users,  for building for
              unstable, stable and other distributions.  If alternative  build  dependencies  are
              used  (excluding  architecture  restrictions),  only  the first alternative will be
              used; the others will be ignored.  The  aptitude  resolver  is  very  similar,  but
              smarter  and slower, and it will consider all alternatives by default; it is suited
              to more  complex  situations,  such  as  building  packages  for  the  experimental
              distribution,  where  packages  need  installing from multiple suites (unstable and
              experimental).  Due to performance and other issues (bug #139615), aptitude is  not
              recommended  for  use  by  default.   The internal resolver is much older, contains
              several  significant  deficiencies  such  as  not  being  able  to  handle  complex
              alternative  and  virtual  dependencies, and is deprecated.  Like apt, it only uses
              the first alternative build dependency when multiple alternatives exist.  It is not
              recommended for future use, and will be removed in the future.

       --resolve-alternatives
              Allow  the  use  of  alternatives  in  Build-Depends, Build-Depends-Arch and Build-
              Depends-Indep.  This is the default for the aptitude dependency resolver.

       --no-resolve-alternatives
              Do not allow the use  of  alternatives  in  Build-Depends,  Build-Depends-Arch  and
              Build-Depends-Indep.   Note  that alternatives for the same package (e.g. different
              versions) are still allowed.   This  is  the  default  for  the  internal  and  apt
              dependency resolvers.

EXTERNAL COMMANDS

       Support  to  run  external  commands  during  an sbuild run is provided. A set of external
       commands can be run at various stages of a  build.  Providing  commands  to  run  is  done
       through  the  appropriate  options  given  on  the command line and through the use of the
       configuration files. In the configuration file, the list of commands to run are placed  in
       a hash of arrays of arrays of strings corresponding to the commands to run.

       Here's  an  example  of  how  to  edit the configuration files to run "foo" and "bar" with
       arguments before a build starts.

       $external_commands = {
           "pre-build-commands" => [
               ['foo', 'arg1', 'arg2'],
               ['bar', 'arg1', 'arg2', 'arg3'],
           ],
       };

       Hash keys for commands to run at other stages have the same name  as  their  corresponding
       command-line option name without the preceding '--'.

       Here's  an  example  of  how  to  do  the same with the previous example, except using the
       --pre-build-commands option.

       $ sbuild \
             --pre-build-commands='foo arg1 arg2' \
             --pre-build-commands='bar arg1 arg2 arg3'

       Besides running external commands, sbuild can also  detect  the  use  of  certain  percent
       escapes  given  as  arguments. These are used to allow for a command to be supplied with a
       certain argument depending on the escape given.  For example, it could be possible to have
       an external command be given the path to a .changes file.

       Here is a listing of keywords and a description of what it's converted to.

       %%     Used to escape a '%'.

       %d, %SBUILD_DSC
              These escapes are converted to the absolute path to a package's .dsc file.

       %c, %SBUILD_CHANGES
              These  escapes  are  converted  to the absolute path to a package's source .changes
              file.

       Percent escapes are only substituted when an appropriate value is  defined  for  them.  At
       other times, it is left unchanged. For example, a .changes file is only defined at the end
       of a build, so using %c will only be substituted for post-build-commands.

       Here's an example of using an escape to run a program foo on a .changes file after a build
       is done.

       $ sbuild --post-build-commands \
             'foo %SBUILD_CHANGES'

       One  final  note,  external commands are processed in the order they are given.  Also, the
       commands given in a configuration file  are  processed  first,  then  the  commands  given
       through the command line options.

LOCAL ARCHIVE

       The  apt  and aptitude resolvers create a local archive for installing build dependencies.
       This is an internal implementation detail of the build dependency resolver, which  is  not
       user  configurable,  and  is  indended  to be entirely transparent to the user.  The local
       archive exists only transiently during the package build.   It  does  not  persist  across
       builds,  and  it  is only used to store the dummy dependency packages created for a single
       build.

       The dependency resolvers do the following:

       ·      Create a dummy dependency package.  This contains the Build-Depends (and optionally
              Build-Depends-Arch  and  Build-Depends-Indep)  as Depends, and Build-Conflicts (and
              optionally Build-Conflicts-Arch and Build-Conflicts-Indep) as Conflicts.

       ·      Install the dummy dependency package into the local archive,

       ·      Generate the Packages, Sources and Release files.

       ·      Write a sources.list file for the local archive into /etc/apt/sources.list.d.

       ·      Inject the lists directly into /var/lib/apt/lists.  This step is  to  save  running
              updating  all  apt sources which is undesirable during a build; apt and aptitude do
              not support updating a single source at present.

       ·      Regenerate the apt caches to ensure everything is in sync.

       ·      Install the dummy dependency package with apt or aptitude;  the  dummy  package  is
              pulled  from  the local apt archive, while all its dependencies are pulled from the
              regular configured apt sources.

       At the end of the build, the local archive is removed, along with the rest  of  the  build
       tree.

ENVIRONMENT VARIABLES

       The following environment variables are used by sbuild:

       HOME   The home directory of the user.

       LOGNAME
              Used in lockfiles.

FILES

       /etc/sbuild/sbuild.conf
              Configuration,  maintained  by  the  system  administrator.   This  may  be used to
              override the defaults.

       /etc/sbuild/chroot
              Directory containing symbolic links to chroots.  This is only used for sudo  chroot
              access; schroot access uses the schroot chroot configuration.

       ~/.sbuildrc
              User-specific configuration.

       /var/lib/sbuild
              Build trees, archive signing keys, build statistics and lock files.

AUTHORS

       Roman Hodek <Roman.Hodek@informatik.uni-erlangen.de>.

       sbuild  is  based  on  debbuild,  written  by  James Troup <james@nocrew.org> and has been
       modified by
       Ben Collins <bcollins@debian.org>,
       Ryan Murray <rmurray@debian.org>,
       Francesco Paolo Lovergine <frankie@debian.org>,
       Michael Banck <mbanck@debian.org>, and
       Roger Leigh <rleigh@debian.org>

COPYRIGHT

       Copyright © 1998-2000 Roman Hodek <roman@hodek.net>
       Copyright © 1998-1999 James Troup <troup@debian.org>
       Copyright © 2003-2006 Ryan Murray <rmurray@debian.org>
       Copyright © 2001-2003 Rick Younie <younie@debian.org>
       Copyright © 2003-2004 Francesco Paolo Lovergine <frankie@debian.org>
       Copyright © 2005      Michael Banck <mbanck@debian.org>
       Copyright © 2005-2009 Roger Leigh <rleigh@debian.org>

SEE ALSO

       sbuild.conf(5),         sbuild-abort(1),         sbuild-adduser(8),         sbuild-apt(1),
       sbuild-checkpackages(1),  sbuild-createchroot(8),  sbuild-distupgrade(1),  sbuild-hold(1),
       sbuild-setup(7).  sbuild-shell(1),  sbuild-stats(1),  sbuild-unhold(1),  sbuild-update(1),
       sbuild-upgrade(1), schroot(1),