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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
#!/usr/bin/perl
=head1 NAME
dh_auto_install - automatically runs make install or similar
=cut
use strict;
use warnings;
use Debian::Debhelper::Dh_Lib;
use Debian::Debhelper::Dh_Buildsystems;
use File::Spec;
use Cwd;
our $VERSION = DH_BUILTIN_VERSION;
=head1 SYNOPSIS
B<dh_auto_install> [S<I<build system options>>] [S<I<debhelper options>>] [S<B<--> I<params>>]
=head1 DESCRIPTION
B<dh_auto_install> is a debhelper program that tries to automatically install
built files. It does so by running the appropriate command for the build
system it detects the package uses. For example, if there's a F<Makefile> and
it contains a B<install> target, then this is done by running B<make> (or B<MAKE>,
if the environment variable is set). If there is a F<setup.py> or F<Build.PL>,
it is used. Note that the Ant build system does not support installation,
so B<dh_auto_install> will not install files built using Ant.
In compat 15 or later, B<dh_auto_install> will use F<debian/tmp> as the default
B<--destdir> and should be moved from there to the appropriate package build
directory using L<dh_install(1)> or similar tools. Though if the B<single-binary>
addon for L<dh(1)> is activated, then it will pass an explicit
B<< --destdir=debian/I<package>/ >> to B<dh_auto_install>.
For earlier compat levels then unless B<--destdir> option is
specified, the files are installed into debian/I<package>/ if there is only one
binary package. In the multiple binary package case, the files are instead
installed into F<debian/tmp/>, and should be moved from there to the
appropriate package build directory using L<dh_install(1)> or similar tools.
B<DESTDIR> is used to tell make where to install the files.
If the Makefile was generated by MakeMaker from a F<Makefile.PL>, it will
automatically set B<PREFIX=/usr> too, since such Makefiles need that.
This is intended to work for about 90% of packages. If it doesn't work, or
tries to use the wrong install target, you're encouraged to skip using
B<dh_auto_install> at all, and just run make install manually.
=head1 OPTIONS
See L<debhelper(7)/B<BUILD SYSTEM OPTIONS>> for a list of common build
system selection and control options.
=over 4
=item B<--destdir=>I<directory>
Install files into the specified I<directory>. If this option is not specified,
destination directory is determined automatically as described in the
L</B<DESCRIPTION>> section.
=item B<--> I<params>
Pass I<params> to the program that is run, after the parameters that
B<dh_auto_install> usually passes.
=back
=cut
my $destdir;
buildsystems_init(options => {
"destdir=s" => \$destdir,
});
# PROMISE: DH NOOP WITHOUT cli-options(BUILDSYSTEM) buildsystem(install)
# If destdir is not specified, determine it automatically
if (!$destdir) {
my @allpackages=getpackages();
if (@allpackages > 1 or not compat(14)) {
$destdir="debian/tmp";
}
else {
$destdir=tmpdir($dh{MAINPACKAGE});
}
}
$destdir = File::Spec->rel2abs($destdir, getcwd());
if (compat(10)) {
# Ensure that all debian/<pkg> directories exist
install_dir(map { tmpdir($_) } @{$dh{DOPACKAGES}});
} else {
install_dir($destdir);
}
buildsystems_do("install", $destdir);
=head1 SEE ALSO
L<debhelper(7)>
This program is a part of debhelper.
=head1 AUTHOR
Joey Hess <joeyh@debian.org>
=cut
|