From: Joey Hess Date: Wed, 23 Apr 2008 18:37:34 +0000 (-0400) Subject: dh_auto_clean: New program, automates running make clean (or distclean, or realclean... X-Git-Tag: 7.0.0~23 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=b3a6127c13c1226aa5b6c36b6c71dd3d74193c6d;p=debhelper.git dh_auto_clean: New program, automates running make clean (or distclean, or realclean), or using setup.py to clean up. --- 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 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 [S>] [S I>] + +=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 + +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 + +This program is a part of debhelper. + +=head1 AUTHOR + +Joey Hess + +=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; } }