]> git.donarmstrong.com Git - debhelper.git/blobdiff - dh_installdocs
r1805: releasing version 5.0.0
[debhelper.git] / dh_installdocs
index 00ea58989d20ad7ec520f821433528c0d3dc88e5..2ec9bda95b23525844ff1732f06e9fdc42cd5070 100755 (executable)
@@ -11,7 +11,7 @@ use Debian::Debhelper::Dh_Lib;
 
 =head1 SYNOPSIS
 
 
 =head1 SYNOPSIS
 
-  dh_installdocs debhelper options] [-A] [-n] [file ...]
+B<dh_installdocs> [S<I<debhelper options>>] [B<-A>] [B<-n>] [B<-X>I<item>] [S<I<file ...>>]
 
 =head1 DESCRIPTION
 
 
 =head1 DESCRIPTION
 
@@ -20,13 +20,13 @@ 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
 
 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.
 
 Any filenames specified as parameters will be installed into the first
 package dh_installdocs is told to act on. By default, this is the first
 files for different binary packages, you can use files named
 debian/package.copyright.
 
 Any filenames specified as parameters will be installed into the first
 package dh_installdocs is told to act on. By default, this is the first
-binary package in debian/control, but if you use -p, -i, or -a flags, it
+binary package in debian/control, but if you use B<-p>, B<-i>, or B<-a> flags, it
 will be the first package specified by those flags.
 
 Also, debian/README.Debian (or debian/README.debian) and debian/TODO, if
 will be the first package specified by those flags.
 
 Also, debian/README.Debian (or debian/README.debian) and debian/TODO, if
@@ -34,16 +34,11 @@ they exist, will be installed into the first binary package listed in
 debian/control, if dh_installdocs is acting on that package. Note that
 debian/TODO will be installed named TODO.Debian, if the package is not a
 debian native package. Also note that README.debian is installed as
 debian/control, if dh_installdocs is acting on that package. Note that
 debian/TODO will be installed named TODO.Debian, if the package is not a
 debian native package. Also note that README.debian is installed as
-README.Debian, for consitency. Note that debian/package.README.Debian and
+README.Debian, for consistency. Note that debian/package.README.Debian and
 debian/package.TODO can be used to specify files for subpackages.
 
 Files named debian/package.docs can list other files to be installed.
 
 debian/package.TODO can be used to specify files for subpackages.
 
 Files named debian/package.docs can list other files to be installed.
 
-This program will automatically generate postinst and prerm commands to
-maintain a compatibility symlink, /usr/doc/package, to the documentation in
-/usr/share/doc/package. See L<dh_installdeb(1)> for an explanation of how
-this works.
-
 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
 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
@@ -66,20 +61,36 @@ acted on.
 
 Do not modify postinst/prerm scripts.
 
 
 Do not modify postinst/prerm scripts.
 
+=item B<-Xitem>, B<--exclude=item>
+
+Exclude files that contain "item" anywhere in their filename from
+being installed.
+
 =item I<file ...>
 
 Install these files as documentation into the first package acted on. (Or
 =item I<file ...>
 
 Install these files as documentation into the first package acted on. (Or
-in all packages if -A is specified).
+in all packages if B<-A> is specified).
 
 =back
 
 
 =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
 =head1 NOTES
 
 Note that dh_installdocs will happily copy entire directory hierarchies if
-you ask it to (it uses cp -a internally). If it is asked to install a
+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.
 
 directory, it will install the complete contents of the directory.
 
-Note that this command is not idempotent. "dh_clean -k" should be called
+Note that this command is not idempotent. "dh_clean B<-k>" 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.
 
@@ -88,6 +99,8 @@ instances of the same text to be added to maintainer scripts.
 init();
 
 foreach my $package (@{$dh{DOPACKAGES}}) {
 init();
 
 foreach my $package (@{$dh{DOPACKAGES}}) {
+       next if is_udeb($package);
+       
        my $tmp=tmpdir($package);
        my $file=pkgfile($package,"docs");
 
        my $tmp=tmpdir($package);
        my $file=pkgfile($package,"docs");
 
@@ -108,8 +121,25 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
        }
 
        if (@docs) {
        }
 
        if (@docs) {
-               doit("cp", "-a",@docs,"$tmp/usr/share/doc/$package/");
-               doit("chown","-R","0.0","$tmp/usr/share/doc");
+               my $exclude = '';
+               if ($dh{EXCLUDE_FIND}) {
+                       $exclude = ' -and ! \( '.$dh{EXCLUDE_FIND}.' \)';
+               }
+               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 \\;");
+                       }
+                       else {
+                               doit("cp","-a",$doc,"$tmp/usr/share/doc/$package");
+                       }
+               }
+               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");
        }
                doit("chmod","-R","go=rX","$tmp/usr/share/doc");
                doit("chmod","-R","u+rw","$tmp/usr/share/doc");
        }
@@ -119,13 +149,13 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
        if (! $readme_debian) {
                $readme_debian=pkgfile($package,'README.debian');
        }
        if (! $readme_debian) {
                $readme_debian=pkgfile($package,'README.debian');
        }
-       if ($readme_debian) {
+       if ($readme_debian && ! excludefile($readme_debian)) {
                doit("install","-g",0,"-o",0,"-m","644","-p","$readme_debian",
                        "$tmp/usr/share/doc/$package/README.Debian");
        }
 
        my $todo=pkgfile($package,'TODO');
                doit("install","-g",0,"-o",0,"-m","644","-p","$readme_debian",
                        "$tmp/usr/share/doc/$package/README.Debian");
        }
 
        my $todo=pkgfile($package,'TODO');
-       if ($todo) {
+       if ($todo && ! excludefile($todo)) {
                if (isnative($package)) {
                        doit("install","-g",0,"-o",0,"-m","644","-p",$todo,
                                "$tmp/usr/share/doc/$package/TODO");
                if (isnative($package)) {
                        doit("install","-g",0,"-o",0,"-m","644","-p",$todo,
                                "$tmp/usr/share/doc/$package/TODO");
@@ -147,22 +177,12 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
                if (! $copyright && -e "debian/copyright") {
                        $copyright="debian/copyright";
                }
                if (! $copyright && -e "debian/copyright") {
                        $copyright="debian/copyright";
                }
-               if ($copyright) {
+               if ($copyright && ! excludefile($copyright)) {
                                doit("install","-g",0,"-o",0,"-m","644","-p",$copyright,
                                        "$tmp/usr/share/doc/$package/copyright");
                }
        }
 
                                doit("install","-g",0,"-o",0,"-m","644","-p",$copyright,
                                        "$tmp/usr/share/doc/$package/copyright");
                }
        }
 
-       # Add in the /usr/doc compatability 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;
        # Handle doc-base files. There are two filename formats, the usual
        # plus an extended format (debian/package.*).
        my %doc_ids;
@@ -176,6 +196,8 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
                $regexp="(|$regexp)";
        }
        foreach my $fn (grep {/^${regexp}doc-base(\..*)?$/} readdir(DEB)) {
                $regexp="(|$regexp)";
        }
        foreach my $fn (grep {/^${regexp}doc-base(\..*)?$/} readdir(DEB)) {
+               # .EX are example files, generated by eg, dh-make
+               next if $fn=~/\.EX$/;
                # 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>) {
@@ -209,7 +231,7 @@ foreach my $package (@{$dh{DOPACKAGES}}) {
 
 =head1 SEE ALSO
 
 
 =head1 SEE ALSO
 
-L<debhelper(1)>
+L<debhelper(7)>
 
 This program is a part of debhelper.
 
 
 This program is a part of debhelper.