#!/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 [S>] [B<-A>] [B<--sourcedir=>I] [B<--create-in-sourcedir>] [S ...>] =head1 DESCRIPTION B 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 completely. Notably, other B commands are expected to create directories as needed. =head1 FILES =over 4 =item debian/I.dirs Lists directories to be created in I. Generally, there is no need to list directories created by the upstream build system or directories needed by other B commands. Supports substitution variables in compat 13 and later as documented in L. =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) I in the package build directory (usually F<< debian/I >>). The default is B<--no-create-in-sourcedir>. =item B<--sourcedir=>I Consider I the source directory for the packages acted on instead of the default (which is usually F). 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). =item I ... 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 This program is a part of debhelper. =head1 AUTHOR Joey Hess =cut