summaryrefslogtreecommitdiff
path: root/doc/README
blob: 624744af171274bbd8f07f7e7c2d75a3243c2952 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
Debhelper is a collection of programs that can be used in debian/rules files
to automate common tasks related to building debian binary packages. For 
further documentation, see the man pages for dh_* commands. For an overview 
of debhelper, including a list of all the available commands, see the
debhelper(1) man page.

To help you get started, I've included examples of debian/rules files
that use debhelper commands extensively. See 
/usr/share/doc/debhelper/examples/ . These files are also useful as they give
one good order you can run the various debhelper scripts in (though other
variations are possible).

For a more gentle introduction, the maint-guide debian package contains a
tutorial about making your first package using Debhelper.

Debhelper v2:
------------

Debhelper v2 is a major new version of Debhelper, still under development.
Debhelper will continue to work in v1 compatability mode for now, if you're
interested in trying the new versiln, read the file named "v2".


Starting a new package:
----------------------

You can just use the example rules files and do the rest of the new package
set up by hand, or you could try the dh-make package, which contains a
"dh_make" command that is similar to debmake, and tries to automate the
process.

Converting from debstd to debhelper:
-----------------------------------

See the file "from-debstd" for documentation on how to do this.

Automatic generation of debian install scripts:
----------------------------------------------

Some debhelper commands will automatically generate parts of debian install
scripts. If you want these automatically generated things included in your
debian install scripts, then you need to add "#DEBHELPER#" to your scripts,
in the place the code should be added. "#DEBHELPER#" will be replaced by any 
auto-generated code when you run dh_installdeb.

All scripts that automatically generate code in this way let it be disabled
by the -n parameter.

Note that it will be shell code, so you cannot directly use it in a perl 
script. If you would like to embed it into a perl script, here is one way to
do that (note that I made sure that $1, $2, etc are set with the set command):

my $temp="set -e\nset -- @ARGV\n" . << 'EOF';
#DEBHELPER#
EOF
system ($temp) / 256 == 0
	or die "Problem with debhelper scripts: $!\n";

Other notes:
-----------

* Note that if you are generating a debian package that has arch-indep and
  arch-dependent portions, and you are using dh_movefiles to move the
  arch-indep files out of debian/tmp, you need to make sure that dh_movefiles
  does this even if only the arch-dependent package is being built (for ports
  to other architectures). I handle this in debian/rules.multi by calling
  dh_movefiles in the install target.

* Once your package uses debhelper to build, be sure to add   
  debhelper to your Build-Depends line in debian/control.

* Debhelper's home page is at http://kitenet.net/programs/debhelper/

-- Joey Hess <joeyh@master.debian.org>