DEBMAKE(1)

NAME
debmake - program to make the Debian source package

SYNOPSIS
debmake [-h] [-c] [-n | -a package-version.orig.tar.gz | -d | -t ] [-p package] [-u version] [-r revision] [-z extension] [-b "package[:type], ...]" [-e foo@example.org] [-f "firstname lastname"] [-i "buildtool" | -j] [-l license_file] [-m] [-o file] [-q] [-v] [-w "addon, ..."] [-x [01234]] [-y]

DESCRIPTION
debmake helps to build the Debian package from the upstream source. Normally, this is done as follows:

    * The upstream tarball is downloaded as the package-version.tar.gz file.

    * It is untared to create many files under the package-version/ directory.

    * debmake is invoked in the package-version/ directory possibly without any arguments.

    * debmake generates the packagename_version.orig.tar.gz symlink pointing to the upstream tarball.

    * debmake generates the template files in the package-version/debian/ directory.

    * These template files should be manually adjusted to their perfection.

    * dpkg-buildpackage (usually from its wrapper debuild or pdebuild) is invoked in the package-version/ directory to make debian packages.

debmake always builds the source for the multi-arch package, unless -m option is explicitly specified.

debmake always builds the non-native Debian package with the "3.0 (quilt)" format, unless -n option is explicitly specified.

Most of the obvious option states and values are automatically set by debmake with good defaults by scanning the source code.

The functional single-binary package can be generated automatically without touching files in the package-version/debian/ directory. The generated package can be used locally.

    * To comply with the strict quality requirements of the Debian archive, these template files must be manually adjusted to their perfection before the upload.

    * For example, you can get a Python module packaged by the Python distutils and make its Debian binary package by simply running "debmake -d -i debuild" in its untared source tree.

The functional multi-binary package always requires some extra manual works. These works are done as follows:

    * Invoke debmake with the -b'package1:type1, ...' and -j options in the package-version/ directory.

    * Check the last lines of package.build-dep.log to judge build dependencies for Build-Depends:. (You do not need to list packages used by debhelper, perl , or fakeroot explicitly in Build-Depends:.)

    * Check the contents of package.install.log to identify file paths in debian/tmp.

    * Update debian/control and debian/package.install files using the above information.

    * Update other debian/* files as needed.

    * Build binary packages with debuild, pdebuild, etc.

    * Files installed into debian/tmp are split by debian/package.install into each package_version-revision_arch.deb.

debmake has the -a option to make it work directly with the tarball.

debmake has the -t and -d options to make it work well with the source files in VCS. These options also allow to make the non-native Debian package from the VCS source tree with the package-version/debian/ directory. Please note, the non-native Debian package is the normal Debian package.

Argument may need to be quoted to protect from the shell.

  optional arguments:

-h, --help
    show this help message and exit.

-c, --copyright
    scan source for copyright+license text and exit.

-n, --native
    make a native Debian source package without .orig.tar.gz. This makes the "3.0 (native)" format package.

    If you are thinking to package a Debian specific source tree with debian/* in it into a native Debian package, please think othrewise. You can use "debmake -d -i debuild" or "debmake -t -i debuild" to make the "3.0 (quilt)" format non-native Debian package. The only difference is that the debian/changelog file must use the non-native version scheme: version-revision. The non-native package is more friendly to the downstream distributions.

-a package-version.tar.gz, --archive package-version.tar.gz
    use the upstream source tarball directly. (-p, -u, -z: overridden)

    The upstream tarball may be specified as package_version.orig.tar.gz and; tar.gz for all cases may be tar.bz2, or tar.xz.

-d, --dist
    run "make dist" equivalent first to generate upstream tarball and use it.

    "debmake -d" is designed to run in the package/ directory hosting the upstream VCS with the build system supporting "make dist" equivalents. (automake/autoconf, Python distutils, ...)

-t, --tar
    run "tar" to generate upstream tarball and use it

    "debmake -t" is designed to run in the package/ directory hosting the VCS. Unless there is the debian/changelog file, you need to provide the upstream version with the -u option. The generated tarball excludes the debian/ directory. (It also excludes typical VCS directories: .git/ .hg/ .svn/ .CVS/)

-p package, --package package
    set the Debian package name.

-u version, --upstreamversion version
    set the upstream package version.

-r revision, --revision revision
    set the Debian package revision.

-z extension, --targz extension
    set the tarball type,

    extension=(tar.gz|tar.bz2|tar.xz)

-b "package[:type],...", --binaryspec "'package[:type],...'"
    set binary package specs as comma separated list, e.g., in full form "foo:bin, foo-doc:doc, libfoo1:lib, libfoo1-dbg:dbg, libfoo-dev:dev" or in short form ", -doc, libfoo1, libfoo1-dbg, libfoo-dev".

    The meanings of type with (arch, multi-arch) values are as follows:

    bin: C/C++ compiled binary code package (any, foreign) (default)

    data: Data (fonts, graphics, ...) package (all, foreign)

    dbg: Debug symbol package (any, same)

    dev: Library development package (any, same)

    doc: Documentation package (all, foreign)

    lib: Library package (any, same)

    perl: Perl script package (all, foreign)

    python: Python script package (all, foreign)

    python3: Python3 script package (all, foreign)

    script: Shell script package (all, foreign)

-e foo@example.org, --email foo@example.org
    set e-mail address.

    The default is taken from the value of the environment variable $DEBEMAIL.

-f "firstname lastname", --fullname "firstname lastname"
    set the fullname.

    The default is taken from the value of the environment variable $DEBFULLNAME.

-i "buildtool", --invoke "buildtool"
    invoke "buildtool" at the end of execution. "buildtool" may be "dpkg-buildpackage", "debuild", "pdebuild", ""pdebuild --pbuilder cowbuilder"", etc..

    The default is not to execute any program.

-j, --judge
    run dpkg-depcheck to judge build dependencies and identify file paths. Log files are in the parent directory.

    package.build-dep.log: Log file for dpkg-depcheck.

    package.install.log: Log file recording files in the debian/tmp directory.

-l license_file,..., --license license_file,...
    add formatted license text to the end of the debian/copyright file holding license scan results

    The default is add COPYING and LICENSE and license_file needs to list only the additional file names all separated by ",".

-m, --monoarch
    force packages to be non-mult-iarch.

-o file, --option file
    read optional parameters from file. (read as python code. See README.option.)

-q, --quitearly
    quit early before creating files in the debian/ directory.

-v, --version
    show version information.

-w "addon,...", --with "addon,..."
    add extra arguments to the --with option of the dh(1) command as addon in debian/rules.

    addon values are listed all separated by ",", e.g., -w "python2,autoreconf".

    For Autotools based packages, setting autoreconf as addon forces to run "autoreconf -i -v -f" for every package building. Otherwise, autotools-dev as addon is used as default.

    For Autotools based packages, if they install Python programs, python2 as addon is needed since this is non-obvious. But for setup.py based packages, python2 as addon is not needed since this is obvious and it is automatically set for the dh(1) command.

-x n, --extra n
    generate extra configuration files as templates.

    The number n changes which configuration templates are generated.

    -x0 : bare minimum configuration files. (default if these files exist already)

    -x1 : ,, + desirable configuration files. (default for new packages)

    -x2 : ,, + interesting configuration files. (recommended for experts, multi-binary aware)

    -x3 : ,, + unusual configuration template files with the extra .ex suffix to ease their removal. (recommended for new users) To use these as configuration files, rename their file names into ones without the .ex suffix.

    -x4 : ,, + copyright file examples.

-y, --yes
    force "yes" for all prompts.

DEBUG
The character set in the environ variable DEBUG determines the logging output level.

    p: list all parameters

    f: copyright scanner input file

    i: copyright scanner input line

    o: line outside of copyright and license sections

    c: line in copyright section

    l: line in license section

AUTHOR
Copyright © 2013 Osamu Aoki <osamu@debian.org>

LICENSE
MIT License

SEE ALSO
See also debhelper(7), dpkg-buildpackage(1) debuild(1) and pdebuild(1) manpages and files in /usr/share/doc/debmake/. Learn basics of Debian packaging with the "Debian New Maintainers' Guide" at http://www.debian.org/doc/manuals/maint-guide/ or with the maint-guide package.