summaryrefslogtreecommitdiff
path: root/dh_installdirs
blob: 45191dc13f0d06346994a66747204e590a6f5d48 (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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#!/usr/bin/perl -w

=head1 NAME

dh_installdirs - create subdirectories in package build directories

=cut

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

=head1 SYNOPSIS

B<dh_installdirs> [S<I<debhelper options>>] [B<-A>] [S<I<dir ...>>]

=head1 DESCRIPTION

dh_installdirs is a debhelper program that is responsible for creating
subdirectories in package build directories.

A file named debian/package.dirs can list directories to be created.
Separate the directory names with whitespace.

Any directory names specified as parameters will be created in the package
build directory of the first package dh_installdirs is told to act on. By
default, this is the first binary package in debian/control, but if you use
-p, -i, or -a flags, it will be the first package specified by those flags.

Be sure to only use directory names relative to the package build
directory. Ie, "/usr/bin" should not be used, use "usr/bin" instead.

=head1 OPTIONS

=over 4

=item B<-A>, B<--all>

Create any directories specified by command line parameters in ALL packages
acted on, not just the first.

=item I<dir ...>

Create these directories in the package build directory of the first
package acted on. (Or in all packages if -A is specified.)

=back

=cut

init();

foreach my $package (@{$dh{DOPACKAGES}}) {
	my $tmp=tmpdir($package);
	my $file=pkgfile($package,"dirs");

	if (! -e $tmp) {
		doit("install","-d",$tmp);
	}

	my @dirs;

	if ($file) {
		@dirs=filearray($file)
	}

	if (($package eq $dh{FIRSTPACKAGE} || $dh{PARAMS_ALL}) && @ARGV) {
		push @dirs, @ARGV;
	}	

	if (@dirs) {
		# Stick the $tmp onto the front of all the dirs.
		# This is necessary, for 2 reasons, one to make them 
		# be in the right directory, but more importantly, it 
		# protects against the danger of absolute dirs being
		# specified.
		@dirs=map {
				$_="$tmp/$_";
				tr:/:/:s; # just beautification.
				$_
			  } @dirs;

		# Create dirs.
		doit("install","-d",@dirs);
	}
}

=head1 SEE ALSO

L<debhelper(7)>

This program is a part of debhelper.

=head1 AUTHOR

Joey Hess <joeyh@debian.org>

=cut