summaryrefslogtreecommitdiffstats
path: root/dh_auto_install
diff options
context:
space:
mode:
Diffstat (limited to 'dh_auto_install')
-rwxr-xr-xdh_auto_install113
1 files changed, 113 insertions, 0 deletions
diff --git a/dh_auto_install b/dh_auto_install
new file mode 100755
index 0000000..420fdfd
--- /dev/null
+++ b/dh_auto_install
@@ -0,0 +1,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