]> git.donarmstrong.com Git - debhelper.git/blobdiff - dh_auto_install
Typo. Closes: #653339
[debhelper.git] / dh_auto_install
index b35810a338d5cd39d536f15fdcea0a7dbb308f33..d513f2e223095ac99e4f1ccf5caf54e13f34752c 100755 (executable)
@@ -8,86 +8,79 @@ dh_auto_install - automatically runs make install or similar
 
 use strict;
 use Debian::Debhelper::Dh_Lib;
+use Debian::Debhelper::Dh_Buildsystems;
+use File::Spec;
 use Cwd;
 
 =head1 SYNOPSIS
 
-B<dh_auto_install> [S<I<debhelper options>>] [S<B<--> I<params>>]
+B<dh_auto_install> [S<I<build system options>>] [S<I<debhelper options>>] [S<B<--> I<params>>]
 
 =head1 DESCRIPTION
 
-dh_auto_install is a debhelper program that tries to automatically install
-built files. If there's a Makefile and it contains a "install" target,
-then this is done by running make (or MAKE, if the environment variable is
-set). If there is a setup.py, it is used.
+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.
 
-The files are installed into debian/<package>/ if there is only one binary
-package to act on. In the multiple binary package case, the files are
-instead installed into debian/tmp/, and should be moved from there to the
-appropriate package build directory using L<dh_install(1)> or
-L<dh_movefiles(1)>.
+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)>.
 
-DESTDIR is used to tell make where to install the files. 
-If the Makefile was generated by MakeMaker from a Makefile.PL, it will
-automatically set PREFIX=/usr too, since such Makefiles need that.
+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 clean target, you're encoruaged to skip using
-dh_auto_install at all, and just run make install manually.
+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 "params" to the program that is run. These can be used to suppliment
-or override the any standard parameters that dh_auto_clean passes.
+Pass I<params> to the program that is run, after the parameters that
+B<dh_auto_install> usually passes.
 
 =back
 
 =cut
 
-init();
-
 my $destdir;
-if (@{$dh{DOPACKAGES}} > 1) {
-       $destdir="debian/tmp";
-}
-else {
-       $destdir=tmpdir($dh{MAINPACKAGE});
-}
-$destdir=cwd()."/".$destdir;
-
-if (-e "Makefile" || -e "makefile" || -e "GNUmakefile") {
-       $ENV{MAKE}="make" unless exists $ENV{MAKE};
-       my @params="DESTDIR=$destdir";
-       # Special case for MakeMaker.
-       if (-e "Makefile.PL") {
-               push @params, "PREFIX=/usr";
+
+buildsystems_init(options => {
+       "destdir=s" => \$destdir,
+});
+
+# If destdir is not specified, determine it automatically
+if (!$destdir) {
+       my @allpackages=getpackages();
+       if (@allpackages > 1) {
+               $destdir="debian/tmp";
        }
-       foreach my $target (qw{install}) {
-               # Make --question returns false if the target is
-               # up-to-date. But we still want to run the target in this
-               # case. So check if a target exists by seeing if make outputs
-               # "Making target".
-               my $ret=`LANG=C $ENV{MAKE} --question $target 2>/dev/null`;
-               chomp $ret;
-               if ($ret =~ /^Making \Q$target\E/m) {
-                       doit($ENV{MAKE}, $target,
-                               @params,
-                               @{$dh{U_PARAMS}});
-                       last;
-               }
+       else {
+               $destdir=tmpdir($dh{MAINPACKAGE});
        }
 }
-elsif (-e "setup.py") {
-       doit("python setup.py", "install", 
-               "--root=$destdir",
-               "--no-compile", "-O0",
-               @{$dh{U_PARAMS}});
-}
+$destdir = File::Spec->rel2abs($destdir, cwd());
 
+buildsystems_do("install", $destdir);
 
 =head1 SEE ALSO