summaryrefslogtreecommitdiff
path: root/dh_prep
blob: 718d8d9233177d8a899db01e92e2de161d67f80a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#!/usr/bin/perl

=head1 NAME

dh_prep - perform cleanups in preparation for building a binary package

=cut

use strict;
use warnings;
use Debian::Debhelper::Dh_Lib;

our $VERSION = DH_BUILTIN_VERSION;

=head1 SYNOPSIS

B<dh_prep> [S<I<debhelper options>>] [B<-X>I<item>]

=head1 DESCRIPTION

B<dh_prep> is a debhelper program that performs some file cleanups in
preparation for building a binary package. (This is what B<dh_clean -k>
used to do.) It removes the package build directories, F<debian/tmp>,
and some temp files that are generated when building a binary package.

It is typically run at the top of the B<binary-arch> and B<binary-indep> targets,
or at the top of a target such as install that they depend on.

=head1 OPTIONS

=over 4

=item B<-X>I<item> B<--exclude=>I<item>

Exclude files that contain F<item> anywhere in their filename from being
deleted, even if they would normally be deleted. You may use this option
multiple times to build up a list of things to exclude.

=back

=cut

init();

my (@clean_files, @clean_dirs, %seen);

foreach my $package (@{$dh{DOPACKAGES}}) {
	my $tmp=tmpdir($package);
	my $ext=pkgext($package);
	my $source_dir = default_sourcedir($package);

	push(@clean_files, "debian/${ext}substvars")
		unless excludefile("debian/${ext}substvars");
		
	# These are all debhelper temp files, and so it is safe to 
	# wildcard them.
	my @temp = glob("debian/$ext*.debhelper");
	push(@clean_files, @temp);
	push(@clean_dirs, "debian/.debhelper/generated/${package}/");
	push(@clean_dirs , "${tmp}/")
		unless excludefile($tmp);

	push(@clean_dirs, "${source_dir}/")
		if (not $seen{$source_dir}++ and not excludefile($source_dir));
}

xargs(\@clean_files, 'rm', '-f', '--') if @clean_files;
xargs(\@clean_dirs, 'rm', '-fr', '--') if @clean_dirs;

=head1 SEE ALSO

L<debhelper(7)>

This program is a part of debhelper.

=head1 AUTHOR

Joey Hess <joeyh@debian.org>

=cut