diff options
author | Joey Hess <joey@kodama.kitenet.net> | 2008-04-23 14:58:55 -0400 |
---|---|---|
committer | Joey Hess <joey@kodama.kitenet.net> | 2008-04-23 14:58:55 -0400 |
commit | f2fd63ed1124d54f398e5bc3a0cdbd383a21c196 (patch) | |
tree | e50355c0a3149c21f4237c5f82feeb6446adf48e /dh_auto_install | |
parent | b3a6127c13c1226aa5b6c36b6c71dd3d74193c6d (diff) | |
download | debhelper-f2fd63ed1124d54f398e5bc3a0cdbd383a21c196.tar.gz |
dh_auto_install: New program, automates running make install, or using setup.py to install. Supports the PREFIX=/usr special case needed by MakeMaker Makefiles. (Support for cmake and other build systems planned but not yet implemented.)
Diffstat (limited to 'dh_auto_install')
-rwxr-xr-x | dh_auto_install | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/dh_auto_install b/dh_auto_install new file mode 100755 index 00000000..b35810a3 --- /dev/null +++ b/dh_auto_install @@ -0,0 +1,102 @@ +#!/usr/bin/perl -w + +=head1 NAME + +dh_auto_install - automatically runs make install or similar + +=cut + +use strict; +use Debian::Debhelper::Dh_Lib; +use Cwd; + +=head1 SYNOPSIS + +B<dh_auto_install> [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. + +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)>. + +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. + +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. + +=head1 OPTIONS + +=over 4 + +=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. + +=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"; + } + 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; + } + } +} +elsif (-e "setup.py") { + doit("python setup.py", "install", + "--root=$destdir", + "--no-compile", "-O0", + @{$dh{U_PARAMS}}); +} + + +=head1 SEE ALSO + +L<debhelper(7)> + +This program is a part of debhelper. + +=head1 AUTHOR + +Joey Hess <joeyh@debian.org> + +=cut |