diff options
Diffstat (limited to 'dh_installdirs')
-rwxr-xr-x | dh_installdirs | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/dh_installdirs b/dh_installdirs new file mode 100755 index 0000000..8d33b10 --- /dev/null +++ b/dh_installdirs @@ -0,0 +1,141 @@ +#!/usr/bin/perl + +=head1 NAME + +dh_installdirs - create subdirectories in package build directories + +=cut + +use strict; +use warnings; +use Debian::Debhelper::Dh_Lib; + +our $VERSION = DH_BUILTIN_VERSION; + +=head1 SYNOPSIS + +B<dh_installdirs> [S<I<debhelper options>>] [B<-A>] [B<--sourcedir=>I<dir>] [B<--create-in-sourcedir>] [S<I<dir> ...>] + +=head1 DESCRIPTION + +B<dh_installdirs> is a debhelper program that is responsible for creating +subdirectories in package build directories. + +Many packages can get away with omitting the call to B<dh_installdirs> +completely. Notably, other B<dh_*> commands are expected to create +directories as needed. + +=head1 FILES + +=over 4 + +=item debian/I<package>.dirs + +Lists directories to be created in I<package>. + +Generally, there is no need to list directories created by the +upstream build system or directories needed by other B<debhelper> +commands. + +Supports substitution variables in compat 13 and later as +documented in L<debhelper(7)>. + +=back + +=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 B<--create-in-sourcedir>, B<--no-create-in-sourcedir> + +Whether to create the specified directories in the source directory +(usually F<debian/tmp>) I<in addition to> in the package build directory +(usually F<< debian/I<package> >>). + +The default is B<--no-create-in-sourcedir>. + +=item B<--sourcedir=>I<dir> + +Consider I<dir> the source directory for the packages acted on instead +of the default (which is usually F<debian/tmp>). + +Please note that this option is dependent on the +B<--create-in-sourcedir> option (when B<--no-create-in-sourcedir> is +in effect, this option does nothing in B<dh_installdirs>). + +=item I<dir> ... + +Create these directories in the package build directory of the first +package acted on. (Or in all packages if B<-A> is specified.) + +=back + +=cut + +my $create_in_sourcedir = 0; + +init(options => { + 'sourcedir=s' => \$dh{SOURCEDIR}, + 'create-in-sourcedir!' => \$create_in_sourcedir, +}); + +# PROMISE: DH NOOP WITHOUT dirs cli-options() + +foreach my $package (@{$dh{DOPACKAGES}}) { + my $tmp=tmpdir($package); + my $file=pkgfile($package,"dirs"); + my $srcdir = $dh{SOURCEDIR} // default_sourcedir($package); + + install_dir($tmp) if compat(10); + + 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. + my @make_dirs; + push(@make_dirs, map { + my $dir = "$tmp/$_"; + $dir =~ tr:/:/:s; # just beautification. + $dir; + } @dirs); + if ($create_in_sourcedir) { + push(@make_dirs, map { + my $dir = "${srcdir}/$_"; + $dir =~ tr:/:/:s; # just beautification. + $dir; + } @dirs); + } + + # Create dirs. + install_dir(@make_dirs); + } +} + +=head1 SEE ALSO + +L<debhelper(7)> + +This program is a part of debhelper. + +=head1 AUTHOR + +Joey Hess <joeyh@debian.org> + +=cut |