dh_make(8)
NAME
dh_make - prepare Debian packaging for an original source archive
SYNOPSIS
dh_make [-bnlsmiadh] [-c license] [-e address] [-f file] [-t directory] [-o directory] [-p name] [--copyright license] [--email address] [--native] [--file file] [--library] [--single] [--indep] [--multi] [--kmod] [--kpatch] [--addmissing] [--templates directory] [--default- less] [--overlay directory] [--packagename name] [--dpatch] [--help] [--version]
DESCRIPTION
dh_make is a tool to convert a regular source code package into one
formatted according to the requirements of the Debian Policy. dh_make
must be invoked within a directory containing the source code, which
must be named <packagename>-<version>. The <packagename> must be all
lowercase, digits and dashes. If the directory name does not conform to
this scheme, you must rename it before using dh_make. Alternatively,
you may be able to use the --packagename option to force the package
name.
PACKAGE CLASSES
- Single binary (s)
- The package will generate a single binary .deb package. It is the standard case, so if you don't know what to do, choose this.
- Arch-Independent (i)
- The package will generate a single package that is arch-indpendent.
- Multiple binary (m)
- The package will generate multiple binary .deb packages from one source package. Choose this for larger packages that need to be split.
- Library (l)
- The package will generate at least two binaries. One library package containing just the lib in /usr/lib and another *-dev_*.deb package containing documentation and C headers.
- Kernel module (k)
- The package will generate a binary-all kernel module -source package for use with the make-kpkg command. It also generates a binary package for additional utilities, daemons, etc. that may come with the source.
- cdbs (b)
- The package will be build using the Common Debian Build System. CDBS provides a sane set of default rules upon which packages can build.
- Kernel patch
- The package will generate a package that can be used for kernel patches.
ACTIONS PERFORMED
Unless --native was given, dh_make makes sure a original source archive
(<packagename>_<version>.orig.tar.gz) exists. If no such file exists,
the file specified with -f is copied in place. If no -f is supplied
either but --createorig is, the current directory it copied into <packagename>-<version>.orig which will be made into this archive by
dpkg-source later automatically. The original archive is needed for
other Debian tools to generate the diffs to the original sources
required by the Debian packaging format. Unless there are reasons
against it, this file should be the pristine upstream archive.
Then dh_make proceeds to generate a "debian" subdirectory and the necessary control files in the program source directory. Those control
files are customized with the packagename and version extracted from
the directory name. The username is looked up in the environment variable $DEBFULLNAME if this exists. If not the environment variable
$LOGNAME is used to find a name in the /etc/passwd file, and through
NIS, YP and LDAP. The e-mail address is found in the environment and
/etc/mailname.
If the environment variable $EMAIL or $DEBEMAIL is set, or the -e
(--email) option is supplied, then that e-mail address is used for the
e-mail address of the maintainer (instead of looking it up in the environment. An example, for bash:
export DEBEMAIL="jsmith@debian.org"
dh_make will also generate example files that are also customized for
the package generated. You can remove all files with *.ex if you wish.
You can also delete the README.Debian file if you don't have anything
to put in it. Renaming the example files to their name without the .ex
at the end (and editing them if necessary) will activate that feature
of debhelper.
If the --templates or -o (--overlay) option is used dh_make will apply
a customizing template to the "debian" directory. See the templates
described in the FILES section of this manpage for samples.
OPTIONS
- -c, --copyright <license>
- Use <license> type in copyright file. <license> can be gpl, gpl2, gpl3, lgpl, lgpl2 lgpl3, artistic, apache or bsd. If this field is not specified the copyright file has a space to fill in which sort of license is used. The field is case-insensitive so -c GPL works as well as -c gpl. gpl and lgpl will give you version 3 of the corresponding license, apache implies Apache v2.0. If you need a different version, change the license file afterwards or use the gpl2 and lgpl2 options.
- -e, --email <address>
- Use <address> as the e-mail address in the Maintainer: field of debian/control file.
- -n, --native
- Create a native Debian packages, i.e. do not generate a .orig archive, since it will be generated when building with dpkgbuildpackage. The version number will not have a Debian revision number (e.g. -1) appended to it.
- -f, --file <file>
- Use <file> as the original source archive, and skip the copying of the current program tree to program.orig.
- -l, --library
- Automatically set the package class to Library, skipping the question.
- -s, --single
- Automatically set the package class to Single binary, skipping the question.
- -i, --indep
- Automatically set the package class to arch-independent binary, skipping the question.
- -m, --multi
- Automatically set the package class to Multiple binary, skipping the question.
- -k, --kmod
- Automatically set the package class to Kernel module, skipping the question.
- -b, --cdbs
- Automatically set package class to cdbs, skipping the question.
- --kpatch
- Automatically set package class to kpatch, skipping the question.
- -a, --addmissing
- Adds missing example and control files on an existing debian source directory.
- -t, --templates <directory>
- Applies the customizing templates in <directory> to the debian directory.
- -o, --overlay <directory>
- Applies a customization template to an existing debian directory.
- -p, --packagename <name>
- Force the package name to be <name>, good for packages with hyphens in their name or other strangeness. You can also make the parameter <name>_<version> which will set both the package name and version and bypass and directory checking.
- -d, --defaultless
- Skips applying the default templates to the target debian directory.
- -h, --help
- Display the name, version, available options and authors, and exit successfully.
- --dpatch
- The new package will use dpatch to manage patches. This option is deprecated and will be removed in future versions of dh_make. Use the quilt patch system which is built into the source package.
- -v, --version
- Show the program name and version, and exit successfully.
ENVIRONMENT
The following environment settings are used by dh_make:
- DEBEMAIL
- Email address to use in control and changelog entries.
- DEBFULLNAME
- You full name, eg "John Doe" which will appear in the control and changelog entries.
- EMAIL Email address to use in control and changelog entries, only used
- if DEBEMAIL is no set.
FILES
- /usr/share/debhelper/dh_make
- Directory that contains all the template files, separated in six directories:
- debian/
- with files for all package classes,
- debians/
- with files specific to the Single binary class,
- debianm/
- with files specific to the Multiple binary class,
- debianl/
- with files specific to the Library class, and finally,
- native/
- with files specific to the native Debian packages.
- licenses/
- template files for the more common licenses used in Debian packages
EXAMPLES
- To get dh_make to use the defaults and ask you various questions about
the package:
- dh_make
- Create your single class package using the with the GPL license:
- dh_make -s -c gpl
- A more involved example where you set your name in the environment, contact email and license in the options and specify the upstream file:
- $ DEBFULLNAME="John Doe" \
dh_make --email contact@example.com \
--copyright=bsd \
--file ../foo.tar.gz
BUGS
dh_make may not detect your username and email address correctly when
using sudo.
SEE ALSO
dpkg(1), dpkg-buildpackage(1), debhelper(1), make-kpkg(1), debhelper(7)
You may also want to read the Debian Policy (in
/usr/share/doc/debian-policy) and the New Maintainers' Guide (in
/usr/share/doc/maint-guide).
AUTHORS
- Christoph Lameter <clameter@debian.org> wrote the original script, in
sh.
Craig Small <csmall@debian.org> made many enhancements to the script, and later rewrote it in perl.
Bruce Sass <bsass@edmc.net> added support for customization templates.