# gbp-buildpackage

## Name

git-buildpackage, 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-notify=``[auto|on|off]`] [`--git-upstream-branch=``treeish`] [`--git-debian-branch=``branch_name`] [`--git-ignore-branch`] [`--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`] [`--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-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`]

## 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) export the source tree to a separate build area

- Build an orig tarball if it doesn't exist.

- Call debuild(1) (or the application specified via `--git-builder`) with arguments instructing it to ignore Git meta-data in the diff.gz, passing along all arguments given to gbp buildpackage 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

`--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.
`--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.
`--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-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-keyid=``gpg-keyid` | use this keyid for gpg signing tags
`--git-posttag=``command` | excecute `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-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 when using export-dir option (analog to mergeWithUpstream in svn-bp)
`--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]` | How to find the upstream sources used to generate the tarball. `TAG` 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.
`--git-tag-only` | don't build, only tag and run post-tag hooks
`--git-retag` | don't fail tag operations if a tag with the same version already exists
`--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 commandline arguments. See the gbp.conf(5) manpage for details.

All options in the config files are specified without the 'git-' prefix.

## 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>`