use strict;
use File::Find;
use Debian::Debhelper::Dh_Lib;
-use Cwd q{abs_path};
=head1 SYNOPSIS
Makefile to install it all into debian/tmp, and then use dh_install to copy
directories and files from there into the proper package build directories.
+From debhelper compatibility level 7 on, dh_install will fall back to
+looking in debian/tmp for files, if it doesn't find them in the current
+directory (or whereever you've told it to look using --srcdir).
+
=head1 OPTIONS
=over 4
if (! defined $dh{AUTODEST} && @$set > 1) {
$dest=pop @$set;
}
+
+ my @filelist;
+ foreach my $glob (@$set) {
+ my @found = glob "$srcdir/$glob";
+ if (! compat(6)) {
+ # Fall back to looking in debian/tmp.
+ if (! @found || ! -e $found[0]) {
+ @found = glob "debian/tmp/$glob";
+ }
+ }
+ push @filelist, @found;
+ }
+
if (! compat(4)) { # check added in v5
# glob now, relative to srcdir
- if (! map { glob "$srcdir/$_" } @$set) {
+ if (! @filelist) {
error("$package missing files (@$set), aborting");
}
}
- foreach my $src (map { glob "$srcdir/$_" } @$set) {
+ foreach my $src (@filelist) {
next if excludefile($src);
if (! defined $dest) {
}
if (-d $src && $exclude) {
- my ($dir_basename) = basename(abs_path($src));
- # Pity there's no cp --exclude ..
+ my $basename = basename($src);
+ my $dir = ($basename eq '.') ? $src : "$src/..";
my $pwd=`pwd`;
chomp $pwd;
- complex_doit("cd $src/.. && find $dir_basename $exclude \\( -type f -or -type l \\) -exec cp --parents -dp {} $pwd/$tmp/$dest/ \\;");
+ complex_doit("cd '$dir' && find '$basename' $exclude \\( -type f -or -type l \\) -exec cp --parents -dp {} $pwd/$tmp/$dest/ \\;");
# cp is annoying so I need a separate pass
# just for empty directories
- complex_doit("cd $src/.. && find $dir_basename $exclude \\( -type d -and -empty \\) -exec cp --parents -a {} $pwd/$tmp/$dest/ \\;");
+ complex_doit("cd '$dir' && find '$basename' $exclude \\( -type d -and -empty \\) -exec cp --parents -a {} $pwd/$tmp/$dest/ \\;");
}
else {
doit("cp", "-a", $src, "$tmp/$dest/");