dh_installdocs automatically installs debian/copyright if it exists. If
dh_installdocs is acting on multiple packages, debian/copyright files will be
-installed into all packages. However, if you need to have seperate copyright
+installed into all packages. However, if you need to have separate copyright
files for different binary packages, you can use files named
debian/package.copyright.
=item B<-Xitem>, B<--exclude=item>
Exclude files that contain "item" anywhere in their filename from
-being installed.
+being installed. Note that this includes doc-base files.
=item I<file ...>
=back
+=head1 EXAMPLES
+
+This is an example of a debian/package.docs file:
+
+ README
+ TODO
+ debian/notes-for-maintainers.txt
+ docs/manual.txt
+ docs/manual.pdf
+ docs/manual-html/
+
=head1 NOTES
Note that dh_installdocs will happily copy entire directory hierarchies if
you ask it to (similar to cp -a). If it is asked to install a
directory, it will install the complete contents of the directory.
-Note that this command is not idempotent. "dh_clean B<-k>" should be called
+Note that this command is not idempotent. L<dh_prep(1)> should be called
between invocations of this command. Otherwise, it may cause multiple
instances of the same text to be added to maintainer scripts.
init();
foreach my $package (@{$dh{DOPACKAGES}}) {
+ next if is_udeb($package);
+
my $tmp=tmpdir($package);
my $file=pkgfile($package,"docs");
if (@docs) {
my $exclude = '';
if ($dh{EXCLUDE_FIND}) {
- $exclude = ' -and ! \( '.$dh{EXCLUDE_FIND}.' \)';
+ $exclude .= ' -and ! \( '.$dh{EXCLUDE_FIND}.' \)';
+ }
+ if (! compat(4)) {
+ # ignore empty files in subdirs
+ $exclude .= ' -and ! -empty';
}
foreach my $doc (@docs) {
next if excludefile($doc);
- if (-d $doc && $exclude) {
- my ($dir_basename) = basename($doc);
- # Pity there's no cp --exclude ..
- my $pwd=`pwd`;
- chomp $pwd;
- complex_doit("cd $doc/.. && find $dir_basename -type f$exclude -exec cp --parents -dp {} $pwd/$tmp/usr/share/doc/$package \\;");
+ next if -e $doc && ! -s $doc && ! compat(4); # ignore empty files
+ if (-d $doc && length $exclude) {
+ my $basename = basename($doc);
+ my $dir = ($basename eq '.') ? $doc : "$doc/..";
+ my $pwd=`pwd`;
+ chomp $pwd;
+ complex_doit("cd '$dir' && find '$basename' \\( -type f -or -type l \\)$exclude -exec cp --parents -dp {} $pwd/$tmp/usr/share/doc/$package \\;");
}
else {
- doit("cp","-a",$doc,"$tmp/usr/share/doc/$package");
+ doit("cp", "-a", $doc, "$tmp/usr/share/doc/$package");
}
}
- doit("chown","-R","0.0","$tmp/usr/share/doc");
+ doit("chown","-R","0:0","$tmp/usr/share/doc");
doit("chmod","-R","go=rX","$tmp/usr/share/doc");
doit("chmod","-R","u+rw","$tmp/usr/share/doc");
}
}
}
-# # Add in the /usr/doc compatibility symlinks code.
-# if (! $dh{NOSCRIPTS}) {
-# autoscript($package,"postinst","postinst-doc",
-# "s/#PACKAGE#/$package/g",
-# );
-# autoscript($package,"prerm","prerm-doc",
-# "s/#PACKAGE#/$package/g",
-# );
-# }
-
# Handle doc-base files. There are two filename formats, the usual
# plus an extended format (debian/package.*).
my %doc_ids;
$regexp="(|$regexp)";
}
foreach my $fn (grep {/^${regexp}doc-base(\..*)?$/} readdir(DEB)) {
+ # .EX are example files, generated by eg, dh-make
+ next if $fn=~/\.EX$/;
+ next if excludefile($fn);
# Parse the file to get the doc id.
open (IN, "debian/$fn") || die "Cannot read debian/$fn.";
while (<IN>) {
- if (/^Document:\s+(.*)(\s+)?/) {
+ if (/^Document:\s+([-+.a-z0-9]+)/) {
$doc_ids{$fn}=$1;
last;
}
=head1 SEE ALSO
-L<debhelper(1)>
+L<debhelper(7)>
This program is a part of debhelper.