From: Joey Hess Date: Wed, 23 Apr 2008 18:58:55 +0000 (-0400) Subject: dh_auto_install: New program, automates running make install, or using setup.py to... X-Git-Tag: 7.0.0~22 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=f2fd63ed1124d54f398e5bc3a0cdbd383a21c196;p=debhelper.git 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.) --- diff --git a/debian/changelog b/debian/changelog index 573c67c..f33c57b 100644 --- a/debian/changelog +++ b/debian/changelog @@ -14,6 +14,10 @@ debhelper (6.0.13) UNRELEASED; urgency=low if the Makefile has such a target. * dh_auto_clean: New program, automates running make clean (or distclean, or realclean), or using setup.py to clean up. + * 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.) -- Joey Hess Tue, 22 Apr 2008 17:54:20 -0400 diff --git a/dh_auto_clean b/dh_auto_clean index 8aa6ab7..aa16c72 100755 --- a/dh_auto_clean +++ b/dh_auto_clean @@ -23,7 +23,7 @@ clean the package. 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_test at all, and just run make clean manually. +dh_auto_clean at all, and just run make clean manually. =head1 OPTIONS diff --git a/dh_auto_install b/dh_auto_install new file mode 100755 index 0000000..b35810a --- /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 [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, it is used. + +The files are installed into debian// 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 or +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 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 + +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 + +This program is a part of debhelper. + +=head1 AUTHOR + +Joey Hess + +=cut diff --git a/dh_clean b/dh_clean index 7f96924..88bc885 100755 --- a/dh_clean +++ b/dh_clean @@ -22,6 +22,9 @@ debhelper commands. It also removes common files that should not appear in a debian diff: #*# *~ DEADJOE *.orig *.rej *.SUMS TAGS .deps/* *.P +It does not run "make clean" to clean up after the build process. Use +L to do that. + =head1 OPTIONS =over 4