diff options
Diffstat (limited to 'dh_auto_install')
-rwxr-xr-x | dh_auto_install | 113 |
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 |