#!/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 [S>] [S I>] =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 or Build.PL, it is used. The files are installed into debian// 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. 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 install target, you're encouraged to skip using dh_auto_install at all, and just run make install manually. =head1 OPTIONS =over 4 =item B<--> I Pass "params" to the program that is run. These can be used to supplement or override the any standard parameters that dh_auto_install passes. =back =cut init(); my $destdir; my @allpackages=getpackages(); if (@allpackages > 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 generated Makefiles. if (-e "Makefile" && system('grep -q "generated automatically by MakeMaker" Makefile') == 0) { push @params, "PREFIX=/usr"; } foreach my $target (qw{install}) { # Use make -n to check to see if the target would do # anything. There's no good way to test if a target exists. my $ret=`$ENV{MAKE} -s -n $target 2>/dev/null`; chomp $ret; if (length $ret) { doit($ENV{MAKE}, $target, @params, @{$dh{U_PARAMS}}); last; } } } elsif (-e "setup.py") { doit("python", "setup.py", "install", "--root=$destdir", "--no-compile", "-O0", "--install-layout=deb", @{$dh{U_PARAMS}}); } elsif (-e "Build.PL" && -e "Build") { $ENV{MODULEBUILDRC} = "/dev/null"; doit("perl", "Build", "install", "destdir=$destdir", "create_packlist=0", @{$dh{U_PARAMS}}); } =head1 SEE ALSO L This program is a part of debhelper. =head1 AUTHOR Joey Hess =cut