]> git.donarmstrong.com Git - debhelper.git/blob - dh_clean
Merge branch 'master' of ssh://git.debian.org/git/debhelper/debhelper
[debhelper.git] / dh_clean
1 #!/usr/bin/perl -w
2
3 =head1 NAME
4
5 dh_clean - clean up package build directories
6
7 =cut
8
9 use strict;
10 use Debian::Debhelper::Dh_Lib;
11
12 =head1 SYNOPSIS
13
14 B<dh_clean> [S<I<debhelper options>>] [B<-k>] [B<-d>] [B<-X>I<item>] [S<I<file ...>>]
15
16 =head1 DESCRIPTION
17
18 dh_clean is a debhelper program that is responsible for cleaning up after a
19 package is built. It removes the package build directories, and removes some
20 other files including debian/files, and any detritus left behind by other
21 debhelper commands. It also removes common files that should not appear in a
22 debian diff:
23   #*# *~ DEADJOE *.orig *.rej *.SUMS TAGS .deps/* *.P *-stamp
24
25 It does not run "make clean" to clean up after the build process. Use
26 L<dh_auto_clean(1)> to do things like that.
27
28 dh_clean (or "dh clean") should be the last debhelper command run in the
29 clean target in debian/rules.
30
31 =head1 FILES
32
33 =over 4
34
35 =item debian/clean
36
37 Can list other files to be removed.
38
39 =back
40
41 =head1 OPTIONS
42
43 =over 4
44
45 =item B<-k>, B<--keep>
46
47 This is deprecated, use L<dh_prep(1)> instead.
48
49 =item B<-d>, B<--dirs-only>
50
51 Only clean the package build directories, do not clean up any other files
52 at all.
53
54 =item B<-X>I<item> B<--exclude=>I<item>
55
56 Exclude files that contain "item" anywhere in their filename from being
57 deleted, even if they would normally be deleted. You may use this option
58 multiple times to build up a list of things to exclude.
59
60 =item I<file ...>
61
62 Delete these files too.
63
64 =back
65
66 =cut
67
68 init(options => {
69         "dirs-only" => \$dh{D_FLAG},
70 });
71 inhibit_log();
72
73 if ($dh{K_FLAG}) {
74         # dh_prep will be emulated (mostly) by the code below.
75         # TODO deprecation warning
76 }
77
78 foreach my $package (@{$dh{DOPACKAGES}}) {
79         my $tmp=tmpdir($package);
80         my $ext=pkgext($package);
81
82         if (! $dh{D_FLAG}) {
83                 doit("rm","-f","debian/${ext}substvars")
84                         unless excludefile("debian/${ext}substvars");
85                 
86                 # These are all debhelper temp files, and so it is safe to 
87                 # wildcard them.
88                 complex_doit("rm -f debian/$ext*.debhelper");
89                 
90                 if (! $dh{K_FLAG}) {
91                         doit("rm","-f","debian/${ext}debhelper.log");
92                 }
93         }
94         
95         doit ("rm","-rf",$tmp."/")
96                 unless excludefile($tmp);
97 }
98
99 if (! $dh{D_FLAG}) {
100         if (@ARGV) {
101                 doit("rm","-f","--",@ARGV);
102         }
103
104         if (! $dh{K_FLAG}) {
105                 if (!compat(6) && -e "debian/clean") {
106                         my @clean=grep { ! excludefile($_) }
107                                 filearray("debian/clean", ".");
108                         doit("rm","-f","--",@clean) if @clean;
109                 }
110
111                 doit("rm","-f","debian/files")
112                         unless excludefile("debian/files");
113         }
114
115         # See if some files that would normally be deleted are excluded.
116         my $find_options='';
117         if (defined($dh{EXCLUDE_FIND}) && $dh{EXCLUDE_FIND} ne '') {
118                 $find_options="! \\( $dh{EXCLUDE_FIND} \\) -a";
119         }
120
121         # Remove other temp files.
122         complex_doit("find . $find_options \\( \\( -type f -a \\
123                 \\( -name '#*#' -o -name '.*~' -o -name '*~' -o -name DEADJOE \\
124                  -o -name '*.orig' -o -name '*.rej' -o -name '*.bak' \\
125                  -o -name '.*.orig' -o -name .*.rej -o -name '.SUMS' \\
126                  -o -name TAGS -o \\( -path '*/.deps/*' -a -name '*.P' \\) \\
127                 \\) -exec rm -f {} \\; \\) -o \\
128                 \\( -type d -a -name autom4te.cache -prune -exec rm -rf {} \\; \\) \\)");
129 }
130
131 doit('rm', '-rf', 'debian/tmp') if -x 'debian/tmp' && ! compat(1) &&
132                                    ! excludefile("debian/tmp");
133
134 if (!compat(6) && !$dh{K_FLAG}) {
135         complex_doit('rm -f *-stamp');
136 }
137
138 =head1 SEE ALSO
139
140 L<debhelper(7)>
141
142 This program is a part of debhelper.
143
144 =head1 AUTHOR
145
146 Joey Hess <joeyh@debian.org>
147
148 =cut