X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=dh_installdocs;h=87954116b3fd3b5d9f4d31a0b61e73f8e613e581;hb=a25dfbd7276fae15fb6587375602d89ffcd7ca68;hp=2ec9bda95b23525844ff1732f06e9fdc42cd5070;hpb=dc0356cdcbca25acfdac7811c31a2e47ce4eea25;p=debhelper.git diff --git a/dh_installdocs b/dh_installdocs index 2ec9bda..8795411 100755 --- a/dh_installdocs +++ b/dh_installdocs @@ -11,7 +11,7 @@ use Debian::Debhelper::Dh_Lib; =head1 SYNOPSIS -B [S>] [B<-A>] [B<-n>] [B<-X>I] [S>] +B [S>] [B<-A>] [B<-X>I] [S>] =head1 DESCRIPTION @@ -40,10 +40,8 @@ debian/package.TODO can be used to specify files for subpackages. Files named debian/package.docs can list other files to be installed. Files named debian/package.doc-base, will be installed as doc-base control -files, and will make this program automatically generate the postinst and -prerm commands needed to interface with the doc-base package. Note that the -doc-id will be determined from the "Document:" entry in the -doc-base control file in question. +files. Note that the doc-id will be determined from the "Document:" entry +in the doc-base control file in question. If your package needs to register more than one document, you need multiple files. To accomplish this, you can use files named debian/package.doc-base.* @@ -57,14 +55,10 @@ files. To accomplish this, you can use files named debian/package.doc-base.* Install all files specified by command line parameters in ALL packages acted on. -=item B<-n>, B<--noscripts> - -Do not modify postinst/prerm scripts. - =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 @@ -90,7 +84,7 @@ 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 should be called between invocations of this command. Otherwise, it may cause multiple instances of the same text to be added to maintainer scripts. @@ -123,20 +117,24 @@ foreach my $package (@{$dh{DOPACKAGES}}) { 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); - next if ! -s $doc && ! compat(4); # ignore empty BUGS, etc - 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 -or -type l \\)$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"); @@ -198,10 +196,11 @@ foreach my $package (@{$dh{DOPACKAGES}}) { 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 () { - if (/^Document:\s+(.*)(\s+)?/) { + if (/^Document:\s+([-+.a-z0-9]+)/) { $doc_ids{$fn}=$1; last; } @@ -218,14 +217,6 @@ foreach my $package (@{$dh{DOPACKAGES}}) { foreach my $fn (keys %doc_ids) { doit("install","-g",0,"-o",0,"-m644","-p","debian/$fn", "$tmp/usr/share/doc-base/$doc_ids{$fn}"); - if (! $dh{NOSCRIPTS}) { - autoscript($package,"postinst","postinst-doc-base", - "s/#DOC-ID#/$doc_ids{$fn}/", - ); - autoscript($package,"prerm","prerm-doc-base", - "s/#DOC-ID#/$doc_ids{$fn}/", - ); - } } }