X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=dh_install;h=4bd584b54f7c3439ce8ef5fbd85681a01ca898b8;hb=395788246c3435fbfe1a967fbd54f5f97cb6707c;hp=0d807d6fd917db86b87ae08cfc34b87353edba38;hpb=545fc81d5b8635506e75bdc22ed4e0d3484eb1a6;p=debhelper.git diff --git a/dh_install b/dh_install index 0d807d6..4bd584b 100755 --- a/dh_install +++ b/dh_install @@ -12,7 +12,7 @@ use Debian::Debhelper::Dh_Lib; =head1 SYNOPSIS -B [B<-X>I] [B<--autodest>] [B<--list-missing>] [B<--sourcedir=>I] [S>] [S>] +B [B<-X>I] [B<--autodest>] [B<--sourcedir=>I] [S>] [S>] =head1 DESCRIPTION @@ -62,7 +62,8 @@ filename. So if the filename is debian/tmp/usr/bin, then that directory 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. @@ -79,6 +80,11 @@ you don't miss installing newly added files in new upstream releases. 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 @@ -132,7 +138,12 @@ foreach my $package (@{$dh{DOPACKAGES}}) { 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); @@ -154,7 +165,7 @@ foreach my $package (@{$dh{DOPACKAGES}}) { } # 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; @@ -184,8 +195,7 @@ foreach my $package (@{$dh{DOPACKAGES}}) { } } -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'; @@ -193,14 +203,21 @@ if ($dh{LIST_MISSING}) { 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 debian/tmp but is not installed to anywhere" foreach @missing; + if ($dh{FAIL_MISSING}) { + error("missing files, aborting"); + } } } @@ -217,7 +234,7 @@ contain: 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: @@ -225,7 +242,7 @@ If you want a libfoo-dev package too, debian/libfoo-dev.install might contain: usr/lib/libfoo*.so usr/share/man/man3 -=head1 LIMITIATIONS +=head1 LIMITATIONS dh_install cannot rename files or directories, it can only install them with the names they already have into wherever you want in the package