---
name: "mercurial-buildpackage"
section: "1"
platform: "linux"
package: "mercurial-buildpackage"
version: "0.10.2"
release: "Debian 12 (Bookworm)"
platforms: ["linux"]
url: "https://new.carta.tech/mercurial-buildpackage"
---

# mercurial-buildpackage(1)

Build a .deb package from source code under Mercurial control.

## NAME

mercurial-buildpackage - Build a .deb package from source code under Mercurial control.

## SYNOPSIS

**mercurial-buildpackage** \[*option*\] ...

## DESCRIPTION

**mercurial-buildpackage** builds a .deb package from within a Mercurial repository.  The package is built either by use of [**pbuilder**(1)](/pbuilder/1.md) or in-place, depending on the options.

## OPTIONS

**--version**, **-V**

-

  Output version and exit.

**--verbose**, **-v**

-

  Increase verbosity level.  Can be used several times.

**--no-check-dependencies**, **-d**

-

  Do not check for missing build dependencies.

**--include-source**, **-s**, **-sa**

-

  Force inclusion of upstream source.

**--from-version** *changelogversion*, **-f** *changelogversion*

-

  Include all changelog entries from *changelogversion*.

**--source-only**, **-S**

-

  Build the source only.

**--configfile** *pbuilderconfigfile*, **-c** *pbuilderconfigfile*

-

  Use [**pbuilder**(1)](/pbuilder/1.md) to build package in a [**chroot**(8)](/chroot/8.md) specified in *pbuilderconfigfile*.

## EXAMPLES

**mercurial-buildpackage**

-

  Silently build a package in-place using debian/rules and [**dpkg-genchanges**(1)](/dpkg-genchanges/1.md).  The complete build log will be placed in ../*package*\_*version*\_*arch*.build.

**mercurial-buildpackage** **-s** **-f** 1.2-3 **-c** /home/jps/lenny-pbuilderrc

-

  Build a backport package for the Lenny release using pbuilder.  The source and all changelog entries since 1.2-3 are included in package.

## REPOSITORY LAYOUT

Let us assume that your package is called *mypack*.  The package repository should be created by a regular **hg** **init** *mypack* command.

If *mypack* is a native package, then your repository will only have the usual **default** branch and mercurial-buildpackage will only affect the **.hgtags** file when [**mercurial-tagversion**(1)](/mercurial-tagversion/1.md) is invoked to tag a release of *mypack*.

If *mypack* is a non-native package, then it will have a number of upstream tarballs, as specified in [**dpkg-source**(1)](/dpkg-source/1.md).  Let us assume that the upstream tarballs are mypack\_1.0.orig.tar.gz, mypack\_1.0.orig-comp1.tar.bz2 and mypack\_1.0.orig-comp2.tar.gz, and that you therefore use package format 3.0 (quilt). mercurial-buildpackage will then maintain the following branches.

- mypack

  A branch containing the source from the main tarball.

- comp1

  A branch containing the source from the comp1 tarball.

- comp2

  A branch containing the source from the comp2 tarball.

- pristine

  A branch containing additional information for recreating pristine upstream tarballs.

- upstream

  The combination of all upstream tarballs, as specified in [**dpkg-source**(1)](/dpkg-source/1.md).

- default

  The branch for mainline package work.  It will have all debian/patches applied and the quilt .pc directory included as part of the repository.

So each upstream tarball will have its own branch which together with the **pristine** branch are used by [**mercurial-pristinetar**(1)](/mercurial-pristinetar/1.md) to recreate pristine upstream tarballs.

The **upstream** branch is used by [**mercurial-importorig**(1)](/mercurial-importorig/1.md) to merge new upstream versions into the mainline **default** branch; and by [**mercurial-port**(1)](/mercurial-port/1.md) to make alternative packages of selected upstream versions, for instance for backporting.

In general, you should leave alone all the branches dealing with upsteam sources, and only work in the **default** branch or branches created by [**mercurial-port**(1)](/mercurial-port/1.md) for porting.

## OPERATIONAL OUTLINE

### In-place building

```
fakeroot debian/rules clean
dpkg-source -i.hg -b mypack ..
debian/rules build
debian/rules binary
dpkg-genchanges > ../mypack_1.0-2_i386.changes
```

### Chroot building

```
fakeroot debian/rules clean
dpkg-source -i.hg -b mypack ..
pbuilder --build --configfile ~/etc/sid-pbuilderrc ../mypack_1.0-2.dsc
```

## AUTHOR

Jens Peter Secher \<jpsecher@gmail.com\>

## THANKS

The ideas for this package originates from John Goerzen's **hg-buildpackage**.

## SEE ALSO

[**dpkg-source**(1)](/dpkg-source/1.md), [**pbuilder**(1)](/pbuilder/1.md), [**mercurial-importorig**(1)](/mercurial-importorig/1.md), [**mercurial-importdsc**(1)](/mercurial-importdsc/1.md), [**mercurial-tagversion**(1)](/mercurial-tagversion/1.md), [**mercurial-pristinetar**(1)](/mercurial-pristinetar/1.md), [**mercurial-port**(1)](/mercurial-port/1.md).
