# gbp-buildpackage

## Name

gbp-buildpackage -- Build Debian packages from a Git repository

## Synopsis

gbp buildpackage [`--git-[no-]ignore-new`] [`--git-tag`] [`--git-verbose`] [`--git-color=``[auto|on|off]`] [`--git-color-scheme`=`COLOR_SCHEME`] [`--git-notify=``[auto|on|off]`] [`--git-upstream-branch=``TREEISH`] [`--git-debian-branch=``BRANCH_NAME`] [`--git-ignore-branch`] [`--git-[no-]submodules`] [`--git-builder=``BUILD_CMD`] [`--git-cleaner=``CLEAN_CMD`] [`--git-[no-]pbuilder`] [`--git-[no-]qemubuilder`] [`--git-dist=``DIST`] [`--git-arch=``ARCH`] [`--git-[no-]pbuilder-autoconf`] [`--git-pbuilder-options`=`PBUILDER_OPTIONS`] [`--git-[no-]sign-tags`] [`--git-keyid=``GPG-KEYID`] [`--git-posttag=``COMMAND`] [`--git-postbuild=``COMMAND`] [`--git-postexport=``COMMAND`] [`--git-prebuild=``COMMAND`] [`--git-[no-]hooks`] [`--git-debian-tag=``tag-format`] [`--git-upstream-tag=``tag-format`] [`--git-debian-tag-msg=``tag-msg-format`] [`--git-force-create`] [`--git-no-create-orig`] [`--git-upstream-tree=``[TAG|BRANCH|TREEISH]`] [`--git-tarball-dir=``DIRECTORY`] [`--git-compression=``TYPE`] [`--git-compression-level=``LEVEL`] [`--git-export-dir=``DIRECTORY`] [`--git-export=``TREEISH`] [`--git-[no-]pristine-tar`] [`--git-[no-]pristine-tar-commit`] [`--git-[no-]-purge`] [`--git-dont-purge`] [`--git-tag-only`] [`--git-retag`] [`OPTION_PASSED_TO_BUILD_CMD`...]

## DESCRIPTION

gbp buildpackage is used to build Debian source and .deb packages from a Git repository.

gbp buildpackage will, in order:

- Verify that it is being executed from the proper location.

- Verify that the repository doesn't contain any uncommitted source changes.

- Verify that it is being executed from the correct branch.

- (Optionally) run a clean command specified with `--git-cleaner`.

- (Optionally) export the source tree to a separate build area.

- Build an orig tarball if it doesn't exist. Optionally using pristine-tar.

- (Optionally) call a pre build hook.

- Call debuild(1) or Cowbuilder (via `--git-pbuilder`) or the application specified via `--git-builder` passing along all arguments given to gbp buildpackage on the command line that don't start with --git-.

- (Optionally) tag the tree after a successful build.

- (Optionally) call a post build hook - e.g. to run lintian.

- (Optionally) call a post tag hook - e.g. to push the results to a remote repository after creating the tag.

## OPTIONS

All options are prefixed with `git-` to distinguish options for gbp buildpackage from options passed to the `BUILD_CMD`:

`--git-[no-]ignore-new` | Don't abort if there are uncommitted changes in the source tree or the current branch doesn't match the `DEBIAN-BRANCH`.
`--git-tag` | Add a git tag after a successful build. This is a command line only option that cannot be specified via `gbp.conf`.
`--git-builder=`BUILD_CMD`` | Use `BUILD_CMD` instead of debuild -i -I.
`--git-cleaner=`CLEAN_CMD`` | Use `CLEAN_CMD` instead of debuild clean.
`--git-pbuilder` | Build package using git-pbuilder. Note that this overwrites any `--git-builder` and `--git-cleaner` options.
`--git-qemubuilder` | Build package using git-pbuilder with qemubuilder. Note that this overwrites any `--git-builder` and `--git-cleaner` options.

`--git-dist=`DIST``

Build for distribution `DIST` when using --git-pbuilder. If unset build for the unstable distribution. The special value `DEP14` will set the distribution to build for from the branch name. I.e. if you're starting the build from a branch named `debian/wheezy-backports` the distribution is set to `wheezy-backports`. If the branch is named `downstream/sid` the distribution would be set to `downstream_sid`.

`--git-arch=`ARCH`` | Build for architecture `ARCH` when using --git-pbuilder. If unset no architecture is passed to git-pbuilder.
`--git-pbuilder-autoconf` | Whether to try to autoconfigure git-pbuilder or to rely on the settings in .pbuilderrc. See the git-pbuilder manpage for details.
`--git-pbuilder-options` | Options to pass to pbuilder
`--git-verbose` | verbose execution
`--git-color=``[auto|on|off]` | Whether to use colored output.
`--git-notify=``[auto|on|off]` | Whether to send a desktop notification after the build.

`--git-color-scheme`=`COLOR_SCHEME`

Colors to use in output (when color is enabled). The format for COLOR_SCHEME is '<debug>:<info>:<warning>:<error>'. Numerical values and color names are accepted, empty fields imply the default color. For example --git-color-scheme='cyan:34::' would show debug messages in cyan, info messages in blue and other messages in default (i.e. warning and error messages in red).

`--git-upstream-branch`=`BRANCH_NAME` | Branch to build the orig tarball from if `--git-upstream-tree` is set to `BRANCH`. Default is `upstream`.
`--git-debian-branch`=`BRANCH_NAME` | If you're not on this branch when invoking gbp buildpackage it will fail. Default is `master`. This is done to make sure you don't accidentally release from a topic branch. Not being on this branch will be ignored when using `--git-ignore-new`.
`--git-ignore-branch` | Don't check if the current branch matches `DEBIAN-BRANCH`.
`--git-[no-]sign-tags` | GPG sign all created tags.
`--git-[no-]submodules` | Include git submodules in the orig tarball.
`--git-keyid=``GPG-KEYID` | Use this keyid for gpg signing tags.
`--git-posttag=``COMMAND` | Execute `COMMAND` after tagging a new version. Exported environment variables are: `GBP_TAG` (the name of the generated tag), `GBP_BRANCH` (the branch the package was build from) and `GBP_SHA1` (the sha1 of the commit the tag was created at).
`--git-postbuild=``COMMAND` | Execute `COMMAND` after successful build. Exported environment variables are: `GBP_CHANGES_FILE` (the name of the generated changes file), `GBP_BUILD_DIR` (the build dir).
`--git-postexport=``COMMAND` | Execute `COMMAND` after exporting the source tree - valid only if --git-export-dir has been specified. Exported environment variables are: `GBP_GIT_DIR` (the repository the package is being built from), `GBP_TMP_DIR` (the temporary directory where the sources have been initially exported).
`--git-prebuild=``COMMAND` | Execute `COMMAND` from the build directory before calling debuild or the application specified via `--git-builder`. Exported environment variables are: `GBP_GIT_DIR` (the repository the package is being built from), `GBP_BUILD_DIR` (the build dir).
`--git-[no-]hooks` | Enable running all (cleaner, postexport, prebuild, postbuild, and posttag) hooks. Note: the `--git-builder` command is not affected by this option.
`--git-debian-tag=``TAG-FORMAT` | Use this tag format when tagging Debian versions, default is `debian/%(version)s`.
`--git-upstream-tag=``TAG-FORMAT` | Use this tag format when looking for tags of upstream versions, default is `upstream/%(version)s`.
`--git-debian-tag-msg=``tag-msg-format` | Use this tag message format when signing Debian versions, default is `%(pkg)s Debian release %(version)s`
`--git-force-create` | Force creation of an orig tarball (overwriting a pre-existing one if present).
`--git-no-create-orig` | Don't try to create any orig tarball.
`--git-overlay` | Extract orig tarball from `tarball-dir` when using the `export-dir` option (in analogy to mergeWithUpstream in svn-bp). Also remove debian/ if contained in the upstream tarball in case of 2.0 and 3.0 source formats.
`--git-export-dir=``DIRECTORY` | Export the current branch head (or the treeish object given via `--git-export` to `DIRECTORY` before building.
`--git-export=``TREEISH` | Instead of exporting the current branch head, export the treeish object `TREEISH`. The special name `INDEX` exports the current index whereas the special name `WC` exports the current working copy as is.
`--git-upstream-tree=``[TAG|BRANCH|TREEISH]` | How to find the upstream sources used to generate the tarball. `TAG` (the default) looks at a tag corresponding to the version in the changelog. `BRANCH` looks at the upstream branch given via the `--git-upstream-branch` option. Other values are interpreted as treeishs. This doesn't have any effect if `--git-pristine-tar` is being used.
`--git-tarball-dir=``DIRECTORY` | Search for original tarballs in `DIRECTORY` instead of generating them.
`--git-compression=``TYPE` | Specifies the upstream tarball compression type. This will be used to locate and build the upstream tarball if necessary. The default is `auto` which derives the compression type from the pristine-tar branch if available and falls back to gzip otherwise. Other options are `gzip`, `bzip2`, `lzma` and `xz`.
`--git-compression-level=``LEVEL` | Specifies the upstream tarball compression level if an upstream tarball needs to be built.
`--git[-no]-purge` | Purge (remove) temporary build directory after build.
`--git-dont-purge` | Deprecated, use --git-no-purge instead. This is a command line only option that cannot be specified via `gbp.conf`.
`--git-tag-only` | Don't build, only tag and run post-tag hooks. This is a command line only option that cannot be specified via `gbp.conf`.
`--git-retag` | Don't fail tag operations if a tag with the same version already exists. This is a command line only option that cannot be specified via `gbp.conf`.
`--git-pristine-tar` | Use pristine-tar when generating the upstream tarball if it doesn't exist.
`--git-pristine-tar-commit` | Commit the pristine-tar delta to the pristine-tar branch if a new tarball was generated and the pristine-tar data isn't already there.

## EXAMPLES

Build a Debian package using git-pbuilder which in turn invokes cowbuilder. Instruct cowbuilder to build within a Wheezy chroot for i386.

          gbp buildpackage --git-pbuilder --git-arch=i386 --git-dist=wheezy

Note that the above needs a cowbuilder chroot already. This can be created using:

          DIST=wheezy ARCH=i386 git-pbuilder create

## CONFIGURATION FILES

Several `gbp.conf` files are parsed to set defaults for the above command-line arguments. See the gbp.conf(5)> manpage for details.

All options in the config files must be specified without the 'git-' prefix. So e.g. `--git-debian-branch`=`debian/sid` becomes in `gbp.conf`:

          [buildpackage]
          debian-dir  = debian/sid

## SEE ALSO

gbp-import-dsc(1)>, gbp-import-dscs(1)>, gbp-import-orig(1)>, gbp-dch(1)>, git-pbuilder(1), cowbuilder(8), gbp.conf(5)>, debuild(1), git(1), pristine-tar(1), The Git-Buildpackage Manual

## AUTHOR

Guido Guenther `<agx@sigxcpu.org>`