=head1 SYNOPSIS
-B<dh_install> [B<-X>I<item>] [B<--autodest>] [B<--list-missing>] [B<--sourcedir=>I<dir>] [S<I<debhelper options>>] [S<I<file [...] dest>>]
+B<dh_install> [B<-X>I<item>] [B<--autodest>] [B<--sourcedir=>I<dir>] [S<I<debhelper options>>] [S<I<file [...] dest>>]
=head1 DESCRIPTION
will be copied to debian/package/usr/. If the filename is
debian/tmp/etc/passwd, it will be copied to debian/package/etc/.
-Note that if you list only a filename on a line by itself in a
+Note that if you list exactly one filename or wildcard-pattern on a line by
+itself in a
debian/package.install file, with no explicit destination, then dh_install
will automatically guess the destination even if this flag is not set.
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
if (! defined $dh{AUTODEST} && @$set > 1) {
$dest=pop @$set;
}
- # glob now, relative to srcdir
+ if (! compat(4)) { # check added in v5
+ # glob now, relative to srcdir
+ if (! map { glob "$srcdir/$_" } @$set) {
+ error("$package missing files (@$set), aborting");
+ }
+ }
foreach my $src (map { glob "$srcdir/$_" } @$set) {
next if excludefile($src);
}
# Keep track of what's installed.
- if ($dh{LIST_MISSING}) {
+ if ($dh{LIST_MISSING} || $dh{FAIL_MISSING}) {
# Kill any extra slashes. Makes the
# @installed stuff more robust.
$src=~y:/:/:s;
}
}
-if ($dh{LIST_MISSING}) {
-
+if ($dh{LIST_MISSING} || $dh{FAIL_MISSING}) {
# . as srcdir makes no sense, so this is a special case.
if ($srcdir eq '.') {
$srcdir='debian/tmp';
my @missing;
my $installed=join("|", @installed);
- $installed=qr{^$installed$};
+ $installed=qr{^($installed)$};
find(sub {
-f || -l || return;
$_="$File::Find::dir/$_";
- push @missing, $_ unless /$installed/ || excludefile($_);
+ if (! /$installed/ && ! excludefile($_)) {
+ my $file=$_;
+ $file=~s/^\Q$srcdir\E\///;
+ push @missing, $file;
+ }
}, $srcdir);
if (@missing) {
- warning "$_ exists in debian/tmp but not installed to anywhere" foreach @missing;
+ warning "$_ exists in $srcdir but is not installed to anywhere" foreach @missing;
+ if ($dh{FAIL_MISSING}) {
+ error("missing files, aborting");
+ }
}
}
While debian/libfoo.install contains:
- usr/libfoo*.so.*
+ usr/lib/libfoo*.so.*
If you want a libfoo-dev package too, debian/libfoo-dev.install might contain: