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 --sourcedir).
+
=head1 OPTIONS
=over 4
-=item B<-Xitem>, B<--exclude=item>
-
-Exclude files that contain "item" anywhere in their filename from
-being installed.
-
=item B<--autodest>
Guess as the destination directory to install things to. If this is
debian/package.install file, with no explicit destination, then dh_install
will automatically guess the destination even if this flag is not set.
+=item B<--fail-missing>
+
+This option is like --list-missing, except if a file was missed, it will
+not only list the missing files, but also fail with a nonzero exit code.
+
=item B<--list-missing>
This option makes dh_install keep track of the files it installs, and then at
Note that files that are excluded from being moved via the -X option are not
warned about.
-=item B<--fail-missing>
-
-This option is like --list-missing, except if a file was missed, it will
-not only list the missing files, but also fail with a nonzero exit code.
-
=item B<--sourcedir=dir>
Makes all source files be found under dir. If this is specified, it is
approximate dh_movefiles behaviour, except it will copy files instead
of moving them.
+=item B<-Xitem>, B<--exclude=item>
+
+Exclude files that contain "item" anywhere in their filename from
+being installed.
+
=item I<file [...] dest>
Lists files (or directories) to install and where to install them to.
=cut
-init();
+init(options => {
+ "autodest" => \$dh{AUTODEST},
+ "list-missing" => \$dh{LIST_MISSING},
+ "fail-missing" => \$dh{FAIL_MISSING},
+});
my @installed;
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($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/");