diff options
author | Joey Hess <joey@kodama.kitenet.net> | 2008-04-23 14:37:34 -0400 |
---|---|---|
committer | Joey Hess <joey@kodama.kitenet.net> | 2008-04-23 14:37:34 -0400 |
commit | b3a6127c13c1226aa5b6c36b6c71dd3d74193c6d (patch) | |
tree | 07fe22385963ce3c54603f59cf17f2bd8a8ee090 | |
parent | e7706c28cecffccb52f2f1e6a30a141f23fbfcf5 (diff) |
dh_auto_clean: New program, automates running make clean (or distclean, or realclean), or using setup.py to clean up.
-rw-r--r-- | debian/changelog | 2 | ||||
-rwxr-xr-x | dh_auto_clean | 73 | ||||
-rwxr-xr-x | dh_auto_test | 13 |
3 files changed, 84 insertions, 4 deletions
diff --git a/debian/changelog b/debian/changelog index 8f832d9..573c67c 100644 --- a/debian/changelog +++ b/debian/changelog @@ -12,6 +12,8 @@ debhelper (6.0.13) UNRELEASED; urgency=low planned but not yet implemented.) * dh_auto_test: New program, automates running make test or make check 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. -- Joey Hess <joeyh@debian.org> Tue, 22 Apr 2008 17:54:20 -0400 diff --git a/dh_auto_clean b/dh_auto_clean new file mode 100755 index 0000000..8aa6ab7 --- /dev/null +++ b/dh_auto_clean @@ -0,0 +1,73 @@ +#!/usr/bin/perl -w + +=head1 NAME + +dh_auto_clean - automatically cleans up after a build + +=cut + +use strict; +use Debian::Debhelper::Dh_Lib; + +=head1 SYNOPSIS + +B<dh_auto_clean> [S<I<debhelper options>>] [S<B<--> I<params>>] + +=head1 DESCRIPTION + +dh_auto_clean is a debhelper program that tries to automatically clean up +after a package build. If there's a Makefile and it contains a "distclean", +"realclean", or "clean" target, then this is done by running make (or MAKE, +if the environment variable is set). If there is a setup.py, it is run to +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. + +=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(); + +if (-e "Makefile" || -e "makefile" || -e "GNUmakefile") { + $ENV{MAKE}="make" unless exists $ENV{MAKE}; + foreach my $target (qw{distclean realclean clean}) { + # Make --question returns false if the target is + # up-to-date. But we still want to run the target in this + # case. So ceck 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, @{$dh{U_PARAMS}}); + last; + } + } +} +elsif (-e "setup.py") { + doit("python setup.py", "clean", "-a", @{$dh{U_PARAMS}}); +} + + +=head1 SEE ALSO + +L<debhelper(7)> + +This program is a part of debhelper. + +=head1 AUTHOR + +Joey Hess <joeyh@debian.org> + +=cut diff --git a/dh_auto_test b/dh_auto_test index 74a80e8..cf6e58a 100755 --- a/dh_auto_test +++ b/dh_auto_test @@ -42,11 +42,16 @@ or override the any standard parameters that dh_auto_test passes. init(); if (-e "Makefile" || -e "makefile" || -e "GNUmakefile") { + $ENV{MAKE}="make" unless exists $ENV{MAKE}; foreach my $target (qw{test check}) { - my $ret=system("make --question $target >/dev/null 2>&1"); - if ($ret == 0) { - doit(exists $ENV{MAKE} ? $ENV{MAKE} : "make", - $target, @{$dh{U_PARAMS}}); + # Make --question returns false if the target is + # up-to-date. But we still want to run the target in this + # case. So ceck 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, @{$dh{U_PARAMS}}); last; } } |