Avoid installman warning about "no documentation in pod/perldoc.pod"
authorNicholas Clark <nick@ccl4.org>
Thu, 22 Dec 2011 16:02:01 +0000 (17:02 +0100)
committerNicholas Clark <nick@ccl4.org>
Sat, 24 Dec 2011 09:27:36 +0000 (10:27 +0100)
Since commit a2afbef4476f724a in July 2011 moved perldoc.pod from pod/ to
dist/Pod-Perldoc/lib/ installman will have been warning
"no documentation in pod/perldoc.pod", having already installed the perldoc
man page earlier in the process.

However, the reference in utils.lst has actually been arguably erroneous
since it was added in commit cd0cddc9814dd65e (July 2003) to stop installman
installing an empty perldoc.1 manpage. (Which it had been doing since commit
1a67fee7d910c677 (December 2002), as a side effect of overwriting the
correct file (sourced from pod/perldoc.pod) with an incorrect file (sourced
from scanning utils/perldoc for Pod). The fix "worked" by causing perldoc.1
to be written correctly twice, both times sourced from pod/perldoc.pod :-)

The best fix seems to be to remember the names of the manpages we install
in man1, and automatically skip processing for any utility whose manpage
has already been installed.

installman
utils.lst

index ced3028..4197a8f 100755 (executable)
@@ -14,7 +14,7 @@ use Pod::Man;
 use vars qw(%opts $packlist);
 
 require './Porting/pod_lib.pl';
-my $state = get_pod_metadata();
+my %man1 = (map {($_->[0], $_->[1])} @{get_pod_metadata()->{master}});
 
 $ENV{SHELL} = 'sh' if $^O eq 'os2';
 
@@ -64,11 +64,7 @@ $opts{verbose} ||= $opts{V} || $opts{notify};
 $packlist = ExtUtils::Packlist->new("$opts{destdir}$Config{installarchlib}/.packlist");
 
 # Install the main pod pages.
-pod2man({
-         map {
-             ($_->[0], $_->[1])
-         } @{$state->{master}}
-        }, $opts{man1dir}, $opts{man1ext}, 'pod');
+pod2man(\%man1, $opts{man1dir}, $opts{man1ext}, 'pod');
 
 # Install the pods for library modules.
 {
@@ -85,6 +81,8 @@ while (<UTILS>) {
     chomp;
     $_ = $1 if /#.*pod\s*=\s*(\S+)/;
     my ($path, $leaf) = m|^(\S*/(\S+))|;
+    # Have we already installed the manpage for this? (ie perldoc)
+    next if $man1{$leaf};
     $leaf =~ s/\.pod\z//;
     pod2man({$leaf, $path}, $opts{man1dir}, $opts{man1ext});
     if ($has_man1dir) {
index 7dd4985..9f39fb9 100644 (file)
--- a/utils.lst
+++ b/utils.lst
@@ -15,7 +15,7 @@ utils/instmodsh
 utils/json_pp
 utils/libnetcfg
 utils/perlbug  # link = utils/perlthanks
-utils/perldoc   # pod = pod/perldoc.pod
+utils/perldoc
 utils/perlivp
 utils/piconv
 utils/pl2pm