]> git.donarmstrong.com Git - debhelper.git/blobdiff - dh_auto_install
Fix build system auto-selection breakage.
[debhelper.git] / dh_auto_install
index 5c7722454a96c9e67225ac50973bc181366187e9..a5d483b11b756150bd608a7848f15375b7466a5e 100755 (executable)
@@ -2,42 +2,57 @@
 
 =head1 NAME
 
-dh_auto_install - install built files into the temporary directory under debian/
+dh_auto_install - automatically runs make install or similar
 
 =cut
 
 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<I<dh_auto 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 is responsible for the I<install>
-step of the L<dh_auto(7)> building process. dh_auto_install tries to run
-original package installation routine to install built files into the proper
-places of the file system hierarchy recreated under the (temporary) directory
-in debian/.
+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 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 or Build.PL,
+it is used. Note that the Ant build system does not support installation,
+so dh_auto_install will not install files built using Ant.
 
-The files are installed into debian/<package>/ if there is only one binary
-package. 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 --destdir option is specified, the files are installed into
+debian/<package>/ if there is only one binary package. 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)>.
 
-If dh_auto_install does not meet your needs or does not work, it is safe to
-skip/override it entirely and just run C<make install> or the like manually.
+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.
 
-#DH_AUTO SHARED OPTIONS#
+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
+dh_auto_install at all, and just run make install manually.
 
 =head1 OPTIONS
 
+See L<debhelper(7)/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</DESCRIPTION> section.
+
 =item B<--> I<params>
 
 Pass "params" to the program that is run. These can be used to supplement
@@ -45,39 +60,36 @@ or override the any standard parameters that dh_auto_install passes.
 
 =back
 
-=head1 SUPPORTED BUILD SYSTEMS
-
-#SUPPORTED BUILD SYSTEMS INTRO#
-#SUPPORTED BUILD SYSTEMS LIST#
-
 =cut
 
-buildsystems_init();
-
 my $destdir;
-my @allpackages=getpackages();
-if (@allpackages > 1) {
-       $destdir="debian/tmp";
-}
-else {
-       $destdir=tmpdir($dh{MAINPACKAGE});
+
+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";
+       }
+       else {
+               $destdir=tmpdir($dh{MAINPACKAGE});
+       }
 }
-$destdir=cwd()."/".$destdir;
+$destdir = File::Spec->rel2abs($destdir, cwd());
 
 buildsystems_do("install", $destdir);
 
 =head1 SEE ALSO
 
-L<dh_auto(7)>
-
 L<debhelper(7)>
 
-This program is a part of debhelper and its dh_auto package source building
-suite.
+This program is a part of debhelper.
 
-=head1 AUTHORS
+=head1 AUTHOR
 
- Joey Hess <joeyh@debian.org>
- Modestas Vainius <modestas@vainius.eu>
+Joey Hess <joeyh@debian.org>
 
 =cut