]> git.donarmstrong.com Git - debhelper.git/blobdiff - dh_installdocs
Merge branch 'master' of ssh://git.debian.org/git/debhelper/debhelper
[debhelper.git] / dh_installdocs
index 2ec9bda95b23525844ff1732f06e9fdc42cd5070..87954116b3fd3b5d9f4d31a0b61e73f8e613e581 100755 (executable)
@@ -11,7 +11,7 @@ use Debian::Debhelper::Dh_Lib;
 
 =head1 SYNOPSIS
 
 
 =head1 SYNOPSIS
 
-B<dh_installdocs> [S<I<debhelper options>>] [B<-A>] [B<-n>] [B<-X>I<item>] [S<I<file ...>>]
+B<dh_installdocs> [S<I<debhelper options>>] [B<-A>] [B<-X>I<item>] [S<I<file ...>>]
 
 =head1 DESCRIPTION
 
 
 =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 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.*
 
 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.
 
 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
 =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 ...>
 
 
 =item I<file ...>
 
@@ -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.
 
 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.
 
 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}) {
        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);
                }
                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 {
                        }
                        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");
@@ -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$/;
        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>) {
                # 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;
                        }
                                $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}");
        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}/",
-                       );
-               }
        }
 }
 
        }
 }