]> git.donarmstrong.com Git - debhelper.git/blobdiff - dh_installdocs
Support debian/foo.os files to suppliment previous debian/foo.arch file support....
[debhelper.git] / dh_installdocs
index 3fe3d0c43c581300e60f7921df4b6a214554eb52..87954116b3fd3b5d9f4d31a0b61e73f8e613e581 100755 (executable)
@@ -11,7 +11,7 @@ use Debian::Debhelper::Dh_Lib;
 
 =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
 
@@ -20,7 +20,7 @@ documentation into usr/share/doc/package in package build directories.
 
 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.
 
@@ -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<file ...>
 
@@ -73,13 +67,24 @@ in all packages if B<-A> is specified).
 
 =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.
 
@@ -88,6 +93,8 @@ 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");
 
@@ -110,19 +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);
-                       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");
@@ -182,10 +194,13 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
                $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;
                        }
@@ -202,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}/",
-                       );
-               }
        }
 }